Differences

This shows you the differences between two versions of the page.

Link to this comparison view

rl:teme:tema2 [2025/11/27 15:30]
florin.stancu
rl:teme:tema2 [2025/12/09 22:01] (current)
florin.stancu
Line 2: Line 2:
  
  * **Publicare**:​  * **Publicare**:​
-    * //**2025-11-30 13:00**//+    * //**2025-12-02 11:00**//
  
  * **Termen de predare**:  * **Termen de predare**:
-    * //​**2025-12-14 23:55 - <color red>​deadline HARD!</​color>​ **//+    * //​**2025-12-15 23:55 - <color red>​deadline HARD!</​color>​ **//
  
 +**Revizii: **
 +    * **//​2025-12-09 22:00//:** Checker v2025.5.1: resolvat UDP listenerul la task 5 + enable systemd lingering pt tmux ca workaround la deconectările de la SSH (vedeți forum local infrastructure pentru folosire)!
 +    * **//​2025-12-08 18:00//:** Checker v2025.4: rezolvat problema cu dimensiune arhivă prea mare dacă v-ați conectat cu vscode (yep, ocupă ceva partea auto-instalată pe server)!
 +    * **//​2025-12-05 23:00//:** Task 06 (DNAT): modificare enunț! host portul 18000+H trebuie să ducă către serverul HTTP al României (ori suntem daci ori nu mai suntem)! Checkerul deja verifica asta :D A fost schimbare de ultim moment (task-ul fiind mult mai dificil dacă se făcea DNAT spre Italy datorită rutelor multiple) și am uitat de enunț...
 +    * **//​2025-12-04 16:45//:** Checker v2025.3: another day, another bug... UPDATE toți cei de pe OpenStack, am făcut optimizări drastice asupra memoriei utilizate de checker (cleanup) + 1GB zswap!
 +    * **//​2025-12-03 22:20//:** Checker v2025.2: pus enforcement ca să nu mai funcționeze trolleala cu reboot pe OpenStack, UPDATE ASAP!
 +    * **//​2025-12-03 9:30//:** Checker v2025.1: reparat problema cu ''​t2check --save''​ pe OpenStack (crăpa conexiunea SSH din cauza cloud-init-ului care, când repornea, repornea automat și serviciul networking chiar dacă era totul OK); ACUM MERGE SAVE-ul (doamne-ajută)!
 +    * **//​2025-12-02 21:00//:** Imagine pe OpenStack //​v2025.1//:​ pus lock la password auth pe student! GATA, ne calmăm cu ASCII "​art"​-ul prin consolele altora, da?
 +    * **//​2025-12-02 11:00//:** Tema a fost lansată ;)
 <ifauth @rl> <ifauth @rl>
 **Cine vede ce este mai jos este asistent ;)** **Cine vede ce este mai jos este asistent ;)**
  
-**Revizii: ** 
-    * **//​2025-11-yy hh:mm//:** Reparat ceva 
-    * **//​2025-11-30 13:00//:** Tema a fost lansată ;) 
 </​ifauth>​ </​ifauth>​
  
-<ifauth @rl> 
 Tema constă în realizarea configurației unui set de exerciții pe o topologie (vedeți mai jos) simulată folosind containere (implementare în ContainerNet + Docker) într-o mașină virtuală (ori în cloud - OpenStack, ori descărcată și rulată local). Tema constă în realizarea configurației unui set de exerciții pe o topologie (vedeți mai jos) simulată folosind containere (implementare în ContainerNet + Docker) într-o mașină virtuală (ori în cloud - OpenStack, ori descărcată și rulată local).
  
Line 22: Line 27:
 Fiecare exercițiu are un punctaj propriu. Nota pe întreaga temă este dată de suma punctajelor acumulate în urma rezolvării fiecărui exercițiu. Fiecare exercițiu are un punctaj propriu. Nota pe întreaga temă este dată de suma punctajelor acumulate în urma rezolvării fiecărui exercițiu.
  
-Punctajul maxim care se poate obține pe întreaga temă este 100 de puncte (tot ce este peste se trunchiază strict, per temă). Acest punctaj este echivalent cu **puncte** din nota finală.+Punctajul maxim care se poate obține pe întreaga temă este 100 de puncte (tot ce este peste se trunchiază strict, per temă). Acest punctaj este echivalent cu **1.3 puncte** din nota finală.
  
 Există **și** exerciții bonus, cu ajutorul cărora puteți obține un total de 125 de puncte (remember: se trunchiază,​ dar pot fi folosite pentru a completa punctaj parțial la alte task-uri ne-esențiale -- vedeți mai jos). Există **și** exerciții bonus, cu ajutorul cărora puteți obține un total de 125 de puncte (remember: se trunchiază,​ dar pot fi folosite pentru a completa punctaj parțial la alte task-uri ne-esențiale -- vedeți mai jos).
Line 51: Line 56:
  
   * <color green>​Imaginea locală este acum disponibilă!</​color>​   * <color green>​Imaginea locală este acum disponibilă!</​color>​
-  * Pentru a rula mașina virtuală a temei local, **o puteți descărca [[https://​repository.grid.pub.ro/​cs/​rl/​TODO_RL_T2_ARHIVA.7z|de la acest URL]]** (//6GB dezarhivat//​).+  * Pentru a rula mașina virtuală a temei local, **o puteți descărca [[https://​repository.grid.pub.ro/​cs/​rl/​vm/​RL_Tema2_2025.0_Local.7z|de la acest URL]]** (//6GB dezarhivat//​).
     * Va trebui să vă autentificați cu username + parola contului de la universitate!     * Va trebui să vă autentificați cu username + parola contului de la universitate!
   * VM-ul este compatibil atât cu VirtualBox (testat cu 7.1), cât și VMWare (Workstation >= 17). Pe Linux, poate fi rulat și prin qemu+kvm.   * VM-ul este compatibil atât cu VirtualBox (testat cu 7.1), cât și VMWare (Workstation >= 17). Pe Linux, poate fi rulat și prin qemu+kvm.
Line 117: Line 122:
 </​code>​ </​code>​
  
-  * Dacă sunt probleme, puteți să postați un mesaj pe thread-ul aferent de pe [[TODO-moodle-forum|forum]];​+  * Dacă sunt probleme, puteți să postați un mesaj pe thread-ul aferent de pe [[https://​curs.upb.ro/​2025/​mod/​forum/​view.php?​id=77332|forum]];
  
 === Predarea (upload-ul) soluției === === Predarea (upload-ul) soluției ===
Line 124: Line 129:
   - Rezultatul este o arhivă semnată în directorul în care invocați comanda (''​$PWD''​).   - Rezultatul este o arhivă semnată în directorul în care invocați comanda (''​$PWD''​).
   - Folosind utilitarul ''​scp'',​ copiați acest fișier pe stația voastră locală (atenție să nu încurcați directoarele și să copiați o arhivă veche / salvată în altă parte!). Dacă sunteți conectat la OpenStack prin serverul intermediar ''​fep.grid.pub.ro'',​ va trebui să copiați mai întâi acolo, apoi s-o preluați pe stația voastră de lucru (alternativ,​ puteți folosi funcționalitatea de ''​JumpHost''​ (opțiunea ''​-J''​) a clientului ''​scp''​ pentru o conexiune directă).   - Folosind utilitarul ''​scp'',​ copiați acest fișier pe stația voastră locală (atenție să nu încurcați directoarele și să copiați o arhivă veche / salvată în altă parte!). Dacă sunteți conectat la OpenStack prin serverul intermediar ''​fep.grid.pub.ro'',​ va trebui să copiați mai întâi acolo, apoi s-o preluați pe stația voastră de lucru (alternativ,​ puteți folosi funcționalitatea de ''​JumpHost''​ (opțiunea ''​-J''​) a clientului ''​scp''​ pentru o conexiune directă).
-  - Încărcați arhiva pe [[TODO-moodle|Assignment Tema 2]] (Moodle).+  - Încărcați arhiva pe [[https://​curs.upb.ro/​2025/​mod/​assign/​view.php?​id=77330|Assignment Tema 2]] (Moodle).
  
 <note important>​Este **obligatoriu** ca rezolvarea exercițiilor să se facă în mod persistent. La o repornire a mașinii virtuale, rezolvările trebuie să rămână active, altfel puteți întâmpina dificultăți la o revenire ulterioară asupra temei. <note important>​Este **obligatoriu** ca rezolvarea exercițiilor să se facă în mod persistent. La o repornire a mașinii virtuale, rezolvările trebuie să rămână active, altfel puteți întâmpina dificultăți la o revenire ulterioară asupra temei.
Line 179: Line 184:
 ==== Discuții legate de temă ==== ==== Discuții legate de temă ====
  
-Toate discuțiile legate de probleme/​întrebări/​exerciții din tema de RL trebuie puse pe [[TODO-moodle-forum|forumul temei]].+Toate discuțiile legate de probleme/​întrebări/​exerciții din tema de RL trebuie puse pe [[https://​curs.upb.ro/​2025/​mod/​forum/​view.php?​id=77332|forumul temei]].
 Reguli de utilizare ale acestui forum: Reguli de utilizare ale acestui forum:
  
Line 238: Line 243:
 === Ex. 2 [15p] Adresare IPv6 === === Ex. 2 [15p] Adresare IPv6 ===
  
-  - Configurați adrese IPv6 pentru toate echipamentele din rețeaua ''​VLAN10''​ și ''​VLAN6''​ (notă: ​variabila ​''​$VLANID'' ​va avea valoarea 10respectiv 6, cu zero-uri în față până la completarea segmentului de 16 biți): +  - Configurați adrese IPv6 pentru toate echipamentele din rețeaua ''​VLAN10''​ și ''​VLAN6''​ (notă: ​considerați variabilele ​''​$A'', ​''​$B''​ etc. + ''​$VLANID''​ literal ​-- adică le interpolați direct ca text, i.e. considerându-le ca fiind deja scrise în hexazecimale): 
-    * Folosiți spațiul ''​2025:​B3H3:​$B:​$A:​$VLANID::/​112''​.+    * Folosiți spațiul ''​2025:​B3F3:​$B:​$A:​$VLANID::/​112''​.
     * Aceeași ordine de asignare ca la IPv4.     * Aceeași ordine de asignare ca la IPv4.
   - Configurați conectivitate IPv6 între ''​Italy''​ și ''​host'':​   - Configurați conectivitate IPv6 între ''​Italy''​ și ''​host'':​
Line 276: Line 281:
  
   * Configurați **filtrarea** de pachete pe rutere (alegeți echipamentul potrivit, după caz), astfel:   * Configurați **filtrarea** de pachete pe rutere (alegeți echipamentul potrivit, după caz), astfel:
 +    * blocați pachetele ''​telnet''​ de la ''​Dani''​ și ''​Ionut''​ spre ''​Carabinieri'';​
     * pe echipamentul ''​Italy'':​ blocați toate pachetele TCP + UDP pe porturile destinație ''​6000-7999''​ (trebuie să blocați atât pachetele destinate, cât și cele ce tranzitează ruterul!);     * pe echipamentul ''​Italy'':​ blocați toate pachetele TCP + UDP pe porturile destinație ''​6000-7999''​ (trebuie să blocați atât pachetele destinate, cât și cele ce tranzitează ruterul!);
-      * ca **excepție**,​ permiteți traficul de pe portul ''​6900 + $D''​!+      * ca **excepție**,​ permiteți traficul de pe portul ''​6900 + $C''​!
     * blocați TOATE conexiunile spre stația ''​Jilava'',​ mai puțin protocoalele ''​icmp'',​ ''​ssh''​ și ''​smtp''​ (vor fi necesare la alte exerciții);​     * blocați TOATE conexiunile spre stația ''​Jilava'',​ mai puțin protocoalele ''​icmp'',​ ''​ssh''​ și ''​smtp''​ (vor fi necesare la alte exerciții);​
       - **atenție**:​ NU blocați conexiunile inițiate de ''​Jilava''​ **și nici răspunsurile** serverelor la acestea => Folosiți reguli **stateful** (i.e. connection tracking)!       - **atenție**:​ NU blocați conexiunile inițiate de ''​Jilava''​ **și nici răspunsurile** serverelor la acestea => Folosiți reguli **stateful** (i.e. connection tracking)!
Line 283: Line 289:
 === Ex. 6 [10p] Network Address Translation === === Ex. 6 [10p] Network Address Translation ===
  
-  * Configurați reguli de **DNAT** pe sistemele ''​Napoli''​ și ''​host''​ (după caz), astfel: +  * Configurați reguli de **DNAT** pe sistemele ''​Italy''​ și ''​host''​ (după caz), astfel: 
-    * Conexiunile pe ''​host''​ la portul ''​(18000 + $H)''​ să conducă la conectarea pe serverul web al sistemului ''​Jilava''​. +    * Conexiunile pe ''​host''​ la portul ''​(18000 + $H)''​ să conducă la conectarea pe serverul web al sistemului ''​Romania''​. 
-    * Conectarea pe ''​Italy''​ la portul ''​(8000 + $J)''​ să conducă la conectarea la ''​telnet''​-ul pe sistemul ''​Carabinieri'',​ însă DOAR DE LA SISTEMUL ''​Jilava''​.+    * Conectarea pe ''​Italy''​ la portul ''​(8000 + $J)''​ să conducă la conectarea la ''​ssh''​-ul pe sistemul ''​Ionut'',​ însă DOAR DE LA SISTEMUL ''​Jilava''​.
     * **Sfat**: aveți grijă cum testați: DNAT-ul va funcționa DOAR dacă veniți dintr-o rețea externă (e.g., un ruter din altă direcție rețelei vizate)!     * **Sfat**: aveți grijă cum testați: DNAT-ul va funcționa DOAR dacă veniți dintr-o rețea externă (e.g., un ruter din altă direcție rețelei vizate)!
-  * Faceți reguli de **SNAT** astfel încât, la conectarea (expedierea mesajelor) de pe sistemul ''​Carabinieri''​ către trackerele (ascunse) ale stațiilor ''​Dani''​ și ''​Ionut'',​ IP-ul sursă ​ale acesteia ​să fie ascuns (nu contează ruterul pe care faceți asta). NU faceți translatare de sursă la alte porturi decât cele vizate (i.e., ale trackerelor)!+  * Faceți reguli de **SNAT** astfel încât, la conectarea (expedierea mesajelor) de pe sistemul ''​Carabinieri''​ către trackerele (ascunse) ale stațiilor ''​Dani''​ și ''​Ionut'',​ IP-ul sursă ​al cererilor ​să fie ascuns/​înlocuit ​(nu contează ruterul ​de pe care faceți asta). NU faceți translatare de sursă la alte porturi decât cele vizate (i.e., ale trackerelor)!
  
 === Ex. 7 [10p] Chei SSH === === Ex. 7 [10p] Chei SSH ===
  
-  * Configurați cheile publice ale utilizatorilor ''​student''​ de pe echipamentele ''​Dani''​ și ''​Ionut'',​ astfel încât autentificarea acestora pe contul ''​facultate@Jilava''​ să se facă fără parolă;+  * Configurați cheile publice ale utilizatorilor ''​student''​ de pe echipamentele ''​Dani''​ și ''​Ionut'',​ astfel încât autentificarea acestora pe contul ''​student@Jilava''​ să se facă fără parolă;
   * Similar, faceți ca autentificarea de pe contul ''​root@Carabinieri''​ la ''​root@Dani''​ și ''​root@Ionut''​ să se facă cu chei publice, fără parolă!   * Similar, faceți ca autentificarea de pe contul ''​root@Carabinieri''​ la ''​root@Dani''​ și ''​root@Ionut''​ să se facă cu chei publice, fără parolă!
   * Folosind [[https://​collectiveidea.com/​blog/​archives/​2011/​02/​04/​how-to-ssh-aliases/​|alias-uri SSH]], configurați următoarele:​   * Folosind [[https://​collectiveidea.com/​blog/​archives/​2011/​02/​04/​how-to-ssh-aliases/​|alias-uri SSH]], configurați următoarele:​
-    * de pe ''​Dani''​ și ''​Ionut'',​ din contul ''​student''​ al fiecăruia, comanda ''​ssh facultate''​ să ducă către ''​facultate@Jilava'';​+    * de pe ''​Dani''​ și ''​Ionut'',​ din contul ''​student''​ al fiecăruia, comanda ''​ssh facultate''​ să ducă către ''​student@Jilava'';​
     * de pe sistemul ''​Carabinieri'',​ ca ''​root'',​ ''​ssh dani''​ și ''​ssh ionut''​ să ducă către ''​root@Dani'',​ respectiv ''​root@Ionut'';​     * de pe sistemul ''​Carabinieri'',​ ca ''​root'',​ ''​ssh dani''​ și ''​ssh ionut''​ să ducă către ''​root@Dani'',​ respectiv ''​root@Ionut'';​
     * pentru a primi punctaj, este necesară autentificarea fără parolă (i.e., primele sub-task-uri să fie făcute)!     * pentru a primi punctaj, este necesară autentificarea fără parolă (i.e., primele sub-task-uri să fie făcute)!
Line 302: Line 308:
 </​note>​ </​note>​
  
-=== TODO: !!! WIP below this !!! ===+=== Ex. 8 [10p] Extradi-mail ​===
  
-  * Lorem ipsum...+  * Creați, pe sistemul ''​Jilava'',​ un script: ''/​root/​scripts/​request-extradition''​ care, la rulare, trimită către ''​polizia@Napoli''​ câte un email (per rulare) de forma (aproximativă):<​code>​ 
 +From: admin@Jilava 
 +To: polizia@Napoli 
 +Subject: Richiesta di estradizione #<ID>
  
-=== Ex. 8 [10p] Support ticketing ===+Dear Carabinieri,​
  
-  * Creați, pe sistemul ''​Romulus'',​ scriptul ''/​home/​student/​scan-support-tickets''​ care să scanane și preia de pe serverul de IMAP al ''​Milano''​ toate mesajele ce conțin ''​Support Ticket''​ în subiect și să le trimită înapoi un reply (de pe același server, către mailul sender-ului!) de forma:<​code>​ +You are kindly requested to deliver "il famoso interprete"​ and his brother back to us with the next available flight.
-Hi,+
  
-Your ticket named '<​SUBJECT>'​ was registered as #<X>.+We almost finished all preparations for their arrival.
  
-Thank you for your patience!+Regards, 
 +National Penitenciary Administration,​ Romania
 </​code>​ </​code>​
-  ​Unde în locul lui ''<​SUBJECT>''​ să fie subiectul inițial, iar la ''<​X>''​ va fi interpolat ​un cod numeric ​unic (orice strategie se acceptă, ​e.g., nr. crescător începând cu ''#​1''​). +    ​În locul lui ''<​ID>''​ să fie un număr random ​unic fiecărei rulări!! ​(e.g., ''#​61''​). 
-    * Mesajul poate fi în orice formă, atâta timp cât conține ​informațiile cerute! +    * Mesajul poate fi în orice formă, atâta timp cât conține ​câteva fragmente din propozițiile cerute! 
-  * Scriptul poate fi realizat în orice limbaj de scripting e instalat pe stațieînsă va trebui să fie executabil direct (e.g.prin shebang)De asemeneascriptul va fi rulat din checker ​cu working directory necunoscut ​(deci nu vă bazați pe el!). +  * Pe stația ''​Dani''​faceți un script''/​root/​scripts/​mafia.sh''​care citește și apoi șterge toate mailurile de pe sistemul ''​Napoli''​ și trimite reply cu subiectul ''​Extradition request #<ID> blocked'' ​(păstrându-se ID-ul original!), iar în corpul mesajului, câte un link random de youtube, e.g.: 
-  Va trebui să vă autentificați ​pe serverul de mail (atât IMAP cât și SMTP) de pe ''​Milano'' ​cu credențialele:​ +    [[https://​www.youtube.com/​watch?​v=3_lluKG55eU]] 
-    * //​username//:​ ''​support'';​ +  * Pentru autentificare ​pe serverul de mail (atât IMAP cât și SMTP) de pe ''​Napoli''​, folosiți ​credențialele:​ 
-    * //​password//:​ ''​Pierdut$Cont1337''​ (caracterul dolar face parte din parolă, nu denotă o variabilă);​+    * //​username//:​ ''​polizia'';​ 
 +    * //​password//:​ ''​Eu;nu$d4u$Anapoi!''​ (caracterul dolar face parte din parolă, nu denotă o variabilă, semnul exclamării de la final la fel); 
 +  * Scripturile pot fi realizate în orice limbaj de scripting e instalat pe container, însă va trebui să fie executabil direct (e.g., prin shebang și drept de execuție configurat în prealabil). De asemenea, scriptul va fi rulat din checker cu working directory necunoscut (probabil din ''/​root'',​ dar NU VĂ BAZAȚI PE EL!).
  
-=== Ex. 9 [10p] Serviciu de sincronizare automată ​===+=== Ex. 9 [10p] Transfer Cultural ​===
  
-  * Pe ''​Remus''​realizați un script la ''/​home/​student/​scripts/​auto-backup''​ care să sincronizeze automat fișiere ​locale către remote, cu următorii parametri+  * Pentru ca Dani și Ionuț să aibe condiții premium de cazare, avem nevoie de următorul setup: 
-    * recursivdin directorul ​''/​home/​student/​Documents/'' ​(de pe ''​Remus''​) către serverul+calea ​''​Roma:/var/remus-backup/''​! +  * Așadar, pe ''​Jilava''​realizați un script la ''/​home/​student/​scripts/​auto-release-albums.sh''​ care să sincronizeze automat fișiere ​noi, cu următoarele caracteristici
-    * a se păstra structura directoarelor,​ începând cu rădăcina (e.g., ''​~/​Documents/ceva/test''​ să ajungă la ''/​var/​remus-backup/ceva/test''​);​ +    * Sursăde pe ''​Jilava'': ​''/​home/​student/​Music/''​
-    * ignorați (i.e., nu copiați!) fișierele ascunse (cele cu ''​.''​) ​la sursă ​sau cele care conțin ''​VIRUS'' ​în denumire;+    * Destinație: ​''​Italy:/var/www/export/''​! 
 +    * a se păstra structura directoarelor,​ începând cu rădăcina (e.g., ''​~/​Music/mafia/sa_ma_feresc.mp3''​ să ajungă la ''/​var/​www/export/mafia/​sa_ma_feresc.mp3''​ pe ''​Italy''​);​ 
 +    * ignorați ​la sursă ​(i.e., nu copiați ​deloc!) fișierele ascunse (cele cu ''​.''​) sau cele care conțin ​următoarele substring-uri în denumirea fișierului: ​''​garda''​, ''​politia'',​ ''​cyka'',​ ''​salam''​ (atât variante lower-case, cât și ''​C''​apitalizate);
     * NU aveți voie să modificați ownerul/​permisiunile directorului destinație (verificați-le înainte pentru a vedea cum trebuie să ajungă);     * NU aveți voie să modificați ownerul/​permisiunile directorului destinație (verificați-le înainte pentru a vedea cum trebuie să ajungă);
     * NU aveți parola de autentificare a utilizatorului țintă (defapt, nici nu are), dar tot trebuie să faceți ceva în această privință (i.e., să vă autentificați cu succes!)...     * NU aveți parola de autentificare a utilizatorului țintă (defapt, nici nu are), dar tot trebuie să faceți ceva în această privință (i.e., să vă autentificați cu succes!)...
-  * Folosi un utilitar eficient! un fișier nou apărut ar trebui ​să se sincronizeze în max. 3 secunde! +  * Fișierele trebuie ​să rămână accesibile pe serverul web al ''​Italy''​ (''​http:​//Italy/​export/​...''​), folosiți un client HTTP în consolă pentru a testa lucrul acesta
-  * Scriptul va trebui să stea pornit până la primirea SIGINT/SIGKILL. La testare manuală, să îl porniți ​opriți manual... +  * Convenția de apel a scriptului (de către checker) ​+ restricțiile sunt similare ​cu cele descrise ​în exercițiul anterior.
-    * //​Comportament checker//: dacă checkerul vede că procesul ​''​auto-backup''​ este deja pornitnu va mai face lucrul acesta, însă NU va acorda punctajul (însă va face sincronizarea și verificarea,​ lăsându-vă să depanați scriptul vostru cu stdout/​stderr);​ +
-    * Dacă folosiți un infinite loop, ar trebui să vă faceți scriptul să iasă la primirea SIGTERM / SIGINT și să nu rămână agățat+
-  * Convenția de apel a scriptului (de către checker) ​este similară ​cu cea descrisă ​în exercițiul anterior.+
  
-=== Ex. 10 [Bonus - 10p] Wireguard tunnel ​===+=== Ex. 10 [Bonus - 10p] VPN ===
  
-  * Dorim să conectăm ​rețelele ''​Milano-Leonardo''​ și ''​Paris-Croissant''​ împreună printr-un tunel Wireguard: +  * Dorim să conectăm ​stațiile ''​Dani'',​ ''​Ionut''​ și ''​Romania''​ împreună printr-un tunel Wireguard ​pentru a securiza comunicarea! 
-    * Pentru ​rețeaua din tunel, folosiți spațiul ''​10.$H.$J.96/30'';​ prima adresă asignabilă este a lui Milanoiar ce-de-a doua a lui ''​Paris'';​ +    * Pentru ​adresare prin tunel, folosiți spațiul ''​10.$G.$H.0/29''; ​ordinea adreselor va fi: ''​Romania''​ (prima)''​Dani''​ (2-a) și ''​Ionut'' ​(a treia)
-    * Va trebui ​să puteți accesa adresele IP ale capetelor de tunel și de pe ''​Leonardo''​ și ''​Croissant''​+    * Trebuie ​să funcționeze:​ trafic între toți 3 direct ​pe IP-ul tunelului
-    * Denumiți interfețele de tunel ''​wg-rl'' ​la ambele capete. +    * Denumiți interfețele de tunel ''​wg-rele'' ​pe toate containerele! 
-    * Tunelul wireguard trebuie să fie persistent! (folosiți hook-uri în ''​interfaces''​).+    * Tunelul wireguard trebuie să fie persistent! (folosiți hook-uri în ''​interfaces'' ​<- recomandat / serviciu cu pornire automată, e.g., [[https://​www.redhat.com/​en/​blog/​systemd-oneshot-service|de systemd]]).
  
-=== Ex. 11 [Bonus - 15p] Pin your hair ===+=== Ex. 11 [Bonus - 15p] Dedicații anonime ​===
  
-  * Pe stația ''​Milano''​ va rula un serviciu securizat pe portul ​TCP ''​1000+$K''​ care va asculta DOAR pe adresa wireguard creată la task-ul anterior ​(checkerul îl va porni automat; pentru testare ​puteți folosi ''​nc''​ cu argumentul ​''​-l'' ​și IP-ul WireGuard ​(+ desigur, portul), trebuie să puteți trimite mesaje bidirecționale prin portul forwardat). +  * Stația lui ''​Ionut''​ va rula un serviciu securizat pe portul ​UDP ''​1800+$J''​ care va asculta DOAR pe adresa wireguard creată la task-ul anterior; pentru testare, aveți un server UDP, ''​live-dedications.py''​, în PATH (merge pornit sub orice utilizator). Cât despre client... vă descurcați ;) 
-  * Configurați DNAT pe ''​Paris''​ astfel încât să poată primi conexiuni pe portul ''​1000+$K'' ​și să le forwardeze prin tunelul Wireguard către ''​Milano''​, același port+    * NU lăsați pornit acest server în timp ce rulați checkerul! Acesta își va porni singur server pe ACELAȘI port, deci va crăpa cu eroare de port deja ocupat! 
-    * Accesul la serviciu prin ''​Paris:1000+$K''​ va trebui să fie funcțional din orice rețea! +  * Configurați DNAT pe ''​Romania''​ astfel încât să poată primi conexiuni pe același port menționat mai sus, pe care să le forwardeze prin tunelul Wireguard către ​serviciul ce ascultă pe stația ​''​Ionut''​. 
-  * **Restricție:​** este obligatoriu să folosiți DOAR iptables și/sau rutare (care ar trebui să fie deja configurată la ex. anterior) pentru a rezolva acest exercițiu, e.g., nu e voie să folosiți un serviciu auxiliar care să asculte pe portul ''​1000+$K'' ​și să redirecționeze pachetele la ''​Milano''​! +    * Accesul la serviciu prin ''​Romania:1800+$J''​ va trebui să fie funcțional din orice rețea ​(inclusiv ''​Carabinieri''​ și ''​Jilava''​)
-  * //Hint: folosiți ''​tcpdump'' ​cu încredere când nu funcționează ceva ;)+  * **Restricție:​** este obligatoriu să folosiți DOAR iptables și/sau rutare (care ar trebui să fie deja configurată la ex. anterior) pentru a rezolva acest exercițiu, e.g., nu e voie să folosiți un serviciu auxiliar care să asculte pe un port și să redirecționeze pachetele la ''​Ionut''​! 
 +  * //Hint:// folosiți ''​tcpdump'' ​pentru a vedea de ce nu se întorc reply-urile ''​;))''​ 
 +  * //Hint2:// <color white>​mai trebuie niște NAT ca la task 6!</​color>​
  
-</​ifauth>​ 
  
rl/teme/tema2.1764250209.txt.gz · Last modified: 2025/11/27 15:30 by florin.stancu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0