Estoy explorando las características de LXC en Ubuntu 12.04 y realmente quiero configurar una red como esta:
client1: 192.168.56.101/24
lxc-host: 192.168.56.102/24
guest1 192.168.56.201/24
guest2 192.168.56.202/24
guest3 192.166.56.203/24
Solo quiero una red "plana" donde los invitados tengan acceso completo a la LAN y sean visibles desde los clientes. Estoy acostumbrado a conectar las redes con libvirt/KVM, como se describe aquí:http://libvirt.org/formatdomain.html#elementsNICSBridge
En el anfitrión:
# /etc/network/interfaces
auto br0
iface br0 inet static
address 192.168.56.102
netmask 255.255.255.0
broadcast 192.168.56.255
bridge_ports eth1
lxc.conf para el primer invitado:
# /var/lib/lxc/guest1/config:
lxc.network.type=veth
lxc.network.link=br0
lxc.network.flags=up
lxc.network.hwaddr=00:16:3e:13:48:4e
lxc.network.ipv4=192.168.56.201/24
Parece que 192.168.56.201 es invisible para el mundo exterior, que no es lo que quiero. Parece que tengo que hacer una de estas cosas:
1) Configurar manualmente el enrutamiento en el host y el invitado
2) Haga algo tonto... cree interfaces virtuales en el host con anticipación y configure los invitados para usarlas lxc.network.type=phys
. No sé si eso realmente funcionaría.
Estoy enfocado en Ubuntu, pero las respuestas para RHEL/Fedora también serían útiles...
Respuesta aceptada:
Esto es bastante correcto, aunque te falta una línea como esta:
lxc.network.ipv4.gateway = X.X.X.X
Tengo un invitado LXC ejecutándose en Debian. Primero, configura el puente de host (la manera fácil), en /etc/network/interfaces
:
auto wan
iface wan inet static
address 72.X.X.X
netmask 255.255.255.0
gateway 72.X.X.1
bridge_ports wan_phy # this line is important.
bridge_stp off
bridge_fd 2
bridge_maxwait 20
En tu caso, lo has llamado br0
, y lo he llamado wan
. El puente se puede llamar como quieras. Haces que esto funcione primero; si falla, investiga con (por ejemplo,) brctl
Entonces su configuración LXC está configurada para unirse a ese puente:
lxc.utsname = FOO
lxc.network.type = veth
lxc.network.link = wan # remember, this is what I call my bridge
lxc.network.flags = up
lxc.network.name = v-wan # optional, I believe
lxc.network.ipv4 = 72.X.X.Y/24 # different IP than the host
lxc.network.ipv4.gateway = 72.X.X.1 # same as on the host
Como señala HoverHell, alguien con root en el contenedor puede cambiar la dirección IP. Sí. Es un puente (también conocido como conmutador Ethernet). Si desea evitar eso, puede usar reglas de firewall en el host; al menos en mi caso, los paquetes deben pasar por las iptables del host.