02. [10p] Format de pachete la translatare

Ne propunem să analizăm antetul IP al pachetelor ce sunt generate de stațiile red, green și blue și au ca destinație o rețea din Internet. Pentru acest lucru vom folosi utilitarul de captură tcpdump.

Pe stația red pornim comanda ping către 8.8.8.8.:

root@red:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=127 time=42.0 ms
[...]

Atunci când rulăm comanda tcpdump secvența de urmat este:

  1. Se rulează comanda tcpdump cu opțiunile aferente într-un terminal, activând astfel captura de pachete. Utilitarul tcpdump așteaptă acum transmiterea de pachete pe interfețele pe care ascultă.
  2. Într-un alt terminal se rulează o comandă specifică unui client de rețea care generează trafic.
  3. Se revine în terminalul în care rulează comanda tcpdump și se urmăresc pachetele capturate.
  4. Când nu mai este nevoie de utilitarul tcpdump se întrerupe captura de pachete folosind combinația de taste Ctrl+c.

Pentru a urmări traficul, pe stația host rulăm comanda

root@host:~# tcpdump -i eth0 ip dst host 8.8.8.8
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:59:20.976707 IP host.local > google-public-dns-a.google.com: ICMP echo request, id 625, seq 6, length 64
12:59:21.977708 IP host.local > google-public-dns-a.google.com: ICMP echo request, id 625, seq 7, length 64

(click pentru expandare) Detalii rulare masina virtuala VMware local

(click pentru expandare) Detalii rulare masina virtuala VMware local

După rularea comenzii de mai sus, probabil vi se va bloca terminalul. În mașina virtuală VMware apare o mini-fereastră care vă indică intrarea plăcii de rețea în modul promiscuous. Apăsați pe butonul OK al ferestrei pentru a debloca mașina virtuală și, astfel, terminalul.

Observăm că adresa IP sursă este host.local chiar dacă stația red este cea care execută comanda ping și generează pachetele de tip ICMP echo request.

Pentru a vedea pachetele așa cum sunt generate inițial, rulăm comandă tcpdump pe interfața veth-red în loc de eth0:

root@host:~# tcpdump -i veth-red ip dst host 8.8.8.8
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on veth-red, link-type EN10MB (Ethernet), capture size 65535 bytes
13:01:12.557692 IP red > google-public-dns-a.google.com: ICMP echo request, id 626, seq 6, length 64
13:01:13.559726 IP red > google-public-dns-a.google.com: ICMP echo request, id 626, seq 7, length 64

Observăm că pe interfața veth-red adresa IP sursă este adresa stației red, adică așa cum este generat de la început pachetul. Motivul este reprezentat de faptul că pachetele ce intră pe intefața veth-red sunt capturate înainte de rutare, iar procesul NAT este aplicat după rutare (vezi 01. [10p] Configurare translatare de adrese (MASQUERADE).

Pentru a vedea modul în care se translatează traficul capturăm traficul pe toate interfețele (cele de interes sunt veth-red și eth0)

root@host:~# tcpdump -i any ip dst host 8.8.8.8
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
10:23:07.632412 IP red > google-public-dns-a.google.com: ICMP echo request, id 707, seq 237, length 64
10:23:07.632430 IP host.local > google-public-dns-a.google.com: ICMP echo request, id 707, seq 237, length 64
10:23:08.633936 IP red > google-public-dns-a.google.com: ICMP echo request, id 707, seq 238, length 64
10:23:08.633954 IP host.local > google-public-dns-a.google.com: ICMP echo request, id 707, seq 238, length 64

În lista de mai sus observăm atât pachetele care sunt captuarate pe interfața veth-red (generate de stația red) cât și cele capturate pe interfața eth0 (translatate de stația host).

Capturați și pachetele de reply, care au ca sursă adresa 8.8.8.8. Folosiți șirul de argumente ip src host 8.8.8.8 pentru tcpdump.

Repetați testele de mai sus pentru stația green.

Întrucât latența DNS poate fi semnificativă, recomandăm folosirea opțiunii -n a utilitarului tcpdump, opțiune care dezactivează rezolvarea DNS. În exemplele de mai sus, nu am folosit opțiunea -n a utilitarului tcpdump pentru a identifica mai ușor numele stațiilor implicate în conversație.

rl/labs/09/contents/02.txt · Last modified: 2014/12/18 13:09 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