This is an old revision of the document!
Ne propunem 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 [...]
Pentru a urmări traficul, pe stația host
rulăm comanda
root@host:~# tcpdump -i eth0 ip dst 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
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 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. [15p] Observare porturi deschise pe o stație.
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 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 8.8.8.8
pentru tcpdump
.
Repetați testele de mai sus pentru stația green
.
-n
a utilitarului tcpdump
, opțiune care dezactivează rezolvara 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.
Dorim să urmărim modul structura pachetelor TCP înainte și după translatarea de adrese. În plus față de exercițiul de mai sus, vrem 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
.
Pe stația host
capturați pe toate interfețele pachetele HTTP care au ca adresă destinație numele google.com
.
ip dst google.com
și tcp dst port 80
la tcpdump
. Legați argumentele prin șirul and
. Urmăriți și exemplele de aici.
Pe stația red
folosiți wget
pentru a obține pagina de la google.com
.
Urmăriți translatarea adresei IP sursă și a portului sursă în cadrul capturii de pachete realizată cu tcpdump
pe host
.
Pe stația host
capturați pe toate interfețele pachetele HTTP care au ca adresă numele google.com
(nu contează dacă este sursă sau destinație, capturăm și pachetele de interogare și cele de rășpuns). 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.