¿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

Fundamentos de NAT

Aquí está la lección completa para leer. Crea una cuenta gratuita para practicarla en un laboratorio en vivo.

Laboratorio de máquina virtual6 min de lectura4 comandos

Qué vas a hacer

Las máquinas de una red privada, como 10.0.0.0/24, tienen direcciones a las que internet no sabe devolver respuestas. NAT, la traducción de direcciones de red, es lo que permite que una puerta de enlace hable en nombre de ellas. Vas a mirar una red pequeña, enviar una petición que no puede recibir respuesta y descubrir por qué. No vas a arreglarlo: eso es la tarea del propio laboratorio.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra superior de esta lección. Este laboratorio es una máquina Ubuntu entera, solo para ti, con tres máquinas pequeñas construidas dentro, así que tarda un poco más en arrancar que un contenedor. Cada botón Ejecutar de más abajo escribe su comando en el terminal de la máquina, uno detrás de otro. Si alguno dice que la máquina aún está arrancando, espera unos segundos y vuelve a pulsarlo. Para ver los comandos en directo, o para escribir los tuyos, pulsa Abrir el terminal (pestaña nueva) en la barra.

1. Conoce las máquinas

Cada máquina es un espacio de nombres de red (network namespace) separado, con sus propias direcciones. lan es la máquina privada, srv es un servidor del exterior y gw es la puerta de enlace, con un cable a cada lado: 10.0.0.1 hacia la red local y 203.0.113.1 hacia el exterior. Las tres últimas líneas dicen qué máquina ofrece una página web.

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.

2. Pídele su página al servidor exterior

sudo ip netns exec lan ejecuta el comando que viene después dentro de lan. curl le pide al servidor exterior su página y desiste a los tres segundos: Connection timed out (se agotó el tiempo de conexión). La petición salió de lan y no volvió nada. --noproxy '*' evita que curl use el proxy web que usa la propia máquina virtual, al que estas máquinas no pueden llegar.

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.

3. Pregunta al exterior qué sabe

Una ruta es una línea de una tabla: «para llegar a esta red, ve por aquí». El servidor exterior tiene una sola línea, la de su propio cable, 203.0.113.0/24. No tiene ninguna para 10.0.0.0/24, así que, aunque la petición llegara hasta allí, la respuesta no tendría camino de vuelta a una dirección privada.

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.

4. Pregunta a la puerta de enlace qué hace

Las reglas de la puerta de enlace están escritas con nftables. Esto es todo lo que hay: una cadena que deja a la red local iniciar conexiones y descarta el resto, y nada que traduzca una dirección. Eso es lo que falta.

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.

Ahora haz el laboratorio

Consejo

Ya has descubierto por qué la petición no recibe respuesta. Conseguir que funcione es la tarea de este laboratorio: abre README.md, que está en tu carpeta personal, con cat README.md en el terminal. Te explica qué hacer y no da ninguna de las soluciones.

Para el profesorado

Consejo

Esta lección es un pequeño ejemplo de una lección practicada en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia propia de cada alumno. Esta lección se practica en un laboratorio de máquina virtual: cada alumno tiene su propia máquina Ubuntu con la red dentro, y un botón Ejecutar escribe en su terminal y muestra lo que salió. El propio laboratorio incluye una comprobación que evalúa la puerta de enlace terminada según lo que la red hace después. Cópiela en su propio módulo y modifíquela, o cree una desde cero con el menú Laboratorio del constructor de lecciones.

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 estas lecciones a tus estudiantes con calificación y un laboratorio para cada uno.