Până acum conectarea la Internet containerelor red
, green
și blue
se face prin intermediul stației host
pe post de ruter/gateway. Stația host
preia pachetele sosite pe interfața br0
și le transferă apoi pe interfața eth0
legată la o rețea pe care vom denumi în continuare rețea publică.
Dorim să realizăm conectarea la Internet a containerelor direct la rețeaua publică, renunțânt astfel la rutare și la NAT pe stația host
. Pentru aceasta vom adăuga inclusiv interfața eth0
la bridge-ul br0
, asigurând astfel o conexiune ,prin bridge, a containerelelor la rețeaua publică.
Pentru început dezactivăm NAT pe stația host
:
root@host:~# iptables -t nat -L POSTROUTING -n -v Chain POSTROUTING (policy ACCEPT 1 packets, 32 bytes) pkts bytes target prot opt in out source destination 50 3166 MASQUERADE all -- * eth1 0.0.0.0/0 0.0.0.0/0 root@host:~# iptables -t nat -F POSTROUTING root@host:~# iptables -t nat -L POSTROUTING -n -v Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination
După cum am precizat, adăugăm interfața eth0
în brige-ul br0
(practic creăm o legătură între switch-ul nostru virtual br0
și rețeaua publică):
root@host:~# brctl addif br0 eth0 root@host:~# brctl show br0 bridge name bridge id STP enabled interfaces br0 8000.080027db5278 no eth0 veth-blue veth-green veth-red
Pentru a reveni la conectare prin SSH de pe sistemul fizic pe stația host
, va trebui să configurăm o adresă IP pe bridge-ul br0
. Pentru acesta vom șterge vechile adrese de pe interfețele eth0
și br0
și vom obține o adresă nouă pe interfața br0
folosind comenzile:
root@host:~# ip a f dev eth0 root@host:~# ip a f dev br0 root@host:~# dhclient br0 root@host:~# ip a s br0 25: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 08:00:27:db:52:78 brd ff:ff:ff:ff:ff:ff inet 192.168.56.101/24 brd 192.168.56.255 scope global br0
br0
să fie primită, prin DHCP, aceeași adresă IP. În acest caz conexiunea SSH existentă va fi deblocată și veți putea continua lucrul la exerciții. Adică nu va mai fi nevoie să rulați comanda ssh
indicată imediat mai jos.
Acum ne putem reconecta de pe sistemul fizic la stația host
prin SSH, folosind adresa IP asociată acum interfeței br0
:
student@mjolnir:~$ ssh root@ADRESA_IP_BR0
Acum containerele sunt conectate la rețeaua publică. Pentru a obține adrese din acea rețea, ștergem vechea adresă pe interfața eth0
, rulăm pe fiecare container comanda dhclient eth0
și observăm ce adrese IP a obținut fiecare container:
root@red:~# ip a f dev eth0 root@red:~# dhclient eth0 root@red:~# ip a s dev eth0 26: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:16:3e:8e:84:21 brd ff:ff:ff:ff:ff:ff inet 192.168.56.102/24 brd 192.168.56.255 scope global eth0 root@blue:~# ip a f dev eth0 root@blue:~# dhclient eth0 root@blue:~# ip a s eth0 19: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:16:3e:32:0f:ae brd ff:ff:ff:ff:ff:ff inet 192.168.56.103/24 brd 192.168.56.255 scope global eth0 root@green:~# ip a f dev eth0 root@green:~# dhclient eth0 root@green:~# ip a s dev eth0 22: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:16:3e:d1:b2:95 brd ff:ff:ff:ff:ff:ff inet 192.168.56.104/24 brd 192.168.56.255 scope global eth0
Folosind noile adrese obținute ne putem conecta direct prin SSH de pe sistemul fizic pe containere:
student@mjonir:~$ ssh root@ADRESA_IP_RED [...] root@red:~# student@mjonir:~$ ssh root@ADRESA_IP_GREEN [...] root@green:~# student@mjonir:~$ ssh root@ADRESA_IP_BLUE [...] root@blue:~#