Y continua la batalla!, esta vez necesito hacer lo mismo que comenté en este post pero para el entorno de producción (o sea, versión 2.x)
Por temas de seguridad no puedo indicar el SO ni datos muy específicos donde esta montada la infraestructura. El Escenario es el siguiente.
Tengo un contenedor A el cual posee 1 interfaz física y otra interfaz en un bridge. Como la interfaz física esta directamente conectada desde el host base no veo esa interfaz
Tengo un segundo contenedor B el cual necesita acceder a la red de la interfaz física del contenedor A y ya posee una conexión hacia el bridge0.
Alternativas de solución
Se me ocurren 4 soluciones distintas
- crear enrutamiento y nateo entre contenedor A y contenedor B
- Enrutar desde un contenedor C el cual es un servidor VPN y ya se conecta a la misma red que necesito alcanzar desde contenedor B
- conectar físicamente un cable para el contenedor B
- eliminar la interfaz del contenedor A, crear un bridge con esa interfaz y unir en el bridge la interfaz con los 2 contenedores
la opción 1 sigue siendo una posibilidad, sin embargo creo que a la hora de thoubleshooting se dificulta ya que se tiene que revisar ambos contenedores.
La opción 2 es muy arriesgada ya que no conozco en profundidad el funcionamiento del contenedor C
Opción 3 es fácil y «decente» sin embargo creo recordar que el host base ya no cuenta con interfaces de red disponibles (el servidor cuenta con 4) y adicionalmente estamos en cuarentena por lo que no puedo realizar la conexión aunque quisiera.
Por lo que nos queda la opción n° 4 y de la cual vamos a entrar en detalle para su ejecución
Vamos a partir creando el bridge
sudo brctl addbr br1
Luego este mismo bridge lo vamos a vincular a los contenedores A y B
lxc config device add contenedor B eth1 nic nictype=bridged parent=br1
En el caso del contenedor A como ya cuenta con una interfaz eth1 (la que vamos a unir al bridge) decidí primero eliminar la interfaz y luego unir el bridge ya que obviamente lxc no me permitirá añadir otra interfaz con el mismo nombre
lxc config device remove contenedor A eth1
lxc config device add contenedor A eth1 nic nictype=bridged parent=br1
La interfaz que elimine del contenedor A ahora es visible desde el host base por lo que procedo a añadirlo al bridge
sudo brctl addif br1 eno2
luego levanto la interfaz en el host base y el bridge creado
sudo ifconfig eno2 up sudo ifconfig br1 up
Luego ya bastará con conectarse a ambos contenedores, configurar el correspondiente direccionamiento IP y levantar la nueva interfaz eth1
Persistencia
Para mantener los cambios luego del reinicio del host base debemos crear el bridge en el archivo /etc/network/interfaces
sudo nano /etc/network/interfaces
y agregamos
#br1 auto br1 iface br1 inet manual bridge-ifaces eno2 bridge-ports eno2 up ifconfig eno2 up
y ya estamos listos con la nueva conexión