Linux er utstyrt med en mengde nettverksverktøy å velge mellom. tcpdump er et så kraftig nettverksverktøy som kan fange opp og analysere nettverkstrafikk hvis du trenger å feilsøke nettverksfeil på Linux.
La oss komme i gang med tcpdump-kommandoen og utforske hvordan du bruker den til å fange opp nettverkstrafikk.
Installerer tcpdump i Linux
tcpdump kommer vanligvis forhåndsinstallert med alle vanlige Linux-distribusjoner og sikkerhetsbaserte alternativer. Så du bør kunne bruke den med en gang ved å skrive inn tcpdump med en sudo prefiks.
I tilfelle du ikke klarer å kjøre tcpdump-kommandoen og sitter fast på "tcpdump: kommandoen ble ikke funnet" feil, la oss lære hvordan du installerer tcpdump på din Linux-maskin.
For å installere tcpdump, fyr opp terminalen og kjør kommandoen som tilsvarer Linux-distroen du bruker:
På Debian/Ubuntu-derivater, kjør:
sudo apt-få installer tcpdump
På Arch-baserte systemer, løpe:
sudo pacman -S tcpdump
For å installere tcpdump-verktøyet på Fedora, CentOS og RHEL, utfør følgende kommando:
sudo dnf installere tcpdump
Merk at hvis du blir bedt om å installere libcap, Skriv inn Ja eller Y ettersom det er en kjerneavhengighet, uten hvilken tcpdump vil nekte å starte opp. Dette bør installere tcpdump-verktøyet og løse feilen "kommando ikke funnet".
Nå som tcpdump er installert på systemet ditt, la oss utforske de forskjellige alternativene og funksjonene den tilbyr.
Fange nettverkstrafikk med tcpdump
tcpdump tilbyr mange flagg for å endre utførelsen, men den kan også kjøres som en frittstående kommando. Å kjøre tcpdump uten noen flagg eller argumenter ville imidlertid neglisjere dets fulle potensial. Det er alltid bedre å bruke noen få flagg for å justere utførelsen og utgangen etter behov.
Skriv inn denne kommandoen for å overvåke nettverksoverføringer med tcpdump:
sudo tcpdump
Nå vil tcpdump begynne å automatisk fange opp nettverkspakker til et avbruddssignal sendes med Ctrl + Z å bryte prosessen manuelt. For å begrense det totale antallet pakker som fanges, bruk -c flagg og skriv inn ønsket grense for pakker ved siden av:
sudo tcpdump -c 5
Hvis du ikke kan forstå resultatet akkurat nå, må du bli kjent med utdataformatet tcpdump først.
Sjekk tilgjengelige nettverksgrensesnitt med tcpdump
Som standard fanger tcpdump opp trafikk fra alle tilgjengelige nettverksgrensesnitt. Hvis du har flere aktive nettverksgrensesnitt i bruk, vil du kanskje definere nettverksgrensesnittet som tcpdump skal hente pakker fra. For å starte tcpdump på et spesifikt grensesnitt, må du først lære om grensesnittnavnet.
Slik viser du alle tilgjengelige nettverksgrensesnitt med tcpdump:
sudo tcpdump -D
Eller du kan legge til --list-grensesnitt flagg til kommandoen:
sudo tcpdump --liste-grensesnitt
Utdataene som returneres inneholder en liste over alle aktive nettverksgrensesnitt som tcpdump kan lytte til. For å konfigurere tcpdump til å fange opp overføringer fra et bestemt nettverksgrensesnitt, skriv inn denne kommandoen:
sudo tcpdump -i interface_id
Eller du kan legge til --grensesnitt flagg til kommandoen:
sudo tcpdump --grensesnittinterface_id
Nå som vi har fanget noen pakker, la oss studere dem nøye og lære hvordan du kan justere utdataene for å være mer lesbare.
Utforsker tcpdump-filtre
tcpdump er i stand til å fange opp en overveldende mengde trafikk i en enkelt kjøring. Slik informasjonsoverbelastning kan kaste deg av sporet når du undersøker eller feilsøker problemer med en spesifikk verts- eller nettverksprotokoll.
Her er hvor tcpdump-filtrene kommer inn i bildet. Du kan legge til tcpdump-kommandoen med visse flagg for å filtrere ut nettverkstrafikken og fange opp spesifikke pakker. Du kan deretter lagre disse pakkene og senere analysere dem for å komme til roten av eventuelle nettverksrelaterte problemer. La oss lære hvordan du bruker filtre i tcpdump.
Filtrer pakker basert på nettverksprotokollen som er i bruk
For å filtrere pakker sendt via en spesifikk protokoll, skriv inn protokollnavnet med tcpdump-kommandoen, og den vil bare fange opp pakker som reiser via den definerte nettverksprotokollen.
For å fange opp ICMP-baserte pakker, legger du for eksempel ved icmp på slutten av tcpdump-kommandoen. Prosessen er den samme hvis du bare ønsker å fange UDP- eller TCP-pakker.
sudo tcpdump -c 5 icmp
Denne kommandoen vil bare returnere utdata hvis det er utveksling av data gjennom ICMP-protokollen.
Filtrer pakker basert på verten
Du kan konfigurere tcpdump til å fange opp pakker relatert til en enkelt vert med vert parameter. Dette er spesielt nyttig når alle systemene i nettverket ditt fungerer bortsett fra ett. Dette filteret lar deg utføre målrettet undersøkelse og øker hastigheten på den generelle feilsøkingsarbeidsflyten siden du ikke blir distrahert av unødvendige data.
For å fange opp pakker relatert til en spesifikk vert, definer vertens nettverksadresse med vert parameter:
sudotcpdump-c 5 vert 192.168.2.1
I likhet med nettverksprotokollfilteret vil denne kommandoen bare returnere utdata hvis en pågående overføring er relatert til den definerte verten.
Filtrer pakker basert på den aktive porten
tcpdump er utstyrt med en parameter som lar deg filtrere nettverkstrafikk og kun fange opp pakker som sendes til eller fra en bestemt port.
For å fange opp pakker som kommer fra en bestemt port, legg til havn flagg til tcpdump-kommandoen og definer portnummeret ved siden av. For eksempel, for å fange opp eventuell innkommende eller utgående HTTP-trafikk, definer port 80:
sudo tcpdump -c 5 port 80
tcpdump vil lytte på port 80 og venter på HTTP-overføringer. Når den oppdager HTTP-pakker i nettverket, vil den fange dem.
Kombiner filtre sammen for avansert sortering
Tidligere seksjoner diskuterte hvordan du kan filtrere trafikk basert på port, protokoll eller vert, men hva hvis du ønsket å fange opp trafikk fra en enkelt port på en bestemt vert ved å bruke et bestemt nettverk protokoll? Vel, du har flaks fordi dette er mulig, og tilskrives muligheten til å bruke logiske operatorer med tcpdump-kommandoen.
For å fange pakker fra en individuell vert som bruker port 443, bruk denne kommandoen:
sudotcpdump-c 5 vert 192.168.2.1oghavn 443
Inspiser innholdet i innfangede pakker
Som standard viser tcpdump overskriftene til en pakke i utdataene. Selv om det er mer enn nok i de fleste tilfeller, noen ganger, vil du kanskje eller trenger å se dypere inn i de fangede dataene. Du kan sende visse parametere med kommandoen tcpdump for å inspisere innholdet i den fangede pakken.
Slik ser du innholdet i pakkene:
sudo tcpdump -c 5 -x
Denne kommandoen returnerer hex-versjonen av innholdet i en fanget pakke. Hvis du ønsker å se ASCII-skjemaet for dataene, kan du sende -EN parameter med:
sudo tcpdump -A
Lagre tcpdump-utdata til en fil
Som nesten alle andre Linux-kommandolinjeverktøy, kan du lagre utdataene produsert av tcpdump i en fil som skal refereres til senere.
Dette kan gjøres ved å legge til -w flagg til kommandoen. Ved kjøring vil tcpdump lagre de fangede dataene i en .pcap fil som senere kan analyseres med tcpdump eller andre nettverksovervåkingsverktøy som Wireshark.
Skriv inn denne kommandoen for å lagre tcpdump-kommandoens utdata i en fil:
sudotcpdump-wfange.pcap
Å lese en .pcap fil, kan du bruke tcpdump med -r parameter:
sudotcpdump-rfange.pcap
Linux leveres med en mengde nettverksverktøy som kan løse alle nettverksproblemer så lenge det er på programvaresiden. Å vite hvordan du bruker noen av de beste nettverksverktøyene i Linux vil definitivt komme godt med, enten du er en systemadministrator som administrerer nettverk for en levende eller bare en vanlig Linux-bruker.
Siden den faktiske listen over tilgjengelige nettverkskommandoer kan være for mye å forstå, er her en liste over noen av de viktigste Linux-nettverksverktøyene du bør vite.