¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Compartir una sola dirección pública (NAT)

Después de esta lección: Puedo explicar cómo sale a internet un equipo privado con NAT.

Lección de 55 min6 comandosLaboratorio de pasarela NAT: masquerade y reenvío de puertos con nftables en tu navegador

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

PalabraQué significaEjemplo
Dirección privadauna dirección que nunca se enruta por internet10.0.0.2
Puerta de enlaceel router entre la red interior y el exterior
NATtraducción de direcciones: reescribir las direcciones de un paquete
EnmascaramientoNAT que usa la dirección exterior de la puerta de enlace
Tabla de traducciónla memoria de la puerta de enlace sobre qué conexión es de qué equipo
Reenvío de puertouna 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

BloqueDireccionesUso habitual
10.0.0.0/816 millonesOrganizaciones grandes
172.16.0.0/121 millónRedes medianas
192.168.0.0/1665 milCasas y oficinas pequeñas

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Conoce las tres máquinas

Comando
netlab status

Se 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

Comando
sudo ip netns exec srv ip route

Se 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

Comando
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

Comando
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

PasoOrigenDestino
Sale del portátil10.0.0.5:43210198.51.100.7:443
Sale de la puerta (el 43210 ya estaba en uso)203.0.113.9:50123198.51.100.7:443
La respuesta llega a la puerta198.51.100.7:443203.0.113.9:50123
La respuesta llega al portátil198.51.100.7:44310.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

Comando
sudo ip netns exec gw conntrack -L

Se 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 pidenLa puerta lo envía aMotivo
Dirección de la puerta, puerto 808010.0.0.5, puerto 80La web de la empresa
Dirección de la puerta, puerto 222210.0.0.9, puerto 22Acceso remoto a un servidor
Dirección de la puerta, puerto 9999A ninguna parteSin regla: se descarta

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Lee las reglas de la puerta de enlace

Comando
sudo ip netns exec gw nft list ruleset

Se 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.

Sobre este laboratorio y su código: Laboratorio de pasarela NAT: masquerade y reenvío de puertos con nftables en tu navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.