Tcpdump
Fra GNUskole
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

