Differences

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

Link to this comparison view

rl:teme:tema2 [2025/11/30 13:49]
florin.stancu
rl:teme:tema2 [2025/12/09 22:01] (current)
florin.stancu
Line 2: Line 2:
  
  * **Publicare**:​  * **Publicare**:​
-    * //**2025-11-31 09: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 ​''​0x10''​, respectiv ​''​0x6'' ​(i.e., constante în baza 16 ce pot fi interpolate direct în notația clasică IPv6), 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:​B3F3:​$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.
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:
-    * pe echipamentul ''​Napoli'': ​blocați pachetele ''​telnet''​ de la ''​Dani''​ și ''​Ionut''​ spre ''​Carabinieri'';​+    * 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 + $C''​!       * ca **excepție**,​ permiteți traficul de pe portul ''​6900 + $C''​!
Line 284: 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/​înlocuit (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 ===
Line 344: Line 349:
  
   * Dorim să conectăm stațiile ''​Dani'',​ ''​Ionut''​ și ''​Romania''​ împreună printr-un tunel Wireguard pentru a securiza comunicarea!   * Dorim să conectăm stațiile ''​Dani'',​ ''​Ionut''​ și ''​Romania''​ împreună printr-un tunel Wireguard pentru a securiza comunicarea!
-    * Serverul va fi ''​Romania'';​ 
     * Pentru adresare prin tunel, folosiți spațiul ''​10.$G.$H.0/​29'';​ ordinea adreselor va fi: ''​Romania''​ (prima), ''​Dani''​ (a 2-a) și ''​Ionut''​ (a treia);     * Pentru adresare prin tunel, folosiți spațiul ''​10.$G.$H.0/​29'';​ ordinea adreselor va fi: ''​Romania''​ (prima), ''​Dani''​ (a 2-a) și ''​Ionut''​ (a treia);
-    * Denumiți interfețele de tunel ''​wg-rele'' ​la ambele capete. +    ​* Trebuie să funcționeze:​ trafic între toți 3 direct pe IP-ul tunelului! 
-    * Tunelul wireguard trebuie să fie persistent! (folosiți hook-uri în ''​interfaces'' ​sau serviciu cu pornire automată [[https://​www.redhat.com/​en/​blog/​systemd-oneshot-service|de systemd]]).+    ​* Denumiți interfețele de tunel ''​wg-rele'' ​pe toate containerele! 
 +    * 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] Dedicații anonime === === Ex. 11 [Bonus - 15p] Dedicații anonime ===
  
-  * 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 ​fișierul ​''​live-dedications.py''​ în PATH (merge pornit ​ca orice utilizator).+  * 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 ;) 
 +    * 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!
   * 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''​.   * 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''​.
     * Accesul la serviciu prin ''​Romania:​1800+$J''​ va trebui să fie funcțional din orice rețea (inclusiv ''​Carabinieri''​ și ''​Jilava''​)!     * Accesul la serviciu prin ''​Romania:​1800+$J''​ va trebui să fie funcțional din orice rețea (inclusiv ''​Carabinieri''​ și ''​Jilava''​)!
Line 358: Line 364:
   * //Hint2:// <color white>​mai trebuie niște NAT ca la task 6!</​color>​   * //Hint2:// <color white>​mai trebuie niște NAT ca la task 6!</​color>​
  
-</​ifauth>​ 
  
rl/teme/tema2.1764503372.txt.gz · Last modified: 2025/11/30 13:49 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