J'explore les fonctionnalités LXC d'Ubuntu 12.04 et je veux vraiment configurer un réseau comme celui-ci :
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
Je veux juste un réseau "plat" où les invités ont un accès complet au LAN et sont visibles des clients. Je suis habitué à la mise en réseau pontée avec libvirt/KVM, comme décrit ici :http://libvirt.org/formatdomain.html#elementsNICSBridge
Sur l'hôte :
# /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 pour le premier invité :
# /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
Il semble que 192.168.56.201 soit invisible pour le monde extérieur, ce qui n'est pas ce que je veux. Il semble que je doive faire l'une de ces choses :
1) Configurer manuellement le routage sur l'hôte et l'invité
2) Faites quelque chose de hokey… créez des interfaces virtuelles sur l'hôte à l'avance et configurez les invités pour les utiliser lxc.network.type=phys
. Je ne sais pas si cela fonctionnerait réellement.
Je me concentre sur Ubuntu, mais des réponses pour RHEL/Fedora seraient également utiles….
Réponse acceptée :
C'est à peu près exact, même s'il vous manque une ligne comme celle-ci :
lxc.network.ipv4.gateway = X.X.X.X
J'ai un invité LXC fonctionnant sur Debian. Tout d'abord, vous configurez le pont hôte (le moyen le plus simple), dans /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
Dans votre cas, vous l'avez appelé br0
, et je l'ai appelé wan
. Le pont peut s'appeler comme vous voulez. Vous obtenez que cela fonctionne en premier - si cela échoue, enquêtez avec (par exemple,) brctl
Ensuite, votre configuration LXC est configurée pour rejoindre ce pont :
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
Comme le note HoverHell, quelqu'un avec root dans le conteneur peut changer l'adresse IP. Ouais. C'est un pont (alias commutateur Ethernet). Si vous voulez empêcher cela, vous pouvez utiliser des règles de pare-feu sur l'hôte. Du moins dans mon cas, les paquets doivent passer par les iptables de l'hôte.