This shows you the differences between two versions of the page.
rl:labs:09:contents:05 [2013/11/26 15:26] razvan.deaconescu removed |
rl:labs:09:contents:05 [2023/11/05 13:08] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 06. Extindere port forwarding ==== | + | ==== 05. [5p] Accesare URL conținând caractere speciale ==== |
- | Dorim să accesăm de pe stația ''host'' stațiile ''green'' și ''blue'' prin SSH. Vom folosi: | + | Unele URL-uri pot avea caractere interpretate special în shell rezultând într-un comportament ciudat la descărcare. |
- | * portul ''20022'' de pe stația ''host'' pentru a face //port forwarding// pe portul 22 al stației ''green''; | + | |
- | * portul ''30022'' de pe stația ''host'' pentru a face //port forwarding// pe portul 22 al stației ''blue''. | + | |
- | Realizați configurarea necesară pentru această extindere de port forwarding. Verificați prin conectare de pe stația fizică pe porturile respectiv ''20022'' și ''30022'' de pe stația ''host''. | + | Pentru a evidenția acest lucru, pe stația ''host'' folosiți pentru a descărca resursa de la link-ul ''%%http://localhost/login.php?name=Lab10&email=rl@upb.ro%%'':<code bash> |
+ | root@host:~# wget http://localhost/login.php?name=Lab10&email=rl@upb.ro | ||
+ | [1] 3284 | ||
+ | root@host:~# --2013-12-05 09:02:10-- http://localhost/login.php?name=Lab10 | ||
+ | Resolving localhost (localhost)... 127.0.0.1 | ||
+ | Connecting to localhost (localhost)|127.0.0.1|:80... connected. | ||
+ | HTTP request sent, awaiting response... 200 OK | ||
+ | Length: 72 [text/html] | ||
+ | Saving to: `login.php?name=Lab10' | ||
+ | |||
+ | 100%[======================================>] 72 --.-K/s in 0s | ||
+ | |||
+ | 2013-12-05 09:02:10 (13.3 MB/s) - `login.php?name=Lab10' saved [72/72] | ||
+ | |||
+ | |||
+ | [1]+ Done wget http://localhost/login.php?name=Lab10 | ||
+ | root@host:~# | ||
+ | </code> | ||
<note tip> | <note tip> | ||
- | Pentru a afla adresele IP ale stațiilor ''green'' și ''blue'' rulați comanda de afișare a configurării interfeței ''eth0'' pe fiecare stație. Verificați, pentru siguranța, faptul că există conectivitate între ele și stația ''host''. | + | După output-ul comenzii de mai, pentru a vă reapărea prompt-ul consolei, apăsați pe ''Enter'' ca să vă reapară prompt-ul. |
</note> | </note> | ||
- | <solution -hidden> | + | Observați că procesul intră în background (linia cu ''[1] 3284'' înseamnă că a fost pornit un job). Acest lucru se întâmplă întrucât simbolul ''&'' (//ampersand//) nu este escapat și se folosește rolul său special din shell: pornirea unui proces în background. Se observă din output că este separată comanda înainte de ''&'', adică rezultă comanda ''wget http://localhost/login.php?name=Lab10''. |
- | Adăugăm cele două reguli noi pentru //port forwarding//:<code bash> | + | |
- | root@host:~# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 20022 -j DNAT --to-destination 192.168.2.2:22 | + | Ștergeți fișierul descărcat prin comanda de mai sus:<code bash> |
- | root@host:~# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 30022 -j DNAT --to-destination 192.168.3.2:22 | + | root@host:~# ls |
- | root@host:~# iptables -t nat -L PREROUTING -n -vChain PREROUTING (policy ACCEPT 0 packets, 0 bytes) | + | PacketTracer5 folder login.php?name=Lab10 |
- | pkts bytes target prot opt in out source destination | + | root@host:~# rm login.php\?name\=Lab10 |
- | 1 60 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10022 to:192.168.1.2:22 | + | root@host:~# ls |
- | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20022 to:192.168.2.2:22 | + | PacketTracer5 folder |
- | 0 0 DNAT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30022 to:192.168.3.2:22 | + | </code> |
+ | |||
+ | Folosiți [[http://steve-parker.org/sh/escape.shtml|escaping în shell]] pentru a folosi în mod corect URL-ul și pentru a descărca resursa disponibilă la acel link. | ||
+ | |||
+ | Fișierul final descărcat trebuie să arate în acest fel (să conțină //Lab10// și //rl@upb.ro//). Folosiți ''cat log<TAB>'' pentru rula comanda de mai jos, ca să obțineți //autocompletion// din partea shell-ului (''<TAB>'' înseamnă apăsarea tastei ''TAB''):<code bash> | ||
+ | root@host:~# cat login.php\?name\=Lab10\&email\=rl@upb.ro | ||
+ | <html> | ||
+ | <body> | ||
+ | |||
+ | Welcome Lab10<br> | ||
+ | Your email address is: rl@upb.ro | ||
+ | </body> | ||
+ | </html> | ||
+ | </code> | ||
+ | |||
+ | <hidden> | ||
+ | <solution> | ||
+ | Cel mai simplu este să plasăm întregul URL între apostroafe:<code bash> | ||
+ | root@host:~# wget 'http://localhost/login.php?name=Lab10&email=rl@upb.ro' | ||
</code> | </code> | ||
- | Verificăm conectivitatea către cele două noi stații de pe stația fizică:<code bash> | + | Resursa de la acel URL se va descărca în mod corect:<code bash> |
- | razvan@einherjar:~$ ssh $ADRESA_IP_MV -p 20022 | + | root@host:~# cat /var/www/login.php |
- | root@host.local's password: | + | <html> |
- | [...] | + | <body> |
- | root@green:~# | + | |
- | razvan@einherjar:~$ ssh $ADRESA_IP_MV -p 30022 | + | Welcome <?php echo $_GET["name"]; ?><br> |
- | root@host.local's password: | + | Your email address is: <?php echo $_GET["email"]; ?> |
- | [...] | + | </body> |
- | root@blue:~# | + | </html> |
</code> | </code> | ||
</solution> | </solution> | ||
+ | </hidden> |