Zkoumám funkce LXC v Ubuntu 12.04 a opravdu chci nastavit síť jako je tato:
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
Chci jen „plochou“ síť, kde mají hosté plný přístup k LAN a jsou viditelní pro klienty. Jsem zvyklý na přemostění sítí pomocí libvirt/KVM, jak je popsáno zde:http://libvirt.org/formatdomain.html#elementsNICSBridge
Na hostiteli:
# /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 pro prvního hosta:
# /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
Vypadá to, že 192.168.56.201 je pro vnější svět neviditelný, což není to, co chci. Zdá se, že musím udělat jednu z těchto věcí:
1) Ručně nastavte směrování na hostiteli a hostu
2) Udělejte něco bláznivého…vytvářejte virtuální rozhraní na hostiteli s předstihem a nakonfigurujte hosty, aby je používali lxc.network.type=phys
. Nevím, jestli by to skutečně fungovalo.
Zaměřuji se na Ubuntu, ale užitečné by byly i odpovědi pro RHEL/Fedora...
Přijatá odpověď:
To je do značné míry správné – i když vám chybí řádek jako tento:
lxc.network.ipv4.gateway = X.X.X.X
Na Debianu mám hosta LXC. Nejprve nastavíte hostitelský most (snadný způsob) v /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
Ve vašem případě jste to nazvali br0
a nazval jsem to wan
. Most se může jmenovat jak chcete. Nejprve to zprovozníte – pokud selže, prozkoumejte to pomocí (např.) brctl
Potom je vaše konfigurace LXC nastavena tak, aby se připojila k tomuto mostu:
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
Jak poznamenává HoverHell, někdo s rootem v kontejneru může změnit IP adresu. Ano. Je to most (neboli ethernetový přepínač). Pokud tomu chcete zabránit, můžete na hostiteli použít pravidla brány firewall – alespoň v mém případě musí pakety procházet přes iptables hostitele.