Differences

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

Link to this comparison view

rl:labs:09:contents:03 [2013/11/28 08:32]
razvan.deaconescu [03. [10p] Format de pachete TCP la translatare]
rl:labs:09:contents:03 [2023/11/05 13:06] (current)
vlad_iulius.nastase
Line 1: Line 1:
-==== 03. [10p] Format de pachete TCP la translatare ​====+==== 03. [10p] Accesare serviciu web folosind wget ====
  
-Dorim să urmărim modul structura pachetelor TCP înainte și după translatarea de adrese. În plus față de exercițiul de mai susvrem să urmărim și porturile. Pentru aceasta vom genera pachete TCP (HTTP) folosind ''​wget''​ de pe stația ''​red''​ și vom captura pachetele folosind ''​tcpdump'' ​pe stația ''​host''​.+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 ''​host'' ​capturați pe toate interfețele pachetele HTTP care au ca adresă destinație numele ​''​www.upb.ro''​.+Î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.
  
-<note tip> +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> 
-Va trebuie să folosiți argumentele ​''​ip dst host www.upb.ro'' ​și ''​tcp dst port 80'' ​la ''​tcpdump''​. Legați argumentele prin șirul ​''​and''​. Urmăriți și [[http://linux-circles.blogspot.ro/​2012/​11/how-to-capture-packets-with-tcpdump.html|exemplele de aici]]+[mihai.carabas@fep-62-2 ~]$ wget http://<​adresa-ip-mv>:​8080 
-</note>+--2013-11-26 18:20:10--  ​http://<​adresa-ip-mv>:​8080/​ 
 +Connecting to <​adresa-ip-mv>:​8080... connected
 +HTTP request sent, awaiting response... 200 OK 
 +Length: 31 [text/html] 
 +Saving to: ‘index.html’
  
-Pe stația ''​red''​ folosiți ''​wget''​ pentru a obține pagina de la ''​www.upb.ro''​.+100%[======================================>​] 31          --.-K/s   in 0s      ​
  
-Urmăriți translatarea adresei IP sursă și a portului sursă în cadrul capturii de pachete realizată cu ''​tcpdump''​ pe ''​host''​.+2013-11-26 18:20:10 (4.92 MB/s) - ‘index.html’ saved [31/31]
  
-<note important>​ +[mihai.carabas@fep-62-2 ~]$ cat index.html  
-O să existe o latență (2-3 secunde) la afișarea pachetelor capturate cu ''​tcpdump''​ datorată rezolvării DNSPuteți folosi opțiunea ''​-n''​ a ''​tcpdump''​ pentru a dezactivarea rezolvarea DNS și pentru a elimina latența+<​h1>​Laborator 10 - pe red</h1>
-</note>+
  
-Observați în cadrul capturii că portul sursă, ales de stația ''​red''​ este același ​cu cel folosit în urma translatării de stația ''​host''​. În general implementările de NAT vor păstra portul ​în urma translatării. În cazul rar în care acel port este ocupat ​pe stația ''​host''​ (posibil datorită unei alte translatării) se va aloca un alt port.+root@host:​~#​ wget -q http://red
 +root@host:​~#​ ls 
 +PacketTracer5 ​  ​index.html 
 +root@host:​~#​ cat index.html  
 +<​h1>​Laborator 10 - pe red</​h1>​ 
 +</​code>​ 
 +Avem același ​conținut afișat ​în browser-ul web grafic: șirul //​Laboratorul 10 - pe red// formatat //heading 1//.
  
-Pe stația ''​host'' ​capturați pe toate interfețele pachetele HTTP care au ca adresă numele ​''​www.upb.ro''​; nu contează dacă este sursă sau destinație, capturăm și pachetele ​de interogare și cele de rășpuns; la fel, portul poate fi sursă sau destinație. Pe stația ​''​red'' ​folosiți, din nou, ''​wget''​ pentru ​a obține pagina de la ''​google.com''​. ​Urmăriți translatarea adresei IP sursă și a portului sursă pentru pachetele de interogare și translatarea adresei IP destinație și a portului destinație pentru pachetele de răspuns.+<​note>​ 
 +În a doua comandă am folosit opțiunea ''​-q'' ​''​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>​
  
-<​solution -hidden>​ +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ă șdimensiunea sa.
-Rulăm comanda ​''​tcpdump''​ pe stația ''​host'' ​și comanda ​''​wget'' ​pe stația ''​red''​:<code bash> +
-root@host:​~#​ tcpdump -any ip dst host www.upb.ro and tcp dst port 80 +
-tcpdump: verbose output suppressed, use -v or -vv for full protocol decode +
-listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes +
-16:​01:​43.895939 IP host.local.55630 > 141.85.166.61.http:​ Flags [S], seq 2218116970, win 14600, options [mss 1460,​sackOK,​TS val 25026596 ecr 0,​nop,​wscale 3], length 0 +
-16:​01:​43.899247 IP red.55630 > 141.85.166.61.http:​ Flags [.], ack 3520002, win 14600, length 0 +
-16:​01:​43.899254 IP host.local.55630 > 141.85.166.61.http:​ Flags [.], ack 3520002, win 14600, length 0 +
-16:​01:​43.899809 IP red.55630 > 141.85.166.61.http:​ Flags [P.], seq 0:110, ack 1, win 14600, length 110 +
-16:​01:​43.899817 IP host.local.55630 > 141.85.166.61.http:​ Flags [P.], seq 0:110, ack 1, win 14600, length 110 +
-[...]+
  
-root@red:~# wget www.upb.ro +<​hidden>​ 
---2013-11-23 14:03:22- http://www.upb.ro/ +<​solution>​ 
-Resolving www.upb.ro (www.upb.ro)... 141.85.166.61 +<code bash> 
-Connecting to www.upb.ro (www.upb.ro)|141.85.166.61|:80... connected. +root@host:~# wget -http://red/file.dat 
-HTTP request sent, awaiting response... 200 OK +root@host:~# ls -l file.dat  
-[...] +-rw-r--r-- 1 root root 1024 Nov 26 18:10 file.dat
-2013-11-23 14:03:22 (17.3 MB/s) - `index.html' saved [36519]+
 </​code>​ </​code>​
 +</​solution>​
 +</​hidden>​
  
-Pentru afișarea atât a pachetelor de interogare cât și a celor de răspuns, rulăm comenzile ​de mai jos:<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:​~# ​tcpdump -i any ip host www.upb.ro and tcp port 80 +root@host:​~# ​wget https://​red/​file.dat 
-[...] +--2013-11-23 17:50:52--  https://​red/​file.dat 
-16:06:25.896565 IP red.55634 > 141.85.166.61.http: Flags [P.], seq 1:111, ack 1, win 14600, length 110 +Resolving ​red (red)... 192.168.1.2 
-16:06:25.896576 IP host.local.55634 > 141.85.166.61.httpFlags [P.]seq 1:111, ack 1, win 14600, length 110 +Connecting to red (red)|192.168.1.2|:443... connected. 
-16:​06:​25.896796 IP 141.85.166.61.http > host.local.55634: Flags [.], ack 111, win 65535, length 0 +ERRORcannot verify red's certificateissued by `/​CN=red'​
-16:​06:​25.896805 IP 141.85.166.61.http > red.55634: Flags [.]ack 111, win 65535, length 0 +  ​Self-signed certificate encountered
-[...] +To connect to red insecurelyuse `--no-check-certificate'​
- +</​code>​ 
-root@red:~# wget www.upb.ro +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> 
---2013-11-23 ​14:05:36--  ​http://www.upb.ro/ +root@host:~# wget --no-check-certificate https://​red/​file.dat 
-Resolving ​www.upb.ro ​(www.upb.ro)... 141.85.166.61 +--2013-11-23 ​17:52:02--  ​https://red/file.dat 
-Connecting to www.upb.ro ​(www.upb.ro)|141.85.166.61|:80... connected.+Resolving ​red (red)... 192.168.1.2 
 +Connecting to red (red)|192.168.1.2|:443... connected
 +WARNING: cannot verify red's certificate,​ issued by `/​CN=red':​ 
 +  Self-signed certificate encountered.
 HTTP request sent, awaiting response... 200 OK HTTP request sent, awaiting response... 200 OK
-[...] +Length: 1024 (1.0K) 
-2013-11-23 ​14:05:36 (77.MB/s) - `index.html.1' saved [36519]+Saving to: `file.dat' 
 + 
 +100%[===================================================================================================================>​1,024       ​--.-K/​s ​  in 0s 
 + 
 +2013-11-23 ​17:52:02 (18.MB/s) - `file.dat' saved [1024/1024]
 </​code>​ </​code>​
-</​solution>​ 
rl/labs/09/contents/03.1385620374.txt.gz · Last modified: 2013/11/28 08:32 by razvan.deaconescu
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