konfigurace síťování pro lxc kontejnery

Tomas Vondra tv na fuzzy.cz
Úterý Květen 13 02:34:22 CEST 2014


Ahoj,

hraju si tady s virtualizací pomocí LXC, a potřebuju trochu poradit se
síťováním (což není úplně moje parketa).

Pro začátek bych rád dosáhnul toho že jak ze systému tak z kontejnerů
bude "normálně" fungovat síť. Aktuálně mi funguje buď jedno nebo druhé,
podle toho jak to zrovna nastavím, nikdy oboje současně.

V každém případě rád bych pro začátek dosáhl alespoň toho prvního, tj.
funkční sítě ze systému i konfejnerů. Systém má jednu síťovku (enp2s0)
konfigurovanou přes DHCP, řekněmě že má IP 192.168.1.163.

V dokumentaci/howto k LXC se doporučuje nakonfigurovat bridge, plus
dnsmasq jako lokální DHCP (pro kontejnery). Mám toto:

##### /etc/conf.d/net.br0 #####
config_br0="192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255"
brctl_br0="setfd 0 sethello 10 stp off"
routes_br0="192.168.1.1"
bridge_br0="enp2s0"

##### /etc/conf.d/dnsmasq #####
DNSMASQ_OPTS="--user=dnsmasq --group=dnsmasq --except-interface lo
--bind-interfaces --listen-address 192.168.2.1 --dhcp-range
192.168.2.2,192.168.2.254 --dhcp-leasefile=/tmp/dhcp.leases
--dhcp-lease-max=253 --dhcp-no-override"

##### /etc/lxc/default.conf #####
lxc.network.type = veth
lxc.network.link = br0
lxc.network.flags = up
lxc.network.hwaddr = fe:xx:xx:xx:xx:xx

Tj. (pokud tomu dobře rozumím)

 svět <--> enp2s0 (192.168.1.163) <-bridge-> br0 (192.168.2.1)

a do br0 jsou potom přidané veth devicy pro jednotlivé kontejnery. A
vskutku - kontejner nastartuje, dostane veth device, IP adresu z daného
rozsahu, ale ven se nedopingnu :-( A od chvíle nastartování br0
nefunguje ani síť z toho hosta.

Zkoušel jsem různé varianty, nejvíc co se mi povedlo bylo že pokud br0
nastavím např. IP 192.168.1.2 (tj. ze stejného rozsahu kam patří enp2s0)
tak z kontejnerů síť funguje.

Tipuju že to bude nějaká blbost, nejspíš v routování, kterou nevidím -
dokonce tady přes SSH koukám na systém kde to je nakonfigurované (byť
přes libvirt).

routy po nastartování enp2s0 a br0:

Adresát       Brána        Maska          Přízn Metrik Odkazů Užt Rozhraní
0.0.0.0       192.168.1.1  0.0.0.0        UG    3      0        0 enp2s0
127.0.0.0     0.0.0.0      255.0.0.0      U     0      0        0 lo
127.0.0.0     127.0.0.1    255.0.0.0      UG    0      0        0 lo
192.168.1.0   0.0.0.0      255.255.255.0  U     3      0        0 enp2s0
192.168.2.0   0.0.0.0      255.255.255.0  U     0      0        0 br0


Bonus č. 1: kontejnery uvidí na sebe
Bonus č. 2: kontejnery mají vnější IP (jde na ně pingnout zvenčí)

Tomáš


Další informace o konferenci Linux