🔀 Lab 11: NAT — Cómo se "disfraza" tu IP¶
En el lab anterior usaste iptables para filtrar tráfico. Ahora vas a usarlo de una forma diferente: traducir IPs.
Hasta ahora todos tus labs usaron IPs privadas (192.168.x.x, 10.x.x.x). Esas IPs no existen en Internet — son solo válidas dentro de tu red. Entonces, ¿cómo hace tu PC para hablar con Google si tiene una IP privada?
La respuesta es NAT (Network Address Translation): el router reemplaza tu IP privada por su propia IP antes de mandar el paquete afuera. Cuando llega la respuesta, hace el proceso inverso y te la entrega.
Tu PC Router Servidor
192.168.1.2 ──────▶ [NAT] ──────▶ 10.0.0.1 → 10.0.0.2
reemplaza
192.168.1.2
por 10.0.0.1
En este lab vas a configurar NAT vos mismo con iptables para entender exactamente qué pasa. En el próximo lab el nodo CLOUD lo hace automáticamente — pero primero tenés que entender qué hace.
🏗️ Topología del Laboratorio¶
Copia y pega este YAML en Topología → Importar:
name: "lab-08-nat"
nodes:
- name: PC-Interna
type: HOST
x: 100
y: 200
- name: ROUTER-NAT
type: ROUTER
x: 350
y: 200
- name: PC-Servidor
type: HOST
x: 600
y: 200
links:
- source: PC-Interna
target: ROUTER-NAT
- source: ROUTER-NAT
target: PC-Servidor
Dos redes:
- Red interna: 192.168.1.0/24 — PC-Interna y el router
- Red externa: 10.0.0.0/30 — PC-Servidor y el router
🛠️ Paso 1: Configurar IPs¶
En PC-Interna:
En ROUTER-NAT:
ip addr add 192.168.1.1/24 dev eth1
ip addr add 10.0.0.1/30 dev eth2
ip link set eth1 up
ip link set eth2 up
En PC-Servidor:
❌ Paso 2: Sin NAT — el servidor no puede responder¶
Desde PC-Interna, hacé ping a PC-Servidor:
Funciona porque es una red directamente conectada al router. Pero ahora hacé clic derecho en el cable que une ROUTER-NAT con PC-Servidor, seleccioná Sniff ROUTER-NAT, y fijate: el paquete llega al servidor con IP origen 192.168.1.10.
Eso está bien en este lab porque PC-Servidor tiene ruta de vuelta. Pero en Internet real, ningún servidor sabe cómo responder a 192.168.1.10 — esa IP no existe en Internet.
🔑 Paso 3: Activar NAT con iptables¶
Primero habilitá el IP forwarding (que el router reenvíe paquetes entre interfaces):
Ahora configurá la regla NAT. MASQUERADE significa: "reemplazá la IP origen por la IP de la interfaz de salida":
🔬 Paso 4: Ver la traducción en acción¶
Hacé clic derecho en el cable que une ROUTER-NAT con PC-Servidor, seleccioná Sniff ROUTER-NAT, y hacé ping desde PC-Interna:
Observá en la captura: los paquetes ahora salen con IP origen 10.0.0.1 (la IP del router), no 192.168.1.10. PC-Servidor nunca ve la IP privada — para él, el cliente es 10.0.0.1.
🧾 Paso 5: Ver las reglas NAT activas¶
Verás la regla MASQUERADE y un contador que aumenta con cada paquete que traduce.
🔄 Paso 6: Entender el proceso inverso¶
Cuando PC-Servidor responde a 10.0.0.1, el router recibe ese paquete y sabe que debe entregárselo a 192.168.1.10 — porque tiene una tabla interna que registra qué conexión salió de quién. Ese mecanismo se llama NAT table o conntrack:
Verás entradas como:
El kernel registra: "la conexión de 192.168.1.10 salió como 10.0.0.1 — cuando llegue la respuesta, devolvérsela a 192.168.1.10".
💡 Concepto Clave: NAT no es magia — es una tabla de traducciones que el router mantiene por cada conexión activa. En el próximo lab verás que el nodo CLOUD hace exactamente esto, pero de forma automática.