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.
netlab statusSe 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.
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.
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.
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.
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.
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.