06. [25p] Networking

In mod implicit, un container are doar o interfata de loopback. Daca dorim sa il conectam cu “exteriorul”, trebuie sa ii adaugam o interfata Ethernet.

Vom adauga urmatoarele linii in fisierul de configurare al containerului ct1:

lxc.network.type = veth           # Virtual ethernet - virtualizare la nivel 2
lxc.network.flags = up            # Interfata va fi "up"
lxc.network.link = br0            # Containerul va fi legat intr-un "bridge" din masina gazda.
lxc.network.name = eth0           # Numele interfetei "vazut" in container.
lxc.network.veth.pair = veth0-ct1 # Numele interfetei "vazut" pe masina fizica.

Nu adaugati si comentariile de la sfarsitul liniilor, deoarece nu sunt permise de sintaxa lxc.

Analog, editati fisierul de configurare al containerului ct2. Pentru atributul lxc.network.veth.pair specificati valoarea veth0-ct2.

In prealabil, bridge-ul br0 trebuie creat pe masina gazda, folosind comanda brctl:

root@saisp-vm-1:~# brctl addbr br0
root@saisp-vm-1:~# ifconfig br0 up

Porniti cele doua containere in background, apoi verificati ca intefetele virtuale au fost adaugate in bridge:

root@saisp-vm-1:~# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.fe6d63702103       no              veth0-ct1
                                                        veth0-ct2

Alocati adrese IP din spatiul 192.168.1.0/24 pentru:

Apoi, testati conectivitatea prin ping de pe masina gazda catre cele 2 containere.

Pentru a avea conectivitate din containere catre Internet, trebuie sa configuram NAT si sa activam rutarea pe masina gazda:

root@saisp-vm-1:~# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
root@saisp-vm-1:~# echo 1 > /proc/sys/net/ipv4/ip_forward 

Apoi, pe cele doua containere adaugati ruta default si testati conectivitatea.