Linux er udstyret med et væld af netværksværktøjer at vælge imellem. tcpdump er et sådant kraftfuldt netværksværktøj, der kan fange og analysere netværkstrafik, hvis du skulle have brug for at fejlfinde netværksfejl på Linux.
Lad os komme i gang med kommandoen tcpdump og udforske, hvordan du bruger den til at fange netværkstrafik.
Installation af tcpdump i Linux
tcpdump kommer normalt forudinstalleret med alle almindelige Linux-distributioner og sikkerhedsbaserede alternativer. Så du burde kunne bruge det med det samme ved at skrive ind tcpdump med en sudo præfiks.
I tilfælde af at du ikke er i stand til at køre kommandoen tcpdump og sidder fast ved "tcpdump: kommando ikke fundet" fejl, lad os lære, hvordan du installerer tcpdump på din Linux-maskine.
For at installere tcpdump skal du tænde for terminalen og køre kommandoen, der svarer til den Linux-distro, du bruger i øjeblikket:
På Debian/Ubuntu-derivater skal du køre:
sudo apt-få installer tcpdump
På Arch-baserede systemer, løb:
sudo pacman -S tcpdump
For at installere tcpdump-værktøjet på Fedora, CentOS og RHEL, udsted følgende kommando:
sudo dnf installere tcpdump
Bemærk, at hvis du bliver bedt om at installere libcap, indtaste Ja eller Y da det er en kerneafhængighed, uden hvilken tcpdump vil nægte at starte op. Dette skulle installere tcpdump-værktøjet og løse fejlen "kommando ikke fundet".
Nu hvor tcpdump er blevet installeret på dit system, lad os undersøge de forskellige muligheder og funktionaliteter, det tilbyder.
Fangst netværkstrafik med tcpdump
tcpdump tilbyder en masse flag til at ændre dens udførelse, men den kan også køres som en selvstændig kommando. Men at køre tcpdump uden nogen flag eller argumenter ville være at negligere dets fulde potentiale. Det er altid bedre at bruge nogle få flag til at justere udførelsen og outputtet efter behov.
Indtast denne kommando for at overvåge netværkstransmissioner med tcpdump:
sudo tcpdump
Nu vil tcpdump begynde automatisk at fange netværkspakker indtil et afbrydelsessignal sendes med Ctrl + Z at bryde processen manuelt. For at begrænse det samlede antal pakker, der fanges, skal du bruge -c flag og indtast den ønskede grænse for pakker ved siden af:
sudo tcpdump -c 5
Hvis du ikke kan forstå outputtet lige nu, er du nødt til det bliv fortrolig med outputformatet tcpdump først.
Tjek tilgængelige netværksgrænseflader med tcpdump
Som standard fanger tcpdump trafik fra enhver af de tilgængelige netværksgrænseflader. Hvis du har flere aktive netværksgrænseflader i brug, vil du måske definere netværksgrænsefladen, hvorfra tcpdump skal fange pakker. For at starte tcpdump på en specifik grænseflade, skal du først lære om grænsefladenavnet.
Sådan viser du alle tilgængelige netværksgrænseflader med tcpdump:
sudo tcpdump -D
Eller du kan tilføje --liste-grænseflader flag til kommandoen:
sudo tcpdump --liste-grænseflader
Det returnerede output indeholder en liste over alle de aktive netværksgrænseflader, som tcpdump kan lytte til. For at konfigurere tcpdump til at fange transmissioner fra en bestemt netværksgrænseflade skal du indtaste denne kommando:
sudo tcpdump -i interface_id
Eller du kan tilføje --grænseflade flag til kommandoen:
sudo tcpdump --interfaceinterface_id
Nu hvor vi har fanget et par pakker, lad os studere dem nøje og lære, hvordan du kan justere outputtet, så det bliver mere læsbart.
Udforsker tcpdump-filtre
tcpdump er i stand til at fange en overvældende mængde trafik i en enkelt kørsel. En sådan overbelastning af information kan bringe dig af sporet, når du undersøger eller fejlfinder problemer med en bestemt værts- eller netværksprotokol.
Her er hvor tcpdump-filtrene kommer i spil. Du kan tilføje tcpdump-kommandoen med visse flag for at filtrere netværkstrafikken fra og fange specifikke pakker. Du kan derefter gemme disse pakker og senere analysere dem for at komme til roden af eventuelle netværksrelaterede problemer. Lad os lære at bruge filtre i tcpdump.
Filtrer pakker baseret på den netværksprotokol, der er i brug
For at filtrere pakker, der sendes via en specifik protokol, skal du indtaste protokolnavnet med kommandoen tcpdump, og det vil kun fange pakker, der rejser via den definerede netværksprotokol.
For at indfange ICMP-baserede pakker for eksempel vedhæfter du blot icmp i slutningen af kommandoen tcpdump. Processen er den samme, hvis du kun ønsker at fange UDP- eller TCP-pakker.
sudo tcpdump -c 5 icmp
Denne kommando returnerer kun output, hvis der er en udveksling af data gennem ICMP-protokollen.
Filtrer pakker baseret på værten
Du kan konfigurere tcpdump til at fange pakker relateret til en enkelt vært med vært parameter. Dette er især nyttigt, når alle systemer på dit netværk fungerer, undtagen ét. Dette filter lader dig udføre målrettet undersøgelse og fremskynder den overordnede fejlfindingsworkflow, da du ikke distraheres af unødvendige data.
For at fange pakker relateret til en specifik vært skal du definere værtens netværksadresse med vært parameter:
sudotcpdump-c 5 vært 192.168.2.1
I lighed med netværksprotokolfilteret vil denne kommando kun returnere output, hvis en igangværende transmission er relateret til den definerede vært.
Filtrer pakker baseret på den aktive port
tcpdump er udstyret med en parameter, der lader dig filtrere netværkstrafik og kun fange pakker, der transmitteres til eller fra en bestemt port.
For at fange pakker, der kommer fra en bestemt port, skal du tilføje Havn flag til tcpdump-kommandoen og definer portnummeret ved siden af. For at fange indgående eller udgående HTTP-trafik, skal du definere port 80:
sudo tcpdump -c 5 port 80
tcpdump lytter på port 80 og venter på HTTP-transmissioner. Når den registrerer HTTP-pakker i netværket, fanger den dem.
Kombiner filtre sammen for avanceret sortering
Tidligere afsnit diskuterede, hvordan du kan filtrere trafik baseret på port, protokol eller vært, men hvad nu hvis du ønskede at fange trafik fra en enkelt port på en bestemt vært ved hjælp af et bestemt netværk protokol? Nå, du er heldig, fordi dette er muligt, fordi det tilskrives evnen til at bruge logiske operatorer med kommandoen tcpdump.
For at fange pakker fra en individuel vært, der bruger port 443, skal du bruge denne kommando:
sudotcpdump-c 5 vært 192.168.2.1ogHavn 443
Undersøg indholdet af opfangede pakker
Som standard viser tcpdump en pakkes overskrifter i outputtet. Selvom det i de fleste tilfælde er mere end nok, vil du måske nogle gange eller have brug for at se dybere ind i de registrerede data. Du kan videregive visse parametre med kommandoen tcpdump for at inspicere indholdet af den opfangede pakke.
Sådan ser du indholdet af pakkerne:
sudo tcpdump -c 5 -x
Denne kommando returnerer hex-versionen af indholdet i en fanget pakke. Hvis du ønsker at se ASCII-formularen for dataene, kan du videregive -EN parameter med:
sudo tcpdump -A
Gem tcpdump-output til en fil
Som næsten ethvert andet Linux-kommandolinjeværktøj kan du gemme output produceret af tcpdump i en fil, der skal refereres til senere.
Dette kan gøres ved at tilføje -w flag til kommandoen. Ved udførelse gemmer tcpdump de opsamlede data i en .pcap fil, der senere kan analyseres med tcpdump eller andre netværksovervågningsværktøjer som Wireshark.
Indtast denne kommando for at gemme din tcpdump-kommandos output i en fil:
sudotcpdump-wfange.pcap
At læse en .pcap fil, kan du bruge tcpdump med -r parameter:
sudotcpdump-rfange.pcap
Linux leveres med et væld af netværksværktøjer, der kan løse ethvert netværksproblem, så længe det er på softwaresiden. At vide, hvordan man bruger et par af de bedste netværksværktøjer i Linux, vil helt sikkert være praktisk, uanset om du er en sysadmin, der administrerer netværk til livets ophold, eller bare en almindelig Linux-bruger.
Da den faktiske liste over tilgængelige netværkskommandoer kan være for meget at gennemskue, er her en liste over nogle af de vigtigste Linux-netværksværktøjer, som du bør kende.