Differences

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

Link to this comparison view

rl:teme:tema2 [2024/11/30 13:27]
florin.stancu
rl:teme:tema2 [2025/12/13 12:22] (current)
florin.stancu
Line 2: Line 2:
  
  * **Publicare**:​  * **Publicare**:​
-    * //**2024-11-30 13:00**//+    * //**2025-12-02 11:00**//
  
  * **Termen de predare**:  * **Termen de predare**:
-    * //**2024-12-14 23:55 - <color red>​deadline HARD!</​color>​ **//+    * //**2025-12-18 23:55 - <color red>JOI seară! ​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 ;)**
-</​ifauth>​ 
  
-**Revizii: ** +</ifauth>
-    * **//​2024-12-30 13:00//:** Tema a fost lansată! //God help us//! +
-<​hidden>​ +
-    * **//​2024-11-yy hh:mm//:** Reparat ceva +
-</hidden>+
  
 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 23: 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. 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 125 de puncte.+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).
  
 Nu este obligatorie rezolvarea tuturor exercițiilor. Exercițiile pot fi rezolvate în orice ordine, mai puțin în situația în care un exercițiu depinde de rezolvarea unui alt exercițiu (de obicei, primele 4 de stabilire a conectivității containere -- Internet). Nu este obligatorie rezolvarea tuturor exercițiilor. Exercițiile pot fi rezolvate în orice ordine, mai puțin în situația în care un exercițiu depinde de rezolvarea unui alt exercițiu (de obicei, primele 4 de stabilire a conectivității containere -- Internet).
Line 37: Line 41:
 === Pași pentru accesare OpenStack === === Pași pentru accesare OpenStack ===
  
-  * Urmăriți pașii [[:​isc:​info:​virtualmachine|de aici]].+  * Urmăriți pașii [[:​isc:​info:​virtualmachine|de la laborator sau de aici (ISC)]].
   * Link dashboard: https://​cloud.grid.pub.ro/​   * Link dashboard: https://​cloud.grid.pub.ro/​
   * Schimbați proiectul din dropdown-ul de stânga-sus al OpenStack, alegeți ''​rl_tema_prj''​ !!   * Schimbați proiectul din dropdown-ul de stânga-sus al OpenStack, alegeți ''​rl_tema_prj''​ !!
   * Ar trebui să aveți cheia publică deja importată pe ''​rl_tema_prj''​ (verificați!);​   * Ar trebui să aveți cheia publică deja importată pe ''​rl_tema_prj''​ (verificați!);​
-  * Nume imagine (de selectat la //​Sources//​):​ **RL Tema2 v2024.0**;+  * Nume imagine (de selectat la //​Sources//​):​ **RL Tema2 v2025.X** (unde X e ultima revizie);
   * Tip instanță: **m1.small** (NU aveți nevoie de mai mult, iar celelalte vor fi șterse fără notificare);​   * Tip instanță: **m1.small** (NU aveți nevoie de mai mult, iar celelalte vor fi șterse fără notificare);​
   * Puneți la VM nume cu prefixul ''​TEMA2_''​ (OBLIGATORIU! Altfel riscați să vă fie ștearsă) apoi username-ul vostru de Moodle (dacă veți avea nevoie de ajutor din partea unui asistent, să vă găsim ușor);   * Puneți la VM nume cu prefixul ''​TEMA2_''​ (OBLIGATORIU! Altfel riscați să vă fie ștearsă) apoi username-ul vostru de Moodle (dacă veți avea nevoie de ajutor din partea unui asistent, să vă găsim ușor);
   * **OBLIGATORIU:​** autentificarea cu user și parolă a fost dezactivată,​ folosiți EXCLUSIV chei publice ssh (pe care ar trebui s-o aveți deja configurată în cadrul laboratoarelor).   * **OBLIGATORIU:​** autentificarea cu user și parolă a fost dezactivată,​ folosiți EXCLUSIV chei publice ssh (pe care ar trebui s-o aveți deja configurată în cadrul laboratoarelor).
   * **NU modificați parola la conturile root / student!** Dacă vă tăiați accesul la VM din greșeală, cereți ajutorul unui asistentului preferat pe Teams ;)   * **NU modificați parola la conturile root / student!** Dacă vă tăiați accesul la VM din greșeală, cereți ajutorul unui asistentului preferat pe Teams ;)
-<note warning>​**Atenție!** **NU distrugeți instanța mașinii virtuale** până nu ați încărcat arhiva finală pe RL Checker ​și ați obținut punctajul dorit (și să fiți siguri că nu veți mai avea nevoie să modificați nimic).+<note warning>​**Atenție!** **NU distrugeți instanța mașinii virtuale** până nu ați încărcat arhiva finală pe Moodle ​și ați obținut punctajul dorit (și să fiți siguri că nu veți mai avea nevoie să modificați nimic).
 </​note>​ </​note>​
  
 === Rulare în VM local === === Rulare în VM local ===
  
-  * <​color ​red>Din păcate, VM-ul local încă nu este disponibil! Stay tuned!</​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/​rl/​RL_Tema2_v2024_0_TODO.7z|de la acest URL]]** (//7GB dezarhivat//​). **TODO!!!** +  * 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//​). 
-  * VM-ul este compatibil atât cu VirtualBox (testat cu 6), cât și VMWare (testat cu Workstation >= 16). Pe Linux, poate fi rulat și prin qemu+kvm. +    ​Va trebui să vă autentificați cu username + parola contului de la universitate
-  * Va trebui să vă creați mașină virtuală nouă în hipervizorul preferat ​(VMWare / VirtualBox / etc.) și să importați fișierul ​''​vmdk'' ​(căutați pe Google documentație,​ pașii diferă în funcție de programul de virtualizare folosit).+  * 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. 
 +  * În arhivă sunt incluse ambele proiecte ce se pot deschide cu aplicația hipervizor ​(''​.vmx'' ​pentru VMware + ''​.vbox''​).
   * Accesul prin ssh cu parolă (''​student:​student''​) este activat, deoarece VM-ul rulează pe o rețea privată.   * Accesul prin ssh cu parolă (''​student:​student''​) este activat, deoarece VM-ul rulează pe o rețea privată.
   * **Atenție: Imaginea VM-ului diferă de cea a laboratorului**,​ asigurați-vă că îl folosiți pe cel corect (ar trebui să aveți scripturile cu ''​t2*''​)!   * **Atenție: Imaginea VM-ului diferă de cea a laboratorului**,​ asigurați-vă că îl folosiți pe cel corect (ar trebui să aveți scripturile cu ''​t2*''​)!
Line 96: Line 101:
     * Dacă, dintr-o greșeală, checker-ul dă rezulat pozitiv în cazul unui exercițiu rezolvat greșit nu înseamnă că se va puncta. O eventuală actualizare a checker-ul va puncta corect (însă veți fi notificați să re-verificați pe canalele obișnuite, forum și Teams).     * Dacă, dintr-o greșeală, checker-ul dă rezulat pozitiv în cazul unui exercițiu rezolvat greșit nu înseamnă că se va puncta. O eventuală actualizare a checker-ul va puncta corect (însă veți fi notificați să re-verificați pe canalele obișnuite, forum și Teams).
     * Obiectivul trebuie să fie rezolvarea corectă a enunțului. Checker-ul vine ca o confirmare (ne dorim cât mai sigură) a acelei rezolvări.     * Obiectivul trebuie să fie rezolvarea corectă a enunțului. Checker-ul vine ca o confirmare (ne dorim cât mai sigură) a acelei rezolvări.
-    * Punctajul afișat ​de RL Checker la final va fi și cel acordat în catalog la final (cu excepția cazurilor în care se trișează).+    * Punctajul afișat ​în arhiva salvată și urcată pe Moodle ​va fi și cel acordat în catalog la final (dacă acesta dat de ultima versiune a checkerului local și DOAR dacă nu s-a constatat că se trișează).
  
   * Play fair: orice tentativă de fraudare / atac la infrastructură va avea ca efect pierderea definitivă a punctajului (sau chiar repetarea materiei, în anumite cazuri), chiar dacă checkerul este //​păcălit//​ :P.   * Play fair: orice tentativă de fraudare / atac la infrastructură va avea ca efect pierderea definitivă a punctajului (sau chiar repetarea materiei, în anumite cazuri), chiar dacă checkerul este //​păcălit//​ :P.
Line 117: Line 122:
 </​code>​ </​code>​
  
-  * Dacă sunt probleme, puteți să postați un mesaj pe thread-ul aferent de pe [[https://​curs.upb.ro/​2024/​mod/​forum/​view.php?​f=8654|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 [[https://​curs.upb.ro/​2024/​mod/​assign/​view.php?​id=75143|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 153: Line 158:
  
 Pentru a începe să configurați,​ verificați fișierele existente la căile ''/​etc/​network/​interfaces*''​ (mai ales ''/​etc/​network/​interfaces.d/​rl.conf''​) ​ Pentru a începe să configurați,​ verificați fișierele existente la căile ''/​etc/​network/​interfaces*''​ (mai ales ''/​etc/​network/​interfaces.d/​rl.conf''​) ​
-=> [[https://​manpages.debian.org/​bookworm/​ifupdown-ng/​interfaces.5.en.html|RTFM here ;)]].+=> [[https://​manpages.debian.org/​testing/​ifupdown-ng/​interfaces.5.en.html|RTFM here ;)]].
  
 Pentru a configura persistent **rute adiționale** (și nu numai!), puteți folosi hook-ul ''​up''​ din sintaxa de configurare ''​interfaces''​. Exemplu (fragment): <​code>​ Pentru a configura persistent **rute adiționale** (și nu numai!), puteți folosi hook-ul ''​up''​ din sintaxa de configurare ''​interfaces''​. Exemplu (fragment): <​code>​
 iface <​intf>​ iface <​intf>​
     address A.B.C.D/xx     address A.B.C.D/xx
-    up ip route add X.Y.Z.T/yy via Q.W.E.R+    ​post-up ip route add X.Y.Z.T/yy via Q.W.E.R
 </​code>​ </​code>​
  
Line 170: Line 175:
  
 <note warning> <note warning>
-NU RULAȚI ​`ifdown -ape host! VĂ VEȚI PIERDE CONECTIVITATEA PE ''​eth0''​ (deci la mașina virtuală, dacă sunteți pe OpenStack) !!!+NU RULAȚI ​''​ifdown -a'' ​pe host! VĂ VEȚI PIERDE CONECTIVITATEA PE ''​eth0''​ (deci la mașina virtuală, dacă sunteți pe OpenStack) !!!
 </​note>​ </​note>​
  
-**Pentru a salva regulile ''​iptables''​**,​ urmați pașii de aici: https://www.serveracademy.com/courses/linux-fundamentals/​how-to-save-iptables-rules-permanently/ ​(există mai multe modalități,​ e.g. puteți pune hook-uri de ''​up''​ la o interfață etc.). <color red>SUB NICI O FORMĂ SĂ NU INSTALAȚI PACHETELE DESCRISE DIN TUTORIALE (mai ales ''​ifupdown''​ -- vă strică VM-ul, aveți deja ''​ifupdown-ng''​!!)</​color>​.+**Pentru a salva/​restaura ​regulile ''​iptables''​**,​ urmați pașii de aici: https://devops.stackexchange.com/questions/11991/​how-to-save-and-restore-the-iptables-rule-and-configuration-from-file ​(pentru ''​iptables-restore'', ​există mai multe modalități,​ e.g. puteți pune hook-uri de ''​up''​ la o interfață etc.). <color red>SUB NICI O FORMĂ SĂ NU INSTALAȚI PACHETELE DESCRISE DIN TUTORIALE (mai ales ''​ifupdown''​ -- vă strică VM-ul, aveți deja ''​ifupdown-ng''​!!)</​color>​.
  
 <note important>​Dacă folosiți mai multe fișiere în scripturi (e.g., apelați dintr-un script alt script), folosiți căi absolute. Adică folosiți ''/​root/​scripts/​make-juju.py''​ în loc de ''​./​make-juju.py''​ pentru a nu se baza pe directorul actual de lucru (''​working directory''​). NU uitați să le faceți executabile și să includeți shebang-ul!</​note>​ <note important>​Dacă folosiți mai multe fișiere în scripturi (e.g., apelați dintr-un script alt script), folosiți căi absolute. Adică folosiți ''/​root/​scripts/​make-juju.py''​ în loc de ''​./​make-juju.py''​ pentru a nu se baza pe directorul actual de lucru (''​working directory''​). NU uitați să le faceți executabile și să includeți shebang-ul!</​note>​
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 [[https://​curs.upb.ro/​2024/​mod/​forum/​view.php?​f=8654|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 200: Line 205:
 === Topologie & infrastructură === === Topologie & infrastructură ===
  
-În topologie aveți ​ruterele ​''​host''​ (fiind VM-ul care găzduiește toată infrastructura),​ ''​Roma'',​ ''​Paris''​ și ''​Milano'';​ stațiile ''​Romulus''​ și ''​Remus''​ sunt conectate la ''​Roma'' ​printr-un bridge virtual pe router ​(în VLAN-urile ''​VLAN4''​ respectiv ​''​VLAN5''​ -- porturile sunt deja configurate); ​adițional, ruterul ''​Milano''​ este conectat tot la ''​VLAN5'' ​(deci partajează rețeaua cu ''​Remus''​); ''​Leonardo'' ​este la ''​Milano'', ​iar ''​Croissant'' ​la ''​Paris''​.+În topologie aveți ​VM-ul denumit ​''​host''​ (ce găzduiește toată infrastructura), ​apoi ruterele containerizate ​''​Italy'',​ ''​Romania''​ și ''​Napoli''​ conectate toate la ''​host'';​ stațiile ''​Dani''​ și ''​Ionut''​ sunt conectate ​printr-un bridge virtual ​la ''​Italy''​ (în VLAN-ul ''​VLAN10''​ -- porturile sunt deja configurate ​pe un container-switch special); similar, ruterul ''​Napoli''​ este conectat tot la același bridge în ''​VLAN6''​; stația ''​Carabinieri'' ​este aflată în spatele ruterului ​''​Napoli'',​ iar ''​Jilava''​ la ''​Romania''​. Vedeți în topologie toate numele interfețelor virtuale pe Linux (urmează diferite tipare, e.g., ''​to-*'' ​spre alte echipamente, ​''​port-*'' ​pentru bridge-uri, unele poartă denumiri mai unice).
  
-Pentru a accesa un echipament, folosiți comanda de la laborator: ''​go ​NUME_ECHIPAMENT''​ (atenție: numele este case-sensitive!). ​Dați ''​docker ps''​ pentru a vedea denumirea containerelor (și eliminați prefixul ''​mn.''​ pentru a obține denumirea folosibilă prin ''​go''​).+Pentru a accesa un echipament, folosiți comanda de la laborator: ''​go ​<​Echipament>​''​ (**atenție**: numele este case-sensitive!). ​Hint: dați ''​docker ps''​ pentru ​a verifica corectitudinea pornirii VM-ului și a vedea denumirea containerelor (și eliminați prefixul ''​mn.''​ pentru a obține denumirea folosibilă prin ''​go''​).
  
-{{:rl:teme:tema2_topology_2024.png?600}}+{{:rl:teme:tema2_topology_2025.png?600}}
  
 <note important>​Va trebui să realizați **primele 4** exerciții în ordine. Întrucât aceste exerciții oferă, în final, conectivitate la Internet, restul vor depinde de acestea!</​note>​ <note important>​Va trebui să realizați **primele 4** exerciții în ordine. Întrucât aceste exerciții oferă, în final, conectivitate la Internet, restul vor depinde de acestea!</​note>​
Line 215: Line 220:
 </​note>​ </​note>​
  
-  - Subnetați ​FIX (i.e., ​dimensiuni egale, maximizare nr. de stații) spațiul ''​10.$A.$B.0/24''​ și configurați cu adrese IPv4 toate legăturile din topologie ​în ordinea cerută (începând cu PRIMA adresă asignabilă), astfel+  - Subnetați ​OPTIM (i.e., ​VLSM) spațiul ''​66.$A.128.0/18'' ​pentru strict următoarele rețele + necesar adrese asignabile (adresele la rutere ​și alte echipamente auxiliare sunt deja incluse ​în calcul): 
-    * prima subrețea alocată va fi ''​VLAN4''​, asignare în ordinea: ''​Roma'',​ ''​Romulus'';​ +    * rețeaua din ''​VLAN6'':​ ''​$B'' ​echipamente;  
-    * a doua subrețea alocată va fi ''​VLAN5''​, asignare în ordinea: ''​Roma''​''​Milano''​''​Remus'';​ +    * rețeaua din ''​VLAN10'':​ ''​$C'' ​echipamente;​  
-    * a treia subrețea alocată va fi cea dintre ​''​Milano'' ​și ''​Leonardo''​ (asignare ​în această ordine); +    * rețeaua cu echipamentul ​''​Carabinieri''​''​$D'' ​echipamente;  
-    * a patra subrețea alocată va fi cea dintre ''​Paris''​ și ''​Croissant'' ​(la fel, în această ordine)+    * rețeaua cu echipamentul ​''​Jilava''​: ''​$E''​ echipamente;​  
-  - Subnetați OPTIM spațiul ''​172.30.$C.240/​28'' ​+ configurați echipamentele ​(''​host''​ va avea mereu prima adresă asignabilă) ​astfel: +  - SubnetațFIX (i.e., nr. rețele fixe) spațiul ​''​10.66.$B.32/​28'' ​ ​pentru a obține rețelele dintre ruterele ​(alocate fix în această ordine): 
-    * o rețea ​între ''​host''​ și ''​Roma''​+    * rețeaua dintre ''​host''​ și ''​Italy'';​ 
-    * cealaltă ​(ultima rămasă)''​host'' ​și ''​Paris''​.+    * rețeaua dintre ''​host''​ ș''​Napoli'';​ 
 +    * rețeaua dintre ​''​host'' ​și ''​Romania'';​ 
 +  - Configurați adresele IPv4 între TOATE echipamentele ​prevăzute mai sus; este OBLIGATORIU să urmați aceste convenții:​ 
 +    * ''​host''​ va avea mereu prima adresă asignabilă ​(în rețeaua cu celelalte rutere); 
 +    * echipamentele non-rutere sau rutere secundare dintr-o rețea ​vor începe consecutiv cu a doua adresă asignabilă,​ apoi a treia (dacă mai este cazul) etc.
 +    * La ''​VLAN10'',​ ruterul ​(pe portul trunk al acestuia) va avea prima adresă, apoi Dani pe a doua iar Ionuț pe următoarea (ce-a de-a treia)
 +    * La ''​VLAN6''​''​Italy'' ​va deține prima adresă (fiind considerat ruterul //​master//​),​ apoi ce-a de-a doua atribuită lui ''​Napoli'';​
   - Configurați rutarea IPv4 (default GWs și/sau rute statice) astfel încât toate stațiile să se poată accesa unele pe altele prin adresă IP!   - Configurați rutarea IPv4 (default GWs și/sau rute statice) astfel încât toate stațiile să se poată accesa unele pe altele prin adresă IP!
 +    * folosiți CEA MAI SCURTĂ RUTĂ spre o destinație (//for now//)!
  
 <​note>​Denumirea interfețelor pe Linux este similară ca în toplogia de mai sus, cu precizarea că sub-interfețele de pe router ce trebuiesc configurate au forma ''<​intf>​.<​vlan_id>''​ (cele cu ''​port-<​X>''​ de pe switch sunt doar Layer 2 și pot fi ignorate). NU stricați VLAN ID-urile / redenumiți interfețele bridge-ului!</​note>​ <​note>​Denumirea interfețelor pe Linux este similară ca în toplogia de mai sus, cu precizarea că sub-interfețele de pe router ce trebuiesc configurate au forma ''<​intf>​.<​vlan_id>''​ (cele cu ''​port-<​X>''​ de pe switch sunt doar Layer 2 și pot fi ignorate). NU stricați VLAN ID-urile / redenumiți interfețele bridge-ului!</​note>​
  
-<note warning><​color red>​**Atenție mare**:</​color>​ adresa IP de pe ''​eth0''​ a sistemului ''​host''​ este asignată dinamic de către hipervizor, prin DHCP; NU vă atingeți (//never go full ifdown!//) de această interfață,​ altfel riscați să vă pierdeți accesul la VM!</​note>​+<note warning><​color red>​**Atenție mare**:</​color>​ adresa IP de pe ''​eth0''​ a sistemului ''​host''​ este asignată dinamic de către hipervizor, prin DHCP; NU vă atingeți (//never go full ifdown!//) de această interfață,​ altfel riscați să vă pierdeți accesul la VM (deși există un daemon care vi-l restabilește,​ nu vă bazați că e foolproof)!</​note>​
  
 === Ex. 2 [15p] Adresare IPv6 === === Ex. 2 [15p] Adresare IPv6 ===
  
-  - Configurați adrese IPv6 pentru rețeaua ''​VLAN4''​ și ''​VLAN5''​ (notă: ​variabila ​''​$VLANID'' ​va avea valoarea 4respectiv 5, 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 ''​2024:baba:​$B:​$A:​$VLANID::/​96''​.+    * 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 ''​Roma''​ și ''​host'':​ +  - Configurați conectivitate IPv6 între ''​Italy''​ și ''​host'':​ 
-    * Folosiți spațiul ''​fdee:dada:$C:$D::/64''​. +    * Folosiți spațiul ''​3F66:ABBA:$C:$D::/96''​. 
-    * Prima adresă asignabilă este pentru ''​host'',​ a doua a lui ''​Roma''​.+    * Prima adresă asignabilă este pentru ''​host'',​ a doua a lui ''​Italy''​.
   - Configurați rutarea IPv6 pentru a permite comunicarea între toate sistemele cu adresă IPv6.   - Configurați rutarea IPv6 pentru a permite comunicarea între toate sistemele cu adresă IPv6.
-  - //​Atenție//:​ echipamentele ''​Leonardo'',​ ''​Paris''​ și ''​Croissant''​ **NU** vor avea adresă IPv6!+  - //​Atenție//:​ echipamentele ''​Carabinieri'',​ ''​Romania''​ și ''​Jilava''​ **NU** vor avea adresă IPv6!
  
 === Ex. 3 [5p] Hosts === === Ex. 3 [5p] Hosts ===
  
-  * Realizați configurațiile necesare astfel încât echipamentele să poată fi accesate prin numele lor (folosiți numele ''​host'',​ ''​Roma'',​ ''​Milano'',​ ''​Paris'',​ ''​Romulus'',​ ''​Remus'',​ ''​Leonardo''​ și ''​Croissant''​ - atenție la MAJUSCULE!). Adăugați intrări doar pentru adresele IPv4.+  * Realizați configurațiile necesare astfel încât echipamentele să poată fi accesate prin numele lor (folosiți numele ''​host'',​ ''​Italy'',​ ''​Napoli'',​ ''​Romania'',​ ''​Dani'',​ ''​Ionut'',​ ''​Carabinieri''​ și ''​Jilava''​ - atenție la MaJuScUlE!). Adăugați intrări doar pentru adresele IPv4.
  
 <​note>​ <​note>​
Line 263: Line 275:
 <​note>​ <​note>​
 Fișierul ''​resolv.conf''​ este gestionat ca volum de către Docker :( Fișierul ''​resolv.conf''​ este gestionat ca volum de către Docker :(
-... aceeași poveste ca la exercițiul anterior => aceeași soluție (e.g., faceți un fișier ''/​etc/​resolv.conf.orig''​ pe care îl veți suprascrie peste ''/​etc/​resolv.conf''​ cu un hook pe ''​up ​cat ...''​ din fișierele ​interfaces).+... aceeași poveste ca la exercițiul anterior => aceeași soluție (e.g., faceți un fișier ''/​etc/​resolv.conf.orig''​ pe care îl veți suprascrie peste ''/​etc/​resolv.conf''​ cu un hook pe ''​up ...''​ din configurația ''​interfaces''​).
 </​note>​ </​note>​
  
-=== Ex. 5 [10p] Network Address Translation ​===+=== Ex. 5 [10p] Filtrare pachete (iptables)  ​===
  
-  * Configurați ​reguli de **DNAT** pe sistemele ''​Roma''​ și/sau ''​host''​ (după caz), astfel: +  * Configurați **filtrarea** de pachete ​pe rutere (alegețechipamentul potrivit, ​după caz), astfel: 
-    * Conexiunile pe ''​Roma''​ la porturile  ​''​(24000 + $E)''​''​(24000 + $F)'' ​și ''​(24000 + $G)'' ​să conducă la conectarea ssh pe sistemele ​''​Romulus''​''​Remus'' ​respectiv ​''​Leonardo''​. +    * blocați pachetele ​''​telnet'' ​de la ''​Dani'' ​și ''​Ionut'' ​spre ''​Carabinieri''​
-    * Conectarea pe ''​host'' ​la portul ​''​(9000 + $K)'' ​să conducă la conectarea pe tracker-ul de pe sistemul ​''​Milano''​. +    * 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!);​ 
-  * **Sfat**: aveți grijă cum testați: DNAT-ul va funcționa DOAR dacă veniți dintr-o rețea externă ruterului ​(e.g., ''​host''​ sau ''​Paris''​ vs ''​Roma''​)!+      * 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);​ 
 +      ​- ​**atenție**: NU blocați conexiunile inițiate de ''​Jilava''​ **șnici răspunsurile** serverelor la acestea => Folosiți reguli **stateful** ​(i.e. connection tracking)!
  
-=== Ex. 6 [10p] Filtrare pachete (iptables)  ​===+=== Ex. 6 [10p] Network Address Translation ​===
  
-  * Configurați **filtrarea** de pachete ​pe ''​Roma'' ​/ ''​Paris''​ / ''​Milano''​ (după caz) astfel ​încât+  * Configurați ​reguli de **DNAT** pe sistemele ​''​Italy'' ​și ''​host''​ (după caz)astfel: 
-    * conexiunile SMTP și Telnet inițiate de pe sistemul ​''​Remus'' ​în afara rețelei lui să fie blocate //(inclusiv către alte rutere!)//; +    * Conexiunile ​pe ''​host''​ la portul ''​(18000 + $H)''​ să conducă la conectarea pe serverul web al sistemului ''​Romania''​. 
-    * conexiunile către tracker-ul ce rulează ​pe sistemul ''​Milano'' ​**să nu** fie permise de la ''​Croissant''​. +    * Conectarea pe ''​Italy''​ la portul ''​(8000 + $J)''​ să conducă la conectarea la ''​ssh''​-ul pe sistemul ''​Ionut''​, însă DOAR DE LA SISTEMUL ​''​Jilava''​. 
-    * blocați TOATE conexiunile externe (i.e., de pe IP-urile ​din afara stațieicătre ​''​Leonardo''​, mai puțin protocoalele ​''​icmp''​ și ''​ssh''​+    * **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)
-    * **atenție**: NU blocați conexiunile inițiate ​de ''​Leonardo''​ **și nici răspunsurile** de la acestea! folosiți reguli **stateful** ​(i.e. connection tracking)!+  * 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 ​serviciul de **SSH** pe sistemele ​''​Romulus''​, ''​Remus'', ​''​Leonardo''​ și ''​host''​ astfel încât autentificarea ​cu utilizatorul ​''​student'' ​de pe oricare sistem ​să fie permisă pe toate celelate sisteme (tot în cadrul utilizatorului ​''​student''​) folosind ​chei publice; +  * 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ă; 
-  * Folosind [[https://​collectiveidea.com/​blog/​archives/​2011/​02/​04/​how-to-ssh-aliases/​|alias-uri SSH]], configurați ​SSH-ul pe ''​host''​ pentru a vă putea conecta rapid folosind ​următoarele ​comenzi+  * 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ă! 
-    * ''​ssh romu'' ​să ducă către sistemul ​''​Romulus'' ​cu utilizatorul ​''​student''​+  * Folosind [[https://​collectiveidea.com/​blog/​archives/​2011/​02/​04/​how-to-ssh-aliases/​|alias-uri SSH]], configurați următoarele:​ 
-    * ''​ssh ​remu''​ să ducă către ​sistemul ''​Remus''​ cu utilizatorul ​''​student'';​ +    * de pe ''​Dani'' ​și ''​Ionut''​, din contul ​''​student'' ​al fiecăruia, comanda ​''​ssh ​facultate''​ să ducă către ''​student@Jilava'';​ 
-    * ''​ssh ​leo''​ să ducă către ​sistemul ​''​Leonardo'' ​cu utilizatorul ​''​student'';​+    * 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)!
  
 <note important>​ <note important>​
-**Atenție**:​ NU VĂ ȘTERGEȚI CHEIA AUTORIZATĂ DE LA OPENSTACK PE HOST! În mod normal, nu aveți nevoie să operați pe acest fișier la temă!+**Atenție**:​ NU VĂ ȘTERGEȚI CHEIA AUTORIZATĂ DE LA OPENSTACK ​DE PE ''​HOST''​! În mod normal, nu aveți nevoie să operați pe acest fișier la temă!
 </​note>​ </​note>​
  
-=== Ex. 8 [10p] Support ticketing ​===+=== Ex. 8 [10p] Extradi-mail ​===
  
-  * 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>​ +  * 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>​ 
-Hi,+From: admin@Jilava 
 +To: polizia@Napoli 
 +Subject: Richiesta di estradizione #<ID>
  
-Your ticket named '<​SUBJECT>'​ was registered as #<X>.+Dear Carabinieri,​
  
-Thank you for your patience!+You are kindly requested to deliver "il famoso interprete"​ and his brother back to us with the next available flight. 
 + 
 +We almost finished all preparations ​for their arrival. 
 + 
 +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+=== Ex. 10 [Bonus - 10p] VPN ===
-  * Convenția de apel a scriptului (de către checker) ​este similară ​cu cea descrisă ​în exercițiul anterior.+
  
-=== Ex. 10 [Bonus 10pWireguard tunnel ===+  * Dorim să conectăm stațiile ''​Dani'',​ ''​Ionut''​ și ''​Romania''​ împreună printr-un tunel Wireguard pentru a securiza comunicarea! 
 +    * 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); 
 +    * Trebuie să funcționeze:​ trafic între toți 3 direct pe IP-ul tunelului! 
 +    * 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]]).
  
-  * Dorim să conectăm rețelele ''​Milano-Leonardo''​ și ''​Paris-Croissant''​ împreună printr-un tunel Wireguard:​ +=== Ex11 [Bonus ​15p] Dedicații anonime ===
-    * Pentru rețeaua din tunel, folosiți spațiul ''​10.$H.$J.96/​30'';​ prima adresă asignabilă este a lui Milano, iar ce-a de-a doua a lui ''​Paris'';​ +
-    * Va trebui să puteți accesa adresele IP ale capetelor de tunel și de pe ''​Leonardo''​ și ''​Croissant''​! +
-    * Denumiți interfețele de tunel ''​wg-rl''​ la ambele capete. +
-    * Tunelul wireguard trebuie să fie persistent! (folosiți hook-uri în ''​interfaces''​).+
  
-=== Ex11 [Bonus ​15p] Pin your hair ===+  * 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''​. 
 +    * Accesul la serviciu prin ''​Romania:​1800+$J''​ va trebui să fie funcțional din orice rețea (inclusiv ''​Carabinieri''​ și ''​Jilava''​)! 
 +  * **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>​
  
-  * 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). 
-  * 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. 
-    * Accesul la serviciu prin ''​Paris:​1000+$K''​ va trebui să fie funcțional din orice rețea! 
-  * **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''​! 
-  * //Hint: folosiți ''​tcpdump''​ cu încredere când nu funcționează ceva ;) 
  
rl/teme/tema2.1732966074.txt.gz · Last modified: 2024/11/30 13:27 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