Bienvenidos a la página personal de José Domingo Muñoz Rodríguez, aquí podrás encontrar…
Accede a las entradas de mi blog donde escribo de Informática y Educación.
Accede a los materiales de los cursos que he impartido.
Accede a los contenido de los módulos de FP que estoy impartiendo en la actualidad.
Microblog
Mi última camiseta…
Me ha encantado… muchas gracias
Blog
El problema del enrutamiento asimétrico
De forma general, hablamos de enrutamiento asimétrico cuando se da la situación donde los paquetes de ida y vuelta entre dos dispositivos no siguen el mismo camino. En el enrutamiento asimétrico, el paquete de ida toma un camino y la respuesta toma otro distinto. Recientemente me he encontrado un escenario concreto donde se presenta. Lo podemos ver gráficamente en el siguiente esquema:
No puedo acceder a un servidor web que tengo en mi red local porque no tengo acceso a la configuración del router y no puedo configurar las reglas DNAT para abrir los puertos de navegación Web.
La solución pasa por evitar el acceso directo al router local. En su lugar, accedemos a una máquina remota (VPS) con dirección IP pública. Esta máquina actúa como router intermedio, ya que le configuramos una regla DNAT que redirige los paquetes al servidor web local, conectado a la VPS a través de una VPN. Es decir, los paquetes entrantes llegan al servidor web por la interfaz de la VPN (tun0).
El problema: La ruta por defecto del servidor web está configurada para enviar el tráfico saliente a través del router físico local, no por la VPN. Como resultado, la respuesta no vuelve por el mismo camino, y el cliente no puede acceder correctamente al servidor web. Esto ocurre porque el router local no puede realizar el cambio de dirección de origen (SNAT) para paquetes que no vio llegar. Lo vemos claramente en este esquema:
Lo deseable sería que el tráfico de respuesta también saliera por la VPN, manteniendo la simetría en la ruta. Es decir, que tanto los paquetes de ida como los de vuelta pasen por el túnel VPN, como se muestra aquí:
Veamos dos posibles soluciones a este problema:
Seguir leyendo...Despliegue automatizado de máquinas virtuales en KVM/libvirt usando cloud-init
El método más utilizado para crear máquinas virtuales en KVM/libvirt suele ser la instalación manual del sistema a partir de un fichero con la imagen ISO de la instalación. Pero sería deseable encontrar algún método que nos permita la creación automática y desatendida de una máquina virtual sin necesidad de realizar una instalación manual.
Existen varios alternativas para conseguirlo, en este artículo vamos a estudiar un método que se basa en el uso de imágenes cloud y en una aplicación llamada cloud-init.
Las imágenes cloud son discos base preconfigurados, optimizados para ser utilizados en entornos virtualizados o en la nube. Estas imágenes suelen estar diseñadas para un arranque rápido y para su personalización dinámica mediante herramientas de automatización. A diferencia de las imágenes tradicionales, no están configuradas con parámetros específicos de red, usuarios o almacenamiento, sino que dependen de herramientas como cloud-init
para adaptar la configuración en el primer arranque.
cloud-init
es un conjunto de scripts y herramientas que permiten la personalización automática de instancias o máquinas virtuales en su primer arranque. Originalmente desarrollado para entornos en la nube como OpenStack, AWS y Azure, cloud-init
se ha convertido en una solución estándar para la inicialización de sistemas operativos en cualquier entorno virtualizado.
Su función principal es leer datos de configuración desde diversas fuentes y aplicarlos al sistema operativo en el arranque inicial. Esto permite realizar tareas como:
- Configuración de red.
- Creación de usuarios y claves SSH.
- Instalación de paquetes.
- Ejecución de comandos personalizados.
- Configuración de particiones y almacenamiento.
- …
Docker Routing: Práctica routing y nating con docker
Los docentes encargados del módulo de redes en ciclos formativos o en otras disciplinas relacionadas requieren implementar una infraestructura, generalmente virtual, para que los estudiantes realicen prácticas de enrutamiento y configuración de NAT entre distintos equipos interconectados en diversas redes.
He desarrollado un proyecto que facilita, de manera sencilla, la creación de dicha infraestructura utilizando contenedores Docker. Este sistema permite construir, de forma eficiente, una red de múltiples máquinas Linux conectadas a diferentes redes, brindando a los estudiantes un entorno práctico donde pueden llevar a cabo sus prácticas.
Docker Routing
Puedes encontrar la documentos y los ficheros necesario en el repositorio de github: Docker Routing. En este repositorio encontraremos un fichero docker-compose.yaml
donde tenemos un escenario de ejemplo de contenedores Docker. El esquema de red que se va a crear es el siguiente:
Tenemos que tener en cuenta lo siguiente:
- Podemos modificar este fichero
docker-compose.yaml
para crear escenarios diferentes. - En el ejemplo que vamos a estudiar, los únicos contenedores que tienen acceso al exterior son los que están conectados a la
red_externa
, en nuestro casopc1
yrouter1
.
Más posts en el Blog...
- Configuración de red en sistemas Linux - Netplan (03-04-2025)
- Configuración de red en sistemas Linux - systemd-networkd (05-03-2025)
- Configuración de red en sistemas Linux - NetworkManager (30-01-2025)
- Configuración de red en sistemas Linux - ifupdown (15-01-2025)
- Curso "Introducción a Podman" (07-12-2024)
- Curso "Introducción a Docker" (18-10-2024)
Más post en el Microblog...
- Correos de notificación de Lets Encrypt (04-02-2025)
- Listar imágenes Docker que no tienen contenedor asociado (29-01-2025)
- Hoja de trucos sobre Git (15-01-2025)
- Aprende y prueba SPF, DKIM y DMARC (02-12-2024)
- Configuración mínima de cloud-init (10-11-2024)
- Recuperar entornos virtuales de Python (05-11-2024)
Licencia
Licencia: Puedes copiar y modificar todos los contenidos, pero siempre respetando los términos de la licencia CC-BY-SA.