Ok, entonces quiero saber cómo hacer redes en contenedores LXC. No solo el tipo de información vaga que obtienes de los otros sitios web, sino una verdadera guía para principiantes para hacer que funcionen. Dado que la mayoría de los ejemplos están básicamente configurados para que las personas prueben, quiero ejecutar un servicio en uno ... como un servidor web por ejemplo.
Estoy ejecutando Ubuntu 12.04 LTS y tengo LXC instalado y puedo hacer, iniciar y detener un contenedor. Mi servidor obviamente tiene una IP pública y me gustaría saber cómo configurar un contenedor para que también pueda tener una IP pública. Como ya parece haber un puente en mi lugar desde mi contenedor actual, parecería que necesito darle a los contenedores un rango de DHCP que sea público para que funcionen o asignar manualmente una dirección IP estática a mi contenedor.
Si quiero asignar estáticamente una IP al contenedor, ¿cómo hago eso? ¿Debo hacer algún cambio en mi configuración de puente en el host? ¿Es realmente mejor hacerlo con la opción MACVLAN?
Cualquier ayuda sería apreciada.

Respuestas:
Mi enfoque supone que su servidor tiene una única NIC, y usted necesita compartir esa NIC entre el host y los invitados LXC. Esto implica usar un puente. El puente posee y gestiona
eth0. El host ahora configura su propia red enbr0lugar deeth0. Los invitados LXC están configurados para conectarse al puente.En el host,
sudo apt-get install bridge-utils.En el host, reemplácelo
eth0con un puente:Esto es peligroso. Si se equivoca, podría quedar bloqueado de su servidor. Asegúrese de tener un inicio de sesión local habilitado y que el acceso a la consola local funcione, de modo que pueda revertir este cambio si tiene algún problema.
En
/etc/network/interfaces:auto eth0conauto br0.Reemplazar:
con:
Si tuviera una configuración de red estática, entonces reemplazaría:
con:
No eres más que cambiar
eth0parabr0y añadiendo labridge_ports eth0línea.Reinicia el host. Si estuvieras haciendo esto localmente, luego ejecutar
sudo ifdown eth0antes de comenzar, ysudo ifup br0luego también lo haría. Tenga en cuenta que el puente puede tardar un poco en subir, así que espere cinco minutos después del reinicio antes de asumir que todo está perdido.Para mover un contenedor LXC con nombre dado a una IP pública:
/var/lib/lxc/container_name/configlxc.network.linkbr0/var/lib/lxc/container_name/rootfs/etc/network/interfaceseth0Para cambiar el valor predeterminado para los nuevos contenedores LXC, edite
/etc/lxc/default.confen el host y cambielxc.network.linkabr0.Si usted no necesita el puente NAT-LXC proporcionado en absoluto (es decir. Todas sus contenedores utilizarán el nuevo puente en su lugar), a continuación, en la edición de host
/etc/default/lxcy el cambioUSE_LXC_BRIDGEa"false", y después en la carrera de acogidasudo service lxc restart.fuente
Robie, muchas gracias por publicar esta respuesta, ¡me he estado tratando de hacer que esto funcione y este ha sido el único método que ha funcionado!
Pensé que debería mencionar algunas cosas que descubrí para ayudar a aclarar las instrucciones para otros administradores.
Mi host tenía varios alias de ip estática asignados a eth0 en el invitado, por ejemplo:
Ahora no queremos configurar br0 de la misma manera, solo queremos una IP sin alias como Robie se indicó anteriormente.
Entonces, digamos que desea que 5.5.5.5 se asigne al contenedor debian8.
Editar
/var/lib/lxc/debian8/etc/network/interfacesy agregar:Luego emita este comando:
route add default gw <gateway-ip, in my case 5.5.5.1>Después de eso, reinicie el contenedor y todo finalmente debería funcionar. :)
fuente
Tuve el mismo problema y tengo esta solución (rápida y sucia).
En el servidor:
route add -host 194.99.99.99 gw 10.255.255.100 dev lxdbr0Además, si es necesario, agregue la ruta a los enrutadores ascendentes.
¡Probablemente, no sea la mejor solución, pero no requiere un gran esfuerzo! Aclamaciones.
fuente