This shows you the differences between two versions of the page.
rl:labs:09:contents:03 [2013/11/26 10:45] razvan.deaconescu [03. Configurarea incorectă a translatării] |
rl:labs:09:contents:03 [2023/11/05 13:06] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 03. Configurare incorectă a translatării ==== | + | ==== 03. [10p] Accesare serviciu web folosind wget ==== |
- | Comanda folosită mai sus pentru translatare, la [[:rl:labs:09:contents:01]], are neajunsuri pe care le vom identifica mai jos. | + | Sunt situații în care: |
+ | * vrem doar să descărcăm o resursă, nu să accesăm o pagină web și să o parcurgem; | ||
+ | * vrem să testăm serviciul web; | ||
+ | * nu avem acces la o interfață grafică (pe un server sau pe o mașină virtuală) pentru accesarea web; | ||
+ | * vrem să automatizăm, într-un script, procesul de acces al unor resurse în web. | ||
- | Pe stația ''red'' executăm comanda ''ping'' către stația ''green'':<code bash> | + | În aceste situații, este util să folosim un client web în linie de comandă. Astfel de clienți web în linie de comandă sunt ''wget'' sau ''curl''. În general aceste utilitare sunt folosite pentru descărcarea de fișiere sau alte resurse disponibile în web. |
- | root@red:~# ping -c 2 green | + | |
- | PING green (192.168.2.2) 56(84) bytes of data. | + | |
- | 64 bytes from green (192.168.2.2): icmp_req=1 ttl=63 time=0.155 ms | + | |
- | 64 bytes from green (192.168.2.2): icmp_req=2 ttl=63 time=0.086 ms | + | |
- | [...] | + | |
- | </code> | + | |
- | Pe stația ''green'' capturăm traficul pe interfața ''eth0'' folosind comanda ''tcpdump'':<code bash> | + | Pentru a descărca fișierul HTML accesat anterior (la [[:rl:labs:09:contents:02]]) executați, pe stația ''fep.grid.pub.ro'', respectiv pe stația ''host'' (urmăriți **promptul** pentru a determina stația), comenzile de mai jos (''<adresa-ip-mv>'' o puteți obține din dashboard-ul OpenStack):<code bash> |
- | root@green:~# tcpdump -i eth0 | + | [mihai.carabas@fep-62-2 ~]$ wget http://<adresa-ip-mv>:8080 |
- | tcpdump: verbose output suppressed, use -v or -vv for full protocol decode | + | --2013-11-26 18:20:10-- http://<adresa-ip-mv>:8080/ |
- | listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes | + | Connecting to <adresa-ip-mv>:8080... connected. |
- | 11:18:54.535064 IP host > green: ICMP echo request, id 633, seq 17, length 64 | + | HTTP request sent, awaiting response... 200 OK |
- | 11:18:54.535092 IP green > host: ICMP echo reply, id 633, seq 17, length 64 | + | Length: 31 [text/html] |
- | [...] | + | Saving to: ‘index.html’ |
+ | |||
+ | 100%[======================================>] 31 --.-K/s in 0s | ||
+ | |||
+ | 2013-11-26 18:20:10 (4.92 MB/s) - ‘index.html’ saved [31/31] | ||
+ | |||
+ | [mihai.carabas@fep-62-2 ~]$ cat index.html | ||
+ | <h1>Laborator 10 - pe red</h1> | ||
+ | |||
+ | root@host:~# wget -q http://red/ | ||
+ | root@host:~# ls | ||
+ | PacketTracer5 index.html | ||
+ | root@host:~# cat index.html | ||
+ | <h1>Laborator 10 - pe red</h1> | ||
</code> | </code> | ||
+ | Avem același conținut afișat în browser-ul web grafic: șirul //Laboratorul 10 - pe red// formatat //heading 1//. | ||
- | Observăm că adresa sursă a pachetelor de tip ''ICMP echo request'' este stația ''host'', nu stația ''red''. Acest lucru se întâmplă din cauză că atunci când am activat NAT nu am specificat pentru ce tip de trafic să aplice politica de translatare. Astfel stația ''host'' aplică politica de NAT pentru tot traficul care o tranzitează. Dorim să aplicăm politica doar pentru pachetele ce **ies** în Internet, adică cele ale căror **interfață de ieșire** este interfața ''eth0''. Vom șterge vechea regulă de NAT și vom adăuga o regulă corectă. | + | <note> |
+ | În a doua comandă am folosit opțiunea ''-q'' a ''wget'' pentru a dezactiva afișarea informații legate de transfer a ''wget''. Opțiunea trebuie folosită cu grijă. Informațiile de eroare furnizate de ''wget'' sunt utile pentru depanare și sunt dezactivate la folosirea opțiunii ''-q''. | ||
+ | </note> | ||
- | Pentru ștergerea vechii reguli de NAT rulăm pe stația ''host'' comanda<code bash> | + | La adresa ''http://red/file.dat'' se află un fișier cu dimensiunea de ''1 KB''. Descărcați fișierul pe stația ''host'' folosind ''wget''. Folosiți comanda ''ls -l'' pentru a verifica descărcarea corectă și dimensiunea sa. |
- | root@host:~# iptables -t nat -D POSTROUTING -j MASQUERADE | + | |
- | </code> | + | <hidden> |
- | Verificăm faptul că nu mai există comanda<code bash> | + | <solution> |
- | root@host:~# iptables -t nat -L POSTROUTING -n -v | + | <code bash> |
- | Chain POSTROUTING (policy ACCEPT 1 packets, 328 bytes) | + | root@host:~# wget -q http://red/file.dat |
- | pkts bytes target prot opt in out source destination | + | root@host:~# ls -l file.dat |
+ | -rw-r--r-- 1 root root 1024 Nov 26 18:10 file.dat | ||
</code> | </code> | ||
+ | </solution> | ||
+ | </hidden> | ||
- | Adăugăm din nou regula de NAT, dar de data aceasta vom specifica să aplice politica de NAT pachetelor ce ies prin interfața ''eth0'' a stației ''host'':<code bash> | + | Serverul web este configurat să folosească și conexiuni sigure (protocolul HTTPS). Descărcăm fișierul de mai sus (''file.dat'') pe stația ''host'' folosind protocolul HTTPS:<code bash> |
- | root@host:~# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | + | root@host:~# wget https://red/file.dat |
+ | --2013-11-23 17:50:52-- https://red/file.dat | ||
+ | Resolving red (red)... 192.168.1.2 | ||
+ | Connecting to red (red)|192.168.1.2|:443... connected. | ||
+ | ERROR: cannot verify red's certificate, issued by `/CN=red': | ||
+ | Self-signed certificate encountered. | ||
+ | To connect to red insecurely, use `--no-check-certificate'. | ||
</code> | </code> | ||
- | Verificați că regula a fost inserată:<code bash> | + | Observăm că ni s-a afișat o eroare că nu poate fi verificat certificatul. Această verificare poate fi eliminată folosind opțiunea ''%%--%%no-check-certificate'':<code bash> |
- | root@host:~# iptables -t nat -L POSTROUTING -n -v | + | root@host:~# wget --no-check-certificate https://red/file.dat |
- | Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) | + | --2013-11-23 17:52:02-- https://red/file.dat |
- | pkts bytes target prot opt in out source destination | + | Resolving red (red)... 192.168.1.2 |
- | 0 0 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0 | + | Connecting to red (red)|192.168.1.2|:443... connected. |
- | </code> | + | WARNING: cannot verify red's certificate, issued by `/CN=red': |
- | Observăm prezența interfaței ''eth0'' în coloana ''out''. Înainte apărea caracterul ''*'', adică orice interfață. | + | Self-signed certificate encountered. |
+ | HTTP request sent, awaiting response... 200 OK | ||
+ | Length: 1024 (1.0K) | ||
+ | Saving to: `file.dat' | ||
- | Repetați testul de la începutul exercițiului și arătați că pachetele trimise de la ''red'' către ''green'' au adresele IP sursă/destinație nemodificate (nu mai fac trecerea prin NAT), în vreme ce pachetele ce ies în Internet sunt translatate. | + | 100%[===================================================================================================================>] 1,024 --.-K/s in 0s |
+ | |||
+ | 2013-11-23 17:52:02 (18.2 MB/s) - `file.dat' saved [1024/1024] | ||
+ | </code> |