Cuarenta portátiles y una dirección pública
Una empresa tiene cuarenta portátiles y una sola dirección de su proveedor. Los cuarenta navegan a la vez.
Los servidores web ven una única dirección. Aun así, cada respuesta llega al portátil correcto.
El router del medio guarda una tabla de quién pidió qué. Hoy abrimos esa tabla.
Al final de esta lección
Nota
Puedo explicar cómo sale a internet un equipo privado con NAT.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Dirección privada | una dirección que nunca se enruta por internet | 10.0.0.2 |
| Puerta de enlace | el router entre la red interior y el exterior | |
| NAT | traducción de direcciones: reescribir las direcciones de un paquete | |
| Enmascaramiento | NAT que usa la dirección exterior de la puerta de enlace | |
| Tabla de traducción | la memoria de la puerta de enlace sobre qué conexión es de qué equipo | |
| Reenvío de puerto | una regla que manda las peticiones de fuera a un equipo de dentro |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
No se responde a una dirección privada
Tres bloques están reservados para uso privado. Todas las casas y oficinas los reutilizan. Ningún router de internet tiene una ruta hacia ellos.
Una petición desde una dirección privada puede llegar a un servidor. La respuesta no sabe volver a casa.
Ejemplo resuelto: los bloques privados
| Bloque | Direcciones | Uso habitual |
|---|---|---|
| 10.0.0.0/8 | 16 millones | Organizaciones grandes |
| 172.16.0.0/12 | 1 millón | Redes medianas |
| 192.168.0.0/16 | 65 mil | Casas y oficinas pequeñas |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Conoce las tres máquinas
netlab statusSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Pregunta al servidor exterior qué sabe
sudo ip netns exec srv ip routeSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Prueba una petición sin respuesta
sudo ip netns exec lan curl --noproxy '*' -sS -m 3 http://203.0.113.2:8000/Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Haz la misma petición desde la puerta
sudo ip netns exec gw curl --noproxy '*' -sS -m 3 http://203.0.113.2:8000/Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Por qué la petición no tiene respuesta
El servidor exterior tiene una sola ruta, la de su propio cable. No tiene ninguna para 10.0.0.0/24, así que una respuesta a 10.0.0.2 no tiene adónde ir.
El curl desde lan espera tres segundos e imprime Connection timed out. La petición salió y nada volvió.
El curl desde gw recibe outside-server: you are 203.0.113.1. Esa dirección está en la red del servidor, así que la respuesta sabe volver.
El enmascaramiento reescribe el origen
A la salida, la puerta de enlace cambia la dirección privada de origen por la suya exterior. Si puede, conserva el puerto de origen. Solo lo cambia cuando otra conexión ya usa ese puerto hacia el mismo destino.
Apunta ese cambio en su tabla de traducción. Cuando vuelve la respuesta, busca el puerto y deshace el cambio.
Ejemplo resuelto: una petición y su respuesta
| Paso | Origen | Destino |
|---|---|---|
| Sale del portátil | 10.0.0.5:43210 | 198.51.100.7:443 |
| Sale de la puerta (el 43210 ya estaba en uso) | 203.0.113.9:50123 | 198.51.100.7:443 |
| La respuesta llega a la puerta | 198.51.100.7:443 | 203.0.113.9:50123 |
| La respuesta llega al portátil | 198.51.100.7:443 | 10.0.0.5:43210 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Lee la memoria de la puerta de enlace
sudo ip netns exec gw conntrack -LSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Qué recuerda la puerta de enlace
Justo después de los dos curl aparecen dos líneas. La de lan dice SYN_SENT, las direcciones de ida, [UNREPLIED] y después las de vuelta, al revés: aún no ha llegado respuesta.
La de gw dice TIME_WAIT y [ASSURED]: hubo respuesta y la conexión se cerró. Pasados unos dos minutos las líneas caducan y el comando dice 0 flow entries.
Este seguimiento permite casar cada respuesta con su petición.
Un reenvío de puerto deja entrar
El enmascaramiento atiende peticiones que empiezan dentro. ¿Y si alguien de fuera debe llegar a una web que vive dentro?
Un reenvío de puerto dice: una petición a la dirección exterior de la puerta, puerto 8080, va a un equipo interior, puerto 80.
La puerta reescribe el destino y la tabla trae la respuesta de vuelta.
Ejemplo resuelto: dos reenvíos
| Fuera piden | La puerta lo envía a | Motivo |
|---|---|---|
| Dirección de la puerta, puerto 8080 | 10.0.0.5, puerto 80 | La web de la empresa |
| Dirección de la puerta, puerto 2222 | 10.0.0.9, puerto 22 | Acceso remoto a un servidor |
| Dirección de la puerta, puerto 9999 | A ninguna parte | Sin regla: se descarta |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Lee las reglas de la puerta de enlace
sudo ip netns exec gw nft list rulesetSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente cree que NAT es una medida de seguridad. NAT solo reescribe direcciones. Las reglas del cortafuegos deciden qué se permite. En el conjunto de reglas de arriba, la cadena forward con política drop es la que deja fuera a los de fuera.
Para ir más lejos: lee una tabla completa
Cuando termines el laboratorio, haz tres peticiones seguidas desde lan al servidor exterior y ejecuta conntrack -L en gw.
En cada línea, apunta el puerto de origen de la ida y el puerto de destino de la vuelta. ¿Cuándo coinciden y cuándo no? Explica con esas líneas cómo devolvería la puerta cada respuesta.