lunes, 18 de julio de 2016

Segunda interfaz de red en Proxmox y habilitar el tráfico entre ellas



¡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!

4 comentarios:

  1. 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

    ResponderEliminar
  2. Hola!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.
    Espero haberte ayudado.
    Un saludo.
    Nos leemos!

    ResponderEliminar
  3. 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

    ResponderEliminar
    Respuestas
    1. Buenas 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.
      Desde 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!

      Eliminar

Radar COVID

Tras largo tiempo sin publicar una entrada en el Blog, me he animado a escribir acerca de una App que podría llegar a ser muy útil en el con...