Försöker du fånga datapaket för att analysera trafik i ditt nätverk? Du kanske är en serveradministratör som har stött på ett problem och vill övervaka överförda data i nätverket. Oavsett situationen är Linux-verktyget tcpdump vad du behöver.
I den här artikeln kommer vi att diskutera kommandot tcpdump i detalj, tillsammans med några guider om hur du installerar och använder tcpdump på ditt Linux-system.
Vad är tcpdump-kommandot?
Tcpdump är ett kraftfullt nätverksövervakningsverktyg som gör det möjligt för en användare att filtrera paket och trafik i ett nätverk effektivt. Du kan få detaljerad information relaterad till TCP / IP och de paket som överförs i ditt nätverk. Tcpdump är ett kommandoradsverktyg, vilket innebär att du kan köra det på Linux-servrar utan en skärm.
Systemadministratörer kan också integrera tcpdump-verktyget med cron för att automatisera olika uppgifter som loggning. Eftersom dess många funktioner gör det ganska mångsidigt fungerar tcpdump som en felsökning såväl som ett säkerhetsverktyg.
Hur man installerar tcpdump på Linux
Medan du för det mesta hittar tcpdump förinstallerat på ditt system, levereras vissa Linux-distributioner inte med paketet. Därför kan du behöva installera verktyget manuellt på ditt system.
Du kan kontrollera om tcpdump är installerat på ditt system med hjälp av som kommando.
vilken tcpdump
Om utdata visar en katalogsökväg (/usr/bin/tcpdump), då har ditt system paketet installerat. Men om inte, kan du göra det enkelt med standardpakethanteraren på ditt system.
Så här installerar du tcpdump på Debian-baserade distributioner som Ubuntu:
sudo apt-get install tcpdump
Det är också enkelt att installera tcpdump på CentOS.
sudo yum installera tcpdump
På ärkebaserade distributioner:
sudo pacman -S tcpdump
Så här installerar du på Fedora:
sudo dnf installera tcpdump
Observera att paketet tcpdump kräver libcap som ett beroende, så se till att du också installerar det på ditt system.
Tcpdump-exempel för att fånga nätverkspaket på Linux
Nu när du har installerat tcpdump på din Linux-maskin är det dags att övervaka några paket. Eftersom tcpdump kräver superanvändarbehörigheter för att utföra de flesta operationerna måste du lägga till sudo till dina kommandon.
1. Lista alla nätverksgränssnitt
För att kontrollera vilka nätverksgränssnitt som finns att fånga, använder du -D flagga med kommandot tcpdump.
tcpdump -D
Passerar --list-gränssnitt flagga som argument kommer att returnera samma utdata.
tcpdump - lista-gränssnitt
Utgången kommer att vara en lista över alla nätverksgränssnitt som finns på ditt system.
Efter att ha fått listan över nätverksgränssnitt är det dags att övervaka ditt nätverk genom att fånga paket på ditt system. Även om du kan ange vilket gränssnitt du vill använda, några argument kommandon tcpdump att fånga nätverkspaket med valfritt aktivt gränssnitt.
tcpdump - gränssnitt någon
Systemet visar följande utdata.
Relaterad: Vad är modellen för sammankoppling av öppna system?
2. Tcpdump-utdataformat
Från och med den tredje raden betecknar varje rad i utgången ett specifikt paket som fångats av tcpdump. Så här ser utdata från ett enda paket ut.
17: 00: 25.369138 wlp0s20f3 Out IP localystem.40310> kul01s10-in-f46.1e100.net.https: Flags [P.], seq 196: 568, ack 1, win 309, options [nop, nop, TS val 117964079 ecr 816509256], längd 33
Tänk på att inte alla paket fångas på detta sätt, men det här är det allmänna formatet följt av de flesta av dem.
Utgången innehåller följande information.
- Tidsstämpel för det mottagna paketet
- Gränssnittsnamn
- Paketflöde
- Namnet på nätverksprotokollet
- IP-adress och portinformation
- TCP-flaggor
- Sekvensnummer av data i paketet
- Ack-data
- Fönsterstorlek
- Paketlängd
Det första fältet (17:00:25.369138) visar tidsstämpeln när ditt system skickade eller fick paketet. Den registrerade tiden extraheras från systemets lokala tid.
Det andra och tredje fälten anger gränssnittet som används och flödet av paketet. I utdraget ovan, wlp0s20f3 är namnet på det trådlösa gränssnittet och Ut är paketflödet.
Det fjärde fältet innehåller information relaterad till nätverksprotokollnamnet. Generellt hittar du två protokoll- IP och IP6, där IP betecknar IPV4 och IP6 är för IPV6.
Nästa fält innehåller IP-adresserna eller namnet på källan och destinationssystemet. IP-adresserna följs av portnumret.
Det sjätte fältet i utgången består av TCP-flaggor. Det finns olika flaggor som används i tcpdump-utdata.
Flaggnamn | Värde | Beskrivning |
---|---|---|
SYN | S | Anslutningen startade |
FENA | F | Anslutningen slutförd |
SKJUTA PÅ | P | Data skjuts |
RST | R | Anslutningen har återställts |
ACK | . | Bekräftelse |
Utgången kan också innehålla en kombination av flera TCP-flaggor. Till exempel, FLAGG [f.] står för ett FIN-ACK-paket.
När vi flyttar oss längre i utdatautdraget innehåller nästa fält sekvensnumret (seq 196: 568) av data i paketet. Det första paketet har alltid ett positivt heltal och de efterföljande paketen använder det relativa sekvensnumret för att förbättra dataflödet.
Nästa fält innehåller kvitteringsnumret (ack 1) eller enkelt Ack-nummer. Paketet som fångats i avsändarens maskin har 1 som kvittensnummer. I mottagarens ände är Ack-numret värdet på nästa paket.
Det nionde fältet i utgången rymmer fönsterstorleken (vinna 309), vilket är antalet tillgängliga byte i den mottagande bufferten. Det finns flera andra fält som följer fönsterstorleken, inklusive Maximum Segment Size (MSS).
Det sista fältet (längd 33) innehåller längden på det totala paketet som fångats av tcpdump.
3. Begränsa antalet fångade paket
När du kör kommandot tcpdump för första gången kanske du märker att systemet fortsätter att fånga nätverkspaket tills du skickar en avbrottssignal. Du kan åsidosätta detta standardbeteende genom att ange antalet paket som du vill fånga i förväg med hjälp av -c flagga.
tcpdump - gränssnitt någon -c 10
Det ovannämnda kommandot kommer att fånga tio paket från vilket som helst aktivt nätverksgränssnitt.
4. Filtrera paket baserat på fält
När du felsöker ett problem blir det inte enklare att få ett stort block med textutdata på din terminal. Det är där filtreringsfunktionen i tcpdump spelar in. Du kan filtrera paketen enligt olika fält inklusive värd, protokoll, portnummer och mer.
För att bara fånga TCP-paket, skriv:
tcpdump - gränssnitt alla -c 5 tcp
På samma sätt, om du vill filtrera utdata med portnummer:
tcpdump - gränssnitt vilken som helst -c 5-port 50
Ovan nämnda kommando hämtar endast paket som överförs via den angivna porten.
För att få paketdetaljer för en viss värd:
tcpdump - gränssnitt någon -c 5-värd 112.123.13.145
Om du vill filtrera paket som skickas eller tas emot av en viss värd använder du src eller dst argument med kommandot.
tcpdump - gränssnitt någon -c 5 src 112.123.13.145
tcpdump - gränssnitt någon -c 5 dst 112.123.13.145
Du kan också använda de logiska operatorerna och och eller för att kombinera två eller flera uttryck tillsammans. Till exempel för att få paket som tillhör källans IP 112.123.13.145 och använd porten 80:
tcpdump - gränssnitt någon -c 10 src 112.123.13.145 och port 80
Komplexa uttryck kan grupperas tillsammans med parentes som följer:
tcpdump - gränssnitt vilken som helst -c 10 "(src 112.123.13.145 eller src 234.231.23.234) och (port 45 eller port 80)"
5. Visa innehållet i paketet
Du kan använda -A och -x flaggar med kommandot tcpdump för att analysera innehållet i nätverkspaketet. De -A flagga står för ASCII format och -x betecknar hexadecimal formatera.
Så här visar du innehållet i nästa nätverkspaket som fångats av systemet:
tcpdump - gränssnitt alla -c 1 -A
tcpdump - gränssnitt någon -c 1 -x
Relaterad: Vad är paketförlust och hur åtgärdar du orsaken?
6. Spara fångstdata i en fil
Om du vill spara inspelningsdata för referensändamål är tcpdump där för att hjälpa dig. Passera bara -w flagga med standardkommandot för att skriva utdata till en fil istället för att visa den på skärmen.
tcpdump - gränssnitt alla -c 10 -w data.pcap
De .pcap filändelsen står för paketfångst data. Du kan också utfärda det ovannämnda kommandot i utförligt läge med hjälp av -v flagga.
tcpdump - gränssnitt alla -c 10 -w data.pcap -v
Att läsa en .pcap fil med tcpdump, använd -r flagga följt av filvägen. De -r står för Läsa.
tcpdump -r data.pcap
Du kan också filtrera nätverkspaket från paketdata som sparats i filen.
tcpdump -r data.pcap-port 80
Övervakning av nätverkstrafik på Linux
Om du har tilldelats uppgiften att administrera en Linux-server är kommandot tcpdump ett bra verktyg att inkludera i din arsenal. Du kan enkelt åtgärda nätverksrelaterade problem genom att fånga paket som överförs i ditt nätverk i realtid.
Men innan allt detta måste din enhet vara ansluten till internet. För nybörjare i Linux kan det även vara lite utmanande att ansluta till Wi-Fi via kommandoraden. Men om du använder rätt verktyg är det enkelt.
Vill du ansluta till ett Wi-Fi-nätverk via Linux-kommandoraden? Här är vad du behöver veta om nmcli-kommandot.
Läs Nästa
- Linux
- säkerhet
- Nätverk Forensics
Deepesh är Junior Editor för Linux på MUO. Han har skrivit informationsinnehåll på internet i över 3 år. På fritiden tycker han om att skriva, lyssna på musik och spela sin gitarr.
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!
Ett steg till…!
Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.