Estoy tratando de configurar varios contenedores LXC en un host, cada uno con sus propias IP públicas estáticas.
Mi host está ejecutando la última versión de Ubuntu. Tiene una única interfaz de red llamada eth0. Las IP estáticas se pueden hacer ping desde Internet y se denominan eth0: 210, eth0: 211 ... Los números después de los dos puntos son el byte menos significativo de las direcciones. Además de estas interfaces, tengo la configuración br0 en la IP pública del host. También están las interfaces lo, veth2LPP9A y lxcbr0. El lxcbr0 tiene la dirección de una IP privada.
El host / etc / network / interfaces se ve así:
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
[...]
Hasta ahora, he utilizado varias fuentes en línea, incluidos los contenedores Bridging LXC para alojar eth0 para que puedan tener una IP pública que me ayude a configurar esto.
El archivo de configuración del contenedor tiene:
lxc.network.type = veth
lxc.network.link = br0
Eliminé la configuración estática lxc.network.ipv4 de este archivo porque causó problemas. Cuando ejecuté lxc-ls --fancy con esta configuración, vería la misma IP pública dos veces en la salida. Además, interferiría con la configuración de subred de las interfaces / etc / network / del contenedor.
Hablando del archivo de interfaces del contenedor, se parece un poco a:
auto eth0
iface eth0 inet static
address [...]
netmask 255.255.255.255
#gateway [...]
dns-nameservers 8.8.8.8
post-up route add [...] dev eth0
post-up route add default gw [...]
post-down route del [...] dev eth0
post-down route del default gw [...]
Tuve que comentar la puerta de enlace y agregar la ruta agregar comandos a este archivo. De lo contrario, el contenedor tardaría unos minutos en arrancar.
Los archivos / proc / sys / net / bridge / bridge-nf- * en el host están configurados en 0. El valor / proc / sys / net / ipv4 / ip_forward es 1.
El problema es que, aunque la "ruta -n" del contenedor se vea como debería, no puedo hacer ping fuera del contenedor. SSHing a lo que debería ser la IP del contenedor, me conecta con el host.
EDITAR: Eliminar la IP estática del contenedor del host ayudó, pero ahora recibo un nuevo error. Intentar hacer ping al contenedor desde el host da como resultado Redirect HostFrom, New nexthop. Los paquetes solo van desde la puerta de enlace al host, repetidamente. Ejecutar un traceroute desde el host muestra que la primera parada es en la puerta de enlace. Entonces todas las otras rutas son * * *. Me sale el mismo problema independientemente de si el contenedor está en línea o no.
fuente
Dado que realiza un puente, es necesario configurar las direcciones IP en el contenedor solamente , y no en el de acogida. El host solo debe tener sus propias direcciones IP.
fuente
Lo hice el otro día con Ubuntu 14.04. Es simple. Solo tiene que editar el
/etc/network/interfaces
archivo dentro de su contenedor y configurar esto:Reemplace cada variable con el valor deseado.
Usted NO tiene que hacer nada más!
PD: Observe el espacio antes de algunas líneas. Es obligatorio.
fuente
La mejor manera que encuentro y la más rápida es usar los perfiles lxc
lxc profile list
- ordena la lista de todos los perfiles que tienes Entonceslxc profile copy default minecraft
(este es el nombre de su nuevo perfil)Luego
lxc profile edit minecraft
Esto vendrá
entonces guárdalo
luego asigne el perfil a su contenedor LXC como este
luego simplemente reinicie el contenedor y su nueva dirección IP se establece en ese contenedor
fuente
Podría configurar correctamente mis contenedores lxc después de seguir la respuesta de @Enrique Moreno Tent, así que explicaré qué hacer con más detalles en caso de que no sepa cómo configurar los otros elementos.
1. Acceda a su contenedor LXC a través del
lxc-attach
comandoMando:
$ lxc-attach -n YOUR-CONTAINER-NAME
2. Vea sus configuraciones actuales con
ifconfig
Mando
`` `
3. Obtener dirección, máscara de red y puerta de enlace
Al ver el resultado del
ifconfig
comando anterior, vemos:La dirección es la dirección que desea, puede cambiarla a 10.0.3.166.
Netmask está ahí: 255.255.255.0
Puerta de enlace : para la puerta de enlace con la que usa la dirección de transmisión , aquí está 10.0.3.255
Como puede ver arriba, actualmente tiene toda la información que necesita para llenar su invitado (contenedor)
/etc/network/interfaces
.4. Obteniendo
dns-nameservers
valor.Emita el comando:
cat /etc/resolv.conf
Pero tal vez es mejor usar Google DNS, que asre
8.8.8.8
y8.8.4.4
5. Edición
/etc/network/interfaces
DENTRO DEL ENVASEauto eth0 iface eth0 inet static address 10.0.3.166 netmask 255.255.255.0 gateway 10.0.3.255 dns-nameservers 8.8.8.8
fuente
ifconfig
ha sido reemplazado porip a
versiones más recientes de debian / ubuntu linuxconfig.org/…