¿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

Muchos equipos, una dirección pública (NAT)

Después de esta lección: Puedo explicar cómo comparten muchos equipos una sola dirección.

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

Veinte móviles en una tienda

Una tienda de móviles tiene wifi para los clientes. Una tarde hay veinte personas conectadas a la vez, y además el datáfono y el ordenador de la caja.

Internet solo ve una dirección para toda la tienda. Aun así, cada vídeo llega a la pantalla correcta.

El router de la tienda hace un cambio en cada paquete. Hoy ves cuál.

Al final de esta lección

Nota

Puedo explicar cómo comparten muchos equipos una sola dirección.

Palabras clave

PalabraQué significaEjemplo
Dirección públicauna dirección que se usa en internet
Puerta de enlaceel router entre una red interior e internet
NATtraducción de direcciones: cambiar las direcciones de un paquete
Puerto de origenel número que dice a qué conexión pertenece un paquete50001
Tabla NATla lista de la puerta de enlace con qué conexión es de qué equipo
Reenvío de puertouna regla que manda un puerto de fuera a un equipo de dentro

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

A una dirección privada no llega la respuesta

Los equipos de la tienda usan direcciones privadas. Ningún router de internet tiene una ruta hacia ellas.

Así que una petición desde 192.168.20.15 puede llegar a un servidor. La respuesta no tiene por dónde volver y se pierde.

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.

Mira qué redes conoce el servidor

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.

Pide la web exterior desde dentro

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.

Pide lo mismo desde la puerta de enlace

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.

Una petición tiene respuesta y otra no

El estado muestra gw con dos direcciones: 10.0.0.1 dentro y 203.0.113.1 fuera. La máquina de dentro, lan, es 10.0.0.2.

El servidor srv solo conoce una red, 203.0.113.0/24. No sabe volver a 10.0.0.2, así que desde lan curl espera tres segundos y escribe Connection timed out.

Desde gw, el servidor responde enseguida: outside-server: you are 203.0.113.1.

La puerta de enlace cambia el origen

Con NAT, la puerta de enlace cambia cada paquete al salir. Pone su dirección pública en lugar de la privada.

Mantiene el puerto de origen si está libre y elige otro si dos equipos chocan. Apunta el cambio en su tabla NAT.

Cuando vuelve una respuesta, mira el puerto en la tabla y devuelve la dirección privada.

Ejemplo resuelto: tres equipos, una dirección

EquipoSale del equipo desdeSale de la puerta desde
Móvil de Ana192.168.20.15 puerto 45000198.51.100.9 puerto 45000
Móvil de Hugo192.168.20.16 puerto 45000198.51.100.9 puerto 45001
Datáfono192.168.20.5 puerto 38000198.51.100.9 puerto 38000

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

Lee lo que recuerda 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.

La puerta sigue cada conexión

Cada línea es una conexión que ha visto la puerta de enlace. La petición de lan muestra SYN_SENT y [UNREPLIED]: no volvió respuesta.

La petición de la propia puerta muestra TIME_WAIT y [ASSURED]: tuvo respuesta y se cerró.

Cada línea dura unos dos minutos. NAT usa esta memoria para llevar cada respuesta al equipo correcto.

Un reenvío de puerto deja entrar algo

NAT funciona con conexiones que empiezan dentro. Una petición que empieza fuera no coincide con ninguna línea de la tabla, así que se tira.

Para abrir un servicio de dentro hace falta un reenvío de puerto. Por ejemplo, el puerto 8443 de fuera va a la cámara de seguridad de la tienda.

Las reglas del cortafuegos de la puerta deciden qué puede entrar.

Mira qué puertos escucha lan

Comando
sudo ip netns exec lan ss -ltn

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Lee las reglas del cortafuegos

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 lo que impide entrar a desconocidos. NAT solo cambia direcciones. Las reglas del cortafuegos deciden qué entra. En estas reglas, policy drop en la cadena forward es lo que bloquea el exterior.

Para ir más lejos: la tabla llena

Un puerto es un número del 1 al 65535. Imagina una puerta de enlace que solo presta los puertos del 40000 al 40004.

¿Cuántas conexiones aguanta a la vez? Usa tu next_free_port para llenar una tabla hasta que devuelva "llena". ¿Qué notaría un cliente de la tienda?

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.