This shows you the differences between two versions of the page.
rl:labs:09:contents:03 [2013/11/17 13:28] mihai.carabas [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. Configurarea incorectă a translatării ==== | + | ==== 03. [10p] Accesare serviciu web folosind wget ==== |
- | Intrați pe stația ''red'' și executați comanda ''ping'' către stația ''green'':<code bash> | + | Sunt situații în care: |
- | root@red:~# ping green | + | * vrem doar să descărcăm o resursă, nu să accesăm o pagină web și să o parcurgem; |
- | PING green (192.168.2.2) 56(84) bytes of data. | + | * vrem să testăm serviciul web; |
- | 64 bytes from green (192.168.2.2): icmp_req=1 ttl=63 time=0.155 ms | + | * nu avem acces la o interfață grafică (pe un server sau pe o mașină virtuală) pentru accesarea web; |
- | 64 bytes from green (192.168.2.2): icmp_req=2 ttl=63 time=0.086 ms | + | * vrem să automatizăm, într-un script, procesul de acces al unor resurse în web. |
- | </code> | + | |
- | În alt terminat, intrați pe stația ''green'' și rulați comanda ''tcpdump'':<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@host:~# go green | + | |
- | [...] | + | 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//. | ||
- | Observați că sursa 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-ul 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ă. | + | <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> | ||
- | Vom șterge vechea regulă de NAT de pe stația ''host'':<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> |
- | Verificați că nu mai există:<code bash> | + | <solution> |
- | root@host:~# iptables -t nat -nvL POSTROUTING | + | <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 doar pachetelor ce se duc spre Internet, deci 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 -nvL POSTROUTING | + | 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': |
- | Observați că apare interfața ''eth0'' în coloana ''out''. Înainte apărea caracterul ''*'' ce înseamnă orice. | + | Self-signed certificate encountered. |
+ | HTTP request sent, awaiting response... 200 OK | ||
+ | Length: 1024 (1.0K) | ||
+ | Saving to: `file.dat' | ||
- | Repetați testul de mai sus și arătați că pachetele trimise de la ''red'' către ''green'' au adresele IP sursă/destinație nemodificate. | + | 100%[===================================================================================================================>] 1,024 --.-K/s in 0s |
+ | |||
+ | 2013-11-23 17:52:02 (18.2 MB/s) - `file.dat' saved [1024/1024] | ||
+ | </code> |