This shows you the differences between two versions of the page.
rl:labs:11:contents:04 [2015/01/15 13:09] razvan.deaconescu [04. [15p] Conectare de containere la rețeaua publică] |
rl:labs:11:contents:04 [2024/01/04 12:58] (current) vlad_iulius.nastase created |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 04. [15p] Conectare de containere la rețeaua publică ==== | + | ====== 04. [10p] Rezervare adresă IP publică ====== |
- | 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ă//. | + | Dorim să ne rezervăm propria adresă IP publică statică pentru a o asocia mai târziu unei instanțe din topologia noastră. În //VPC Network//, alegem secțiunea //IP addresses// și opțiunea **Reserve External Static IP Address** (păstrăm setările default), setăm **Name** cu valoarea **student$X$-public**, Network Service Tier bifăm **Standard**, selectăm tipul **Regional** și aceeași regiune definită pe VPC-ul creat mai devreme (preferabil **europe-west1**) și apăsăm **Reserve**. |
- | Pentru început dezactivăm NAT pe stația ''host'':<code bash> | + | Este un cost pentru fiecare adresă IP publică statică care nu este alocată unei instanțe (“totul în viață se plătește”). |
- | 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 | + | |
- | </code> | + | Acum avem în lista de adrese IP publice statice din contul nostru, adresa IP alocată mai devreme. |
- | <note important> | ||
- | Operațiile următoare le vom efectua direct în consola mașinii virtuale VMware, adică în fereastra VMware, întrucât vor afecta configurația rețelei și vor închide conexiunile SSH curente. | ||
- | </note> | ||
- | 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ă):<code bash> | + | {{ :rl:labs:12:contents:static-public-ip.png?400 |}} |
- | 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 | + | |
- | </code> | + | |
- | 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:<code bash> | + | |
- | 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 | + | |
- | </code> | + | |
- | + | ||
- | <note> | + | |
- | Sunt șanse ca pe interfața ''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. | + | |
- | </note> | + | |
- | + | ||
- | Acum ne putem reconecta de pe sistemul fizic la stația ''host'' prin SSH, folosind adresa IP asociată acum interfeței ''br0'':<code bash> | + | |
- | student@mjolnir:~$ ssh root@ADRESA_IP_BR0 | + | |
- | </code> | + | |
- | + | ||
- | 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:<code bash> | + | |
- | 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 | + | |
- | </code> | + | |
- | + | ||
- | Folosind noile adrese obținute ne putem conecta **direct** prin SSH de pe sistemul fizic pe containere:<code bash> | + | |
- | 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:~# | + | |
- | </code> | + |