¡Hola a todos de nuevo! En esta entrada
traigo los pasos que debemos seguir para tras instalar una segunda interfaz de
red en Proxmox, las máquinas virtuales que se conecten al bridge virtual creado
relacionado con dicha segunda interfaz puedan enrutar su tráfico hacia
internet. Esto se podría aplicar a cualquier servidor servidor con Gnu/Linux
obviando la parte relacionada con vmbr (Linux bridges) ya que al final lo que
se hace no es más que habilitar el enrutamiento en el server y configurar una
regla de nat en iptables para permitir el tráfico entre las redes que hay tras
las interfaces.
En esta entrada lo traigo con Proxmox ya
que el otro día revisando las configuraciones de un VPS que tengo montado con
Proxmox vi las reglas de iptables relacionadas y no me acoraba de ellas, así
que pensé en hacer una publicación en el blog al respecto.
Para explicarlo partiremos de un modelo
simplificado, en el cual tienen cabida todas las opciones de conectividad y
dispositivos de red que se os ocurra sólo tendréis que adaptarlo a vuestras
necesidades.
Pero antes de nada es necesario haber
instalado y hacer visible la nueva interfaz de red (NIC) en Proxmox. Dicho
proceso no se describirá aquí por tratarse de un proceso general en Gnu/Linux.
Suponiendo que la primera interfaz de nuestro VPS con Proxmox es denominado
eth0 y la segunda interfaz eth1, el siguiente paso en crear un nuevo bridge
virtual relacionado con eth1 que por defecto se llamará vmbr1. A partir de
entonces cualquier máquina virtual que se cree con dicha vmbr1 usará dicha
interfaz para comunicarse con dispositivos y máquinas que formen parte de su
segmento de red.
Creación de Linux bridge en Proxmox
En el árbol jerárquico de las vistas
seleccionamos Server View, a continuación seleccionamos Proxmox bajo
Datacenter, a continuación en el panel de la derecha seleccionamos Network,
Create y Linux Bridge. Lo podemos ver en la siguiente imagen:
Rellenamos los campos con
la información de red que queramos configurar teniendo en cuenta que en Bridge
Ports pondremos eth1 que hemos supuesto que es la segunda interfaz de nuestro
VPS Proxmox. Aquí lo hemos completado con la información que usaremos en el
modelo que se presenta a continuación. En la siguiente imagen podemos ver como
quedaría.
Es importante resaltar que el campo Gateway
debe quedarse en blanco ya que no puede haber dos puertas de enlaces
diferentes, si por lo que sea lo rellenamos Proxmox se encargará de recordárnoslo.
Una vez creado vmbr1 deberemos reiniciar
nuestro VPS. Muy importante pensar si podéis reiniciarlo en ese momento por los
servicios que puedan estar ofreciendo vuestras máquinas virtuales, o es mejor
hacerlo más tarde. En cualquier caso, los cambios se harán efectivos tras el
reinicio del sistema.
A continuación se muestra como ya se
mencionó con anterioridad un modelo simplificado en el que aparece el VPS con
Proxmox, dos conmutadores (uno en la “pata” de eth0 y el otro en la “pata” de
eth1), dos máquinas físicas (machine1 y machine4) y dos máquinas virtuales
(vmachine2 y vmachine3).
¿Qué es lo que ocurre?
Vamos a suponer lo siguiente; el VPS tenía conectividad a
internet a través de su puerta de enlace que estará en la red 192.168.1.0/24
que alcanzaba a través de su interfaz eth0 aunque no se haya representado en la
imagen. Por ende, si así se hubieran configurado (vamos a suponer que sí) las
máquinas virtuales conectadas a vmbr0 saldrían a Internet.
Por defecto, tras instalar la nueva
tarjeta de red en el VPS, crear vmbr1, las máquinas virtuales que se creen
relacionadas con vmbr1 no saldrán a internet (recuerda que no se le pudo poner
ninguna puerta de enlace en su creación).
¿Solución?
Crear unas reglas iptables que permitan
el tráfico entre las redes de cada una de las interfaces.
Editamos el fichero
/etc/network/interfaces en nuestro VPS Proxmox con nuestro editor de texto
favorito y añadimos las siguientes líneas bajo la interfaz vmbr0 (Linux bridge
inicial).
post-up
echo 1 > /proc/sys/net/ipv4/ip_forward
Habilita el enrutamiento
de paquetes de red ipv4
post-up
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o vmbr0 -j MASQUERADE
Añade una regla iptables tras
“levantarse” la interfaz que permite que el tráfico proveniente de la red
192.168.3.0/24 salga a través de vmbr0 haciendo nat con la ip de la interfaz de
vmbr0.
post-down
iptables -t nat -D POSTROUTING -s 192.168.3.0/24 -o vmbr0 -j MASQUERADE
Borra una regla iptables tras
“tumbar” la interfaz que permitía que el tráfico proveniente de la red
192.168.3.0/24 salga a través de vmbr0 haciendo nat con la ip de la interfaz de
vmbr0.
Recuerda que esto es aplicable a cualquier server Gnu/Linux sólo tendrás que adaptarlo a tu escenario. Espero que os haya resultado útil o lo sea en algún momento. Como siempre voloro muchísimo vuestras aportaciones, experiencias en forma de comentarios para completar y mejorar las entradas de este blog.
¡Nos leemos en la próxima!
Hola gracias por la guia funciono excelente, tengo una duda con esto yo podria acceder la interfaz de red por la vmbr1, creando un caso hipotetico falla el cable, yo puedo acceder por la vmbr1 para poder levantar las maquinas rapido, es viejo esto espero que me respondas y gracias
ResponderEliminarHola!Gracias por el comentario.Respecto a la duda, piensa que si el servidor web publica la web de la consola de administración sobre la ip que está en la pata de vmbr0 y falla ese cable, si dicho servicio no está publicado sobre la ip de la pata de vmb1 no estará accesible la consola desde dicha ip.
ResponderEliminarEspero haberte ayudado.
Un saludo.
Nos leemos!
buenas tardes apenas hace días conozco de este sistema de virtualización, instale proxmox 5.2 y el servidor tiene 5 interfaces, al momento de la instalación coloco la ip administrativa y funciona de maravilla, a las demás interfaces hago un bridge y le asigno una ip si ningún inconveniente. Solo que cuando le digo a cualquier máquina virtual que salga por cualquier bridge diferente al vmbr0, las maquinas funcionan pero no les llego por ping ni ssh
ResponderEliminarBuenas Luis Roque,ante todo gracias por tu comentario.Si he entendido bien intentas "llegarle" a una máquina por ejemplo que está en vmbr4 desde otra que cuelga de vmbr1 que está en otra red.Recuerda que las reglas que aparecen en el post son para salir a internet a través de la interfaz de la red que cuelga de vmbr0.Por lo que si quieres habilitar el trafico entre las demás redes debes crear las correspondientes reglas de enrutamiento adaptadas a tu escenario.
EliminarDesde la máquina desde la que quieres llevar a cabo las conexiones puedes ver hasta donde llegas con tracert desde MS Windows o con traceroute desde GNU/Linux.
Espero haberte dado alguna pista.Me encantaría que me contaras si lo resolviste, si no,como fue la experiencia y lo que has sacado en claro.
Un saludo.
Nos leemos!