Linux är utrustad med en uppsjö av nätverksverktyg att välja mellan. tcpdump är ett sådant kraftfullt nätverksverktyg som kan fånga och analysera nätverkstrafik om du skulle behöva felsöka nätverksfel på Linux.

Låt oss komma igång med kommandot tcpdump och utforska hur man använder det för att fånga nätverkstrafik.

Installerar tcpdump i Linux

tcpdump kommer vanligtvis förinstallerat med alla vanliga Linux-distributioner och säkerhetsbaserade alternativ. Så du borde kunna använda den direkt genom att skriva in tcpdump med en sudo prefix.

Om du inte kan köra kommandot tcpdump och fastnar vid "tcpdump: kommandot hittades inte" fel, låt oss lära oss hur man installerar tcpdump på din Linux-maskin.

För att installera tcpdump, starta terminalen och kör kommandot som motsvarar den Linux-distro som du för närvarande använder:

På Debian/Ubuntu-derivat, kör:

sudo apt-skaffa sig installera tcpdump

Arch-baserade system, springa:

sudo pacman -S tcpdump

För att installera verktyget tcpdump på Fedora, CentOS och RHEL, utfärda följande kommando:

instagram viewer
sudo dnf Installera tcpdump

Observera att om du blir ombedd att installera libcap, Skriv in Ja eller Y eftersom det är ett kärnberoende, utan vilket tcpdump kommer att vägra starta upp. Detta bör installera verktyget tcpdump och lösa felet "kommandot hittades inte".

Nu när tcpdump har installerats på ditt system, låt oss utforska de olika alternativen och funktionerna som den erbjuder.

Fånga nätverkstrafik med tcpdump

tcpdump erbjuder många flaggor för att ändra dess exekvering, men det kan också köras som ett fristående kommando. Men att köra tcpdump utan några flaggor eller argument skulle försumma dess fulla potential. Det är alltid bättre att använda några flaggor för att justera exekveringen och utdata efter behov.

Skriv in det här kommandot för att övervaka nätverksöverföringar med tcpdump:

sudo tcpdump

Nu börjar tcpdump automatiskt fånga nätverkspaket tills en avbrottssignal skickas med Ctrl + Z för att bryta processen manuellt. För att begränsa det totala antalet paket som fångas, använd -c flagga och skriv in önskad gräns för paket bredvid:

sudo tcpdump -c 5

Om du inte kan förstå resultatet just nu måste du göra det bekanta dig med utdataformatet tcpdump först.

Kontrollera tillgängliga nätverksgränssnitt med tcpdump

Som standard fångar tcpdump trafik från något av de tillgängliga nätverksgränssnitten. Om du har flera aktiva nätverksgränssnitt i bruk, kanske du vill definiera nätverksgränssnittet från vilket tcpdump ska fånga paket. För att starta tcpdump på ett specifikt gränssnitt måste du först lära dig om gränssnittsnamnet.

Så här listar du alla tillgängliga nätverksgränssnitt med tcpdump:

sudo tcpdump -D

Eller så kan du lägga till --list-gränssnitt flagga till kommandot:

sudo tcpdump --lista-gränssnitt

Utdata som returneras innehåller en lista över alla aktiva nätverksgränssnitt som tcpdump kan lyssna på. För att konfigurera tcpdump för att fånga överföringar från ett visst nätverksgränssnitt, skriv in det här kommandot:

sudo tcpdump -i interface_id

Eller så kan du lägga till --gränssnitt flagga till kommandot:

sudo tcpdump --gränssnittinterface_id

Nu när vi har fångat några paket, låt oss studera dem noggrant och lära oss hur du kan justera utdata så att de blir mer läsbara.

Utforska tcpdump-filter

tcpdump kan fånga en överväldigande mängd trafik i en enda körning. Sådan informationsöverbelastning kan leda dig av spåret när du undersöker eller felsöker problem med en specifik värd eller nätverksprotokoll.

Här är där tcpdump-filtren kommer in i bilden. Du kan lägga till kommandot tcpdump med vissa flaggor för att filtrera bort nätverkstrafiken och fånga specifika paket. Du kan sedan lagra dessa paket och senare analysera dem för att komma till roten av eventuella nätverksrelaterade problem. Låt oss lära oss hur man använder filter i tcpdump.

Filtrera paket baserat på nätverksprotokollet som används

För att filtrera paket som sänds via ett specifikt protokoll, skriv in protokollnamnet med kommandot tcpdump, och det kommer bara att fånga paket som färdas via det definierade nätverksprotokollet.

Till exempel, för att fånga ICMP-baserade paket, skulle du helt enkelt bifoga icmp i slutet av kommandot tcpdump. Processen är densamma om du bara vill fånga UDP- eller TCP-paket.

sudo tcpdump -c 5 icmp

Detta kommando kommer endast att returnera utdata om det sker ett utbyte av data via ICMP-protokollet.

Filtrera paket baserat på värden

Du kan konfigurera tcpdump för att fånga paket relaterade till en enda värd med värd parameter. Detta är särskilt användbart när alla system i ditt nätverk fungerar utom ett. Det här filtret låter dig utföra riktade undersökningar och påskyndar det övergripande arbetsflödet för felsökning eftersom du inte distraheras av onödiga data.

För att fånga paket relaterade till en specifik värd, definiera värdens nätverksadress med värd parameter:

sudotcpdump-c 5 värd 192.168.2.1

I likhet med nätverksprotokollfiltret kommer detta kommando endast att returnera utdata om någon pågående överföring är relaterad till den definierade värden.

Filtrera paket baserat på den aktiva porten

tcpdump är utrustad med en parameter som låter dig filtrera nätverkstrafik och fånga endast paket som sänds till eller från en specifik port.

För att fånga paket som kommer från en specifik port, lägg till hamn flagga till kommandot tcpdump och definiera portnumret bredvid. För att till exempel fånga inkommande eller utgående HTTP-trafik, definiera port 80:

sudo tcpdump -c 5 port 80

tcpdump lyssnar på port 80 och väntar på HTTP-överföringar. När den upptäcker HTTP-paket i nätverket kommer den att fånga upp dem.

Kombinera filter tillsammans för avancerad sortering

Tidigare avsnitt diskuterade hur du kan filtrera trafik baserat på port, protokoll eller värd, men tänk om du ville fånga trafik från en enda port på en specifik värd som använder ett visst nätverk protokoll? Tja, du har tur eftersom detta är möjligt, tack vare möjligheten att använda logiska operatorer med kommandot tcpdump.

För att fånga paket från en enskild värd som använder port 443, använd det här kommandot:

sudotcpdump-c 5 värd 192.168.2.1ochhamn 443

Inspektera innehållet i infångade paket

Som standard visar tcpdump rubrikerna för ett paket i utdata. Även om det är mer än tillräckligt i de flesta fall, ibland kanske du vill eller behöver titta djupare in i den insamlade informationen. Du kan skicka vissa parametrar med kommandot tcpdump för att inspektera innehållet i det fångade paketet.

Så här ser du innehållet i paketen:

sudo tcpdump -c 5 -x

Detta kommando returnerar hex-versionen av innehållet i ett fångat paket. Om du vill se ASCII-formuläret för uppgifterna kan du skicka -A parameter med:

sudo tcpdump -A

Spara tcpdump-utdata till en fil

Som nästan alla andra Linux-kommandoradsverktyg, kan du lagra utdata som produceras av tcpdump i en fil som ska refereras till senare.

Detta kan göras genom att lägga till -w flagga till kommandot. Vid körning kommer tcpdump att lagra infångade data i en .pcap fil som senare kan analyseras med tcpdump eller andra nätverksövervakningsverktyg som Wireshark.

Skriv in det här kommandot för att lagra tcpdump-kommandots utdata i en fil:

sudotcpdump-wfånga.pcap

Att läsa a .pcap fil, kan du använda tcpdump med -r parameter:

sudotcpdump-rfånga.pcap

Linux levereras med en uppsjö av nätverksverktyg som kan lösa alla nätverksproblem så länge det är på mjukvarusidan. Att veta hur man använder några av de bästa nätverksverktygen i Linux kommer definitivt att vara praktiskt, oavsett om du är en systemadministratör som hanterar nätverk för att leva eller bara en vanlig Linux-användare.

Eftersom den faktiska listan över tillgängliga nätverkskommandon kan vara för mycket att förstå, här är en lista över några av de viktigaste Linux-nätverksverktygen som du bör känna till.