This shows you the differences between two versions of the page.
rl:labs:06:contents:07 [2021/01/26 12:06] iulia.florea |
rl:labs:06:contents:07 [2023/11/15 11:27] (current) laura.ruse [07. [10p] Depanare problemă de conectivitate] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 07. [30p] Instanțe EC2 ==== | + | ==== 07. [10p] Depanare problemă de conectivitate ==== |
- | În EC2 Dashboard (in sus avem Services-> Compute -> EC2) , alegem secțiunea //Instances// și opțiunea **Launch Instance**. | + | Ne propunem să depanăm o problemă de conectivitate. |
- | + | Pentru a "genera" problema rulați scriptul de pregătire cu noul argument ''ex7'':<code host> | |
- | Alegem o imagine de mașină virtuală (AMI - Amazon Machine Image) din secțiunea **Choose AMI**. Folosiți imaginea **RL_AWS2**, de la My AMIs (meniul din stânga). | + | root@host:~# start_lab ip ex7 |
- | + | </code> | |
- | Pentru **Instance Type** alegem astfel: | + | |
- | * Pentru instanța Frontend - t3a.xlarge ([[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html|avem nevoie de 4 interfețe de rețea]]) | + | |
- | * Pentru Red, Green și Blue - t2.micro (permite maxim 2 interfețe de rețea, dar noi oricum folosim doar una) | + | |
- | + | ||
- | Prima dată creăm cele 3 instanțe Red, Green, Blue. Vom incepe cu instanta Red. În secțiunea **Configure Instance Details**: | + | |
- | * Alegem VPC-ul //student<X>_//VPC | + | |
- | * Alegem subnet-ul corespunzător stației Red | + | |
- | + | ||
- | + | ||
- | Selectăm secțiunea //Configure Security Group// și alegem astfel: | + | |
- | * pentru prima mașină creată, alegem //Create a new security group//, punem un nume descriptiv (''student<X>_sec_public''). Lăsăm regulile să permită **doar traficul TCP** de la **IP-ul public propriu** la orice destinație. | + | |
- | Regulile de whitelist după IP sunt o practică recomandată pentru protejarea serverelor împotriva atacatorilor externe și putem permite doar IP-urile proprii. | + | |
- | * Pentru celelalte instanțe alegem //Select an existing security group// și selectăm grupul creat anterior. | + | |
- | + | ||
- | Selectăm apoi secțiunea **Add Tags**, label-ul //Name// și acolo dăm un nume descriptiv mașinii (''student<X>_Red/Green/Blue/Frontend''). | + | |
- | + | ||
- | Ne vom ocupa mai târziu de restul de reguli. | + | |
- | + | ||
- | Apăsăm **Review and Launch -> Launch**. La acest nivel nu ne interesează setările pentru Storage și Tags. | + | |
- | + | ||
- | Avem nevoie de o pereche de chei pentru a ne putea conecta la instanța pe care o creăm (alegem **Create a new key pair** și îi dăm numele //student<X>_//RL_lab. **Descărcați cheia privată**). | + | |
- | + | ||
- | Îi dăm un nume instanței nou create (am început cu Red). Continuăm cu Green și Blue într-un mod similar. | + | |
- | <note> | + | <note tip> |
- | Pentru următoarele instanțe alegem să folosim Security Group-ul si perechea de chei pe care le-am creat anterior. | + | Pentru depanare, primul pas recomandat este afișarea tabelei de rutare. Tabela de rutare vă va ajuta pentru depanare în cazul în care anumite intrări sunt absente sau configurate greșit. |
</note> | </note> | ||
- | Din Meniul din stânga, secțiunea //Network&Security//, alegem **Network interfaces**. Ne dorim ca instanța Frontend să aibă câte o interfață și în rețelele cu Red, Green, Blue. | + | Verificați conectivitatea între toate stațiile din topologie. Observați că nu există conectivitate între nici o stație și stația ''blue''. Rezolvați problemele de conectivitate la stația ''blue'' de pe stația ''host''. |
- | Mai întâi denumim interfețele de rețea create o dată cu instanțele pentru a fi mai ușor de lucrat cu ele. | ||
- | |||
- | Alegem **Create Network Interface**. Adăugăm descrieri sugestive și alegem subnet-ul potrivit pentru fiecare interfață nou creată. De asemenea, alegem security group-ul creat anterior. Obținem: | ||
- | |||
- | {{ :rl:labs:06:contents:network_interfaces.png?700 |}} | ||
- | |||
- | Ne întoarcem în secțiunea Instances. Instanței Frontend îi adăugăm cele trei interfețe de rețea create mai devreme (**Actions -> Networking -> Attach Network Interface**). | ||
- | |||
- | <note warning>Nu uitați să denumiți fiecare resursă nou-creată folosind prefixul student<X>_, unde X este ID-ul username-ului vostru.</note> | ||
<note important> | <note important> | ||
- | Fiecare instanță va avea atașată automat o interfață de rețea implicită (//Primary network interface//) cu subnet-ul pe care l-ați ales din wizard. | + | Identificați și soluționați problemele. |
- | + | ||
- | Din păcate, AWS nu tag-uiește numele acestei interfețe cu cel al instanței, așa că **va trebui să căutați și să dați manual numele acestei interfețe** pentru a nu le încurca între voi imediat după ce creați o instanță. Puteți s-o găsiți ușor apăsând click pe eth0 din descrierea instanței (la Instances, click pe resursă și apar jos aceste detalii). | + | |
</note> | </note> | ||
- | Pentru a ne putea conecta la stația Frontend, trebuie să îi alocăm o adresă IP publică statică (așa cum am învățat la începutul laboratorului) - vezi exercițiul 2. Asociem adresa IP publică statică interfeței de rețea corespunzătoare subnet-ului public. | + | <hidden> |
+ | <solution> | ||
+ | O dată, avem aceiași problemă ca la ex6 (interfața veth-blue are configurată adresa ''15.15.15.0/32''). Corectăm în felul următor: | ||
+ | <code> | ||
+ | root@host:~#ip address delete 15.15.15.0/32 dev veth-blue | ||
+ | root@host:~#ip address add 15.15.15.1/24 dev veth-blue | ||
+ | </code> | ||
- | <note> | + | Interfața ''blue-eth0'' a stației ''blue'' este dezactivată. Acest lucru se poate vedea prin consultarea tabelei de rutare:<code bash> |
- | Subnet-ul public are conexiune la Internet direct prin intermediul Internet Gateway-ului. | + | root@blue:~# ip route show |
- | </note> | + | root@blue:~# |
+ | </code> | ||
+ | și prin urmărirea configurației de nivel 2:<code bash> | ||
+ | root@blue:~# ip link show dev blue-eth0 | ||
+ | 55: blue-eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 | ||
+ | link/ether 00:16:3e:32:0f:ae brd ff:ff:ff:ff:ff:ff | ||
+ | </code> | ||
- | Ne conectăm prin ssh la instanța Frontend folosind comanda (în cazul Linux): | + | Reactivarea interfeței ''blue-eth0'' a stației ''blue'' se realizează folosind comanda:<code> |
+ | root@blue:~# ip link set dev blue-eth0 up | ||
+ | root@blue:~# ip link show dev blue-eth0 | ||
+ | 55: blue-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 | ||
+ | </code> | ||
- | <code bash> | + | Observăm că adresa IP are masca ''/32''. Corectăm: |
- | ssh -i [private_key] ec2-user@[ip_public] | + | <code> |
+ | root@blue:~# ip address delete 15.15.15.2/32 dev blue-eth0 | ||
+ | root@blue:~# ip address add 15.15.15.2/24 dev blue-eth0 | ||
</code> | </code> | ||
- | <note warning> | ||
- | Schimbați permisiunile asupra cheii private (''chmod 700 RL_lab.pem'') | ||
- | </note> | ||
- | Pe Windows, dacă folosiți Putty, va trebui să convertiți cheia SSH într-un format acceptat urmând [[https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html|ghidul de aici]]. | + | În urma acestei comenzi stația ''blue'' va fi conectată la stația ''host''. |
- | Pentru a ne putea conecta prin ssh de pe Frontend și la celelalte instanțe, va trebui să copiem cheia privată de pe stația locală pe Frontend: | + | În continuare nu există conectivitate între stația ''blue'' și stațiile ''red'' și ''green''. Afișarea tabelei de rutarea ne indică absența //default gateway//. Configurăm //default gateway// cu ajutorul comenzii:<code> |
- | <code bash> | + | root@blue:~# ip route add default via 15.15.15.1 |
- | # pe Linux: | + | root@blue:~# ip route show |
- | scp -i [private_key] [private_key] ec2-user@[ip_public]:~ | + | default via 15.15.15.1 dev blue-eth0 |
+ | 15.15.15.0/24 dev blue-eth0 proto kernel scope link src 15.15.15.2 | ||
</code> | </code> | ||
- | (pe Windows, puteți folosi WinSCP) | ||
- | |||
- | Verificați conectivitatea la Internet pe cele 4 instanțe (Frontend, Red, Green, Blue). | ||
- | |||
- | |||
- | |||
- | <note important>Pentru ca tinem la feedback, va rugam sa completati acest [[https://docs.google.com/document/d/1aFM25FqS8QuWku-EILhXciiW91q_l7zRy9LClT9rrcM/edit?usp=sharing|formular]] de feedback anonim</note> | ||
- | |||
+ | În acest moment există conectivitate completă la nivelul topologiei. | ||
+ | </solution> | ||
+ | </hidden> |