Obslužný program tcpdump vám umožňuje zachytit pakety, které proudí vaší sítí, a pomoci tak při odstraňování problémů se sítí. Následuje několik příkladů použití tcpdump s různými volbami. Provoz je zachycován na základě zadaného filtru. Existuje celá řada možností, včetně:
Možnosti | Popis |
---|---|
-D | Vytiskněte seznam síťových rozhraní. |
-i | Určete rozhraní, na kterém chcete zachytit. |
-c | Zadejte počet přijatých paketů. |
-v, -vv, -vvv | Zvyšte úroveň detailů (výřečnost). |
-w | Zapsat zachycená data do souboru. |
-r | Číst zachycená data ze souboru. |
Instalace nástroje tcpdump
Na většině unixových/linuxových systémů nenajdete již nainstalovaný balíček tcpdump. Chcete-li nainstalovat nejnovější verzi, použijte příslušného správce balíčků ve vašem systému. Například v případě serverů CentOS/RHEL:
# yum install tcpdump
Příklady použití tcpdump pro odstraňování problémů se sítí
1. Zobrazit seznam síťových rozhraní
Chcete-li vytisknout seznam dostupných síťových rozhraní, na kterých může tcpdump zachytávat pakety:
# tcpdump -D 1.eth0 2.nflog (Linux netfilter log (NFLOG) interface) 3.nfqueue (Linux netfilter queue (NFQUEUE) interface) 4.any (Pseudo-device that captures on all interfaces) 5.lo [Loopback]
2. Snímání na konkrétním rozhraní
Jak je vidět z příkazu ‚tcpdump -D‘, pro každé síťové rozhraní se vytiskne číslo a název rozhraní. Název rozhraní nebo číslo lze zadat do -i příznak k určení rozhraní, na kterém se má zachytit. Například pro zachycení paketů na rozhraní eth0:
# tcpdump -i 1 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 01:26:51.118038 IP ec2-54-159-106-120.compute-1.amazonaws.com.48021 > geeklab.31297: Flags [S], seq 3960153353, win 26883, options [mss 1460,sac kOK,TS val 2229362922 ecr 0,nop,wscale 7], length 0 01:26:51.118072 IP geeklab.31297 > ec2-54-159-106-120.compute-1.amazonaws.com.48021: Flags [S.], seq 547340507, ack 3960153354, win 26847, optio ns [mss 8961,sackOK,TS val 5714985 ecr 2229362922,nop,wscale 7], length 0
V tomto příkladu je výstup nepřetržitý, dokud není ukončen stisknutím Ctrl + C.
3. Zachyťte pouze určitý počet paketů
Chcete-li ukončit tcpdump po přijetí určitého počtu paketů, použijte -c (count) možnost následovaná počtem paketů k přijetí. Následující příklad zachycuje dva pakety:
# tcpdump -i 1 -c 2 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 01:37:08.956549 IP 182.100.67.76.38819 > geeklab.ssh: Flags [P.], seq 542149092:542149176, ack 774431931, win 271, options [nop,nop,TS val 26493 51 ecr 6332468], length 84 01:37:08.956575 IP geeklab.ssh > 182.100.67.76.38819: Flags [.], ack 84, win 230, options [nop,nop,TS val 6332824 ecr 2649351], length 0 2 packets captured 6 packets received by filter 0 packets dropped by kernel
Jak ukazuje tento příklad, když tcpdump dokončí zachycování paketů, ohlásí následující:
- zachycené pakety :Toto je počet paketů, které tcpdump přijal a zpracoval.
- pakety přijaté filtrem :Filtr lze zadat na příkazovém řádku a tcpdump zpracuje a započítá pouze ty pakety, které odpovídají definovanému filtru.
- pakety zahozené jádrem :Toto je počet paketů, které byly zahozeny kvůli nedostatku místa ve vyrovnávací paměti. Pomocí volby -B nastavte velikost vyrovnávací paměti.
4. Zvyšte podrobnosti (výřečnost) výstupu
Chcete-li zvýšit podrobnost (výřečnost) výstupu, použijte -v možnost nebo -vv pro ještě podrobnější výstup nebo -vvv pro nejpodrobnější úroveň výstupu:
# tcpdump –i 1 –v # tcpdump –i 1 -vv # tcpdump –i 1 –vvv
5. Zachyťte data do souboru
Pomocí nástroje tcpdump s -w umožňuje zapisovat zachycená data do souboru. To umožňuje, aby byla zachycená data čtena jinými nástroji pro analýzu sítě, jako je Wireshark. Následující příklad zachycuje data do souboru s názvem capture.out:
# tcpdump –i 1 –v –c2 –w capture.out
6. čtení zachycených dat
Můžete také číst zachycená data ze souboru pomocí –r možnost:
# tcpdump –r capture_file
Několik dalších příkladů příkazu tcpdump
S tcpdump lze použít mnoho dalších voleb a argumentů. Následuje několik konkrétních příkladů výkonu nástroje tcpdump.
1. Zobrazit provoz mezi 2 hostiteli
Chcete-li zobrazit veškerý provoz mezi dvěma hostiteli (reprezentovanými proměnnými hostitel1 a hostitel2):
# tcpdump host host1 and host2
2. Zobrazit provoz pouze ze zdrojového nebo cílového hostitele
Chcete-li zobrazit provoz pouze ze zdrojového (src) nebo cílového (dst) hostitele:
# tcpdump src host # tcpdump dst host
3. Zobrazit provoz pro konkrétní protokol
Zadejte protokol jako argument pro zobrazení pouze provozu pro konkrétní protokol, například tcp, udp, icmp, arp:
# tcpdump protocol
Například pro zobrazení provozu pouze pro provoz TCP:
# tcpdump tcp
4. Filtrování na základě zdrojového nebo cílového portu
Chcete-li filtrovat na základě zdrojového nebo cílového portu:
# tcpdump src port ftp # tcpdump dst port http
Obslužný program tcpdump také přijímá logické operátory (AND, NOT, OR) a seskupování operátorů, což vám umožňuje vytvářet složité filtry pro zachycování síťových dat.