This shows you the differences between two versions of the page.
rl:labs:06:contents:03 [2019/10/08 15:27] georgiana.trifu created |
rl:labs:06:contents:03 [2023/11/05 12:13] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 03. [10p] VPC Subnets ==== | + | ==== 03. [10p] Adresare IP și rutare ==== |
- | Pentru a lansa instanțe într-un VPC trebuie să avem cel puțin un subnet. | + | Dorim să realizăm conectivitate și între stațiile ''red'' și ''green''. Întrucât cele două stații sunt în rețele locale diferite, va trebui să configurăm stația ''host'' ca //default gateway// pe fiecare stație. |
- | În //VPC Dashboard//, alegem secțiunea //Subnets// și opțiunea **Create Subnet**. | + | |
- | Este de preferat să alocăm subnet-uri în mai multe ”Zone de disponibilitate”/Availability Zones pentru redundanță. În laboratorul de astăzi, vom crea toate obiectele în același Availability Zone. | + | Pentru a adăuga //default gateway// pe stația ''red'' folosiți comenzile:<code> |
+ | root@host:~# go red | ||
+ | [...] | ||
+ | root@red:~# ip route add default via 10.10.10.1 | ||
+ | </code> | ||
- | Mai departe, vom crea 4 subnets, unul public (pentru instanța Frontend) și 3 private (pentru instanțele Red, Green, Blue). | + | După configurare (adăugarea rutei), validăm configurația cu o comandă specifică. În acest caz urmărim tabela de rutare folosind comanda:<code bash> |
+ | root@red:~# ip route show | ||
+ | default via 10.10.10.1 dev red-eth0 | ||
+ | 10.10.10.0/24 dev red-eth0 proto kernel scope link src 10.10.10.2 | ||
+ | </code> | ||
- | Alegem VPC-ul creat la Exercițiul 1 și alegem același Availability Zone pentru toate subnet-urile (//de exemplu, eu-west-1a//). Mai departe, alegem masca de rețea corespunzătoare (/28 pentru subnet-ul public și /24 pentru subnet-urile private): | + | <note tip> |
- | * 192.168.0.0/24 | + | Adresa IP ''10.10.10.1'' reprezintă adresa IP a interfeței ''veth-red'' de pe stația ''host''. |
- | * 192.168.1.0/24 | + | </note> |
- | * 192.168.2.0/24 | + | |
- | * 192.168.3.0/28 | + | |
- | Recomandăm ca numele pentu subnet-uri să fie sugestive. Pentru exercițiul nostru: | ||
- | * 192.168.3.0_PUBLIC (aici vom adăuga instanța //Frontend//) | ||
- | * 192.168.0.0_PRV_RED | ||
- | * 192.168.1.0_PRV_GREEN | ||
- | * 192.168.2.0_PRV_BLUE | ||
- | Observăm în lista de subnet-uri cele 4 subnet-uri create mai devreme: | + | **Intrați pe stația ''green'' și executați comenzile similar.** |
- | {{ :rl:labs:06:contents:subnets.png |}} | + | Testați conectivitatea, folosind ''ping'' între stațiile ''green'' și ''red''. |
+ | Observați că nu funcționează. Motivul pentru care nu există conectivitate este reprezentat de faptul că stația ''host'' nu are activată rutarea (nu trimite pachetele ce vin de pe o interfață pe altă interfață). | ||
+ | Pentru a activa rutarea pe stația ''host'', rulați comanda:<code> | ||
+ | root@host:~# sysctl -w net.ipv4.ip_forward=1 | ||
+ | </code> | ||
- | De asemenea, putem vedea și tabelele de rutare pentru fiecare subnet. | + | Pentru a valida configurarea de activare a rutării, rulăm comanda:<code> |
+ | root@host:~# sysctl net.ipv4.ip_forward | ||
+ | net.ipv4.ip_forward = 1 | ||
+ | </code> | ||
+ | Testați din nou conectivitatea între ''red'' și ''green'' și observați că funcționează. | ||
+ | |||
+ | Porniți comanda ''ping'' de pe stația ''red'' către stația ''green''. Deschideți un nou terminal și executați pe stația ''host'' comanda:<code> | ||
+ | root@host:~# tcpdump -n -i veth-red | ||
+ | listening on veth-red, link-type EN10MB (Ethernet), capture size 65535 bytes | ||
+ | 18:46:48.783576 IP red.local > 10.10.20.2: ICMP echo request, id 434, seq 163, length 64 | ||
+ | 18:46:48.783622 IP 10.10.20.2 > red.local: ICMP echo reply, id 434, seq 163, length 64 | ||
+ | </code> | ||
+ | |||
+ | Observați pachetele de tip ''ICMP echo request/reply'' care trec prin stația ''host'' (sau altfel zis stația ''host'' le rutează). |