Tcpdump

Fra GNUskole
Hopp til: navigasjon, søk

Elementær bruk

Med tcpdump kan man sniffe rett på nettverkskortet for å se hvilken trafikk som går. Svært nyttig om man må feilsøke routing, NAT og andre kompliserte ting. Men syntaxen til tcpdump kan få alle og enhvær til å steile... Her er noen triks:

Bruke ifconfig til å finne hvilke nettverkskort man har:

[root@server ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 01:28:C3:13:95:28
          inet addr:10.0.1.10  Bcast:10.0.1.255  Mask:255.255.255.0
          inet6 addr: fe80::218:f3ff:fe03:95e8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:168629982 errors:0 dropped:0 overruns:0 frame:0
          TX packets:201786531 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:640652085 (610.9 MiB)  TX bytes:3971715319 (3.6 GiB)
          Interrupt:17 Base address:0xc000

[...]

I tillegg vil du ha "nettverkskortet" lo som er loopback-kortet, og eventuelt andre nettverkskort. HWaddr angir MAC-adressen, som er unik for nettverkskortet, "inet addr" angir IP, "Bcast" angir Broadcast-adresse og "Mask" angir nettmasken.

For å se ALL trafikk på et nettverkskort:

tcpdump -n -i eth0

Her angir -n at ikke IP-er eller protokoller skal angis med navn, men numerisk (dette er mye kjappere), og etter -i angir man nettverkskortet.

Se trafikk med destinasjon www.google.com:

tcpdump -n -i eth0 dst www.google.com

Hvis du prøver å pinge www.google.com (i et annet vindu) vil du så se at det går trafikk ut nettverkskortet:

13:37:50.792778 IP 10.0.1.10 > 64.233.183.104: ICMP echo request, id 25413, seq 1, length 64

Du vil ikke se noen returtrafikk fordi vi har et filter på destinasjon "dst".

Se trafikk til/fra www.google.com:

tcpdump -n -i eth0 host www.google.com

Her sees både pakker til og fra google:

13:40:26.406133 IP 10.0.1.10 > 64.233.183.99: ICMP echo request, id 43845, seq 1, length 64
13:40:26.438952 IP 64.233.183.99 > 10.0.1.10: ICMP echo reply, id 43845, seq 1, length 64

Se på web-trafikk mot google.com:

tcpdump -n -i eth0 host www.google.com and port 80

Kjør wget google.com i et annet vindu, og du vil se pakkeutvekslingen.

Se på icmp og spesielle porter

For å se icmp-trafikk ("ping") kan man enkelt bare angi "icmp" som stikkord på kommandolinjen:

tcpdump -nn -i eth0 icmp

Merk de to n-ene her. Det betyr at maskinen ikke resolver IP-adresser til hostnavn, og heller ikke pornumre til tjenestenavn.

Ønsker man å se på http-trafikk kan man for eksempel gjøre:

tcpdump -nn -i eth0 port http

eller

tcpdump -nn -i eth0 port 80

Et vanlig problem er at man ønsker å sniffe på en maskin man er logget inn via ssh på. Da ønsker man IKKE å se ssh-trafikken mellom maskinen man er innlogget fra og maskinen man vil sniffe på. For å unngå dette kan man gjøre følgende, som sniffer all trafikk som IKKE er ssh:

 tcpdump -nn -i eth0 port not ssh