Linux is uitgerust met een overvloed aan netwerkhulpprogramma's om uit te kiezen. tcpdump is zo'n krachtige netwerktool die netwerkverkeer kan vastleggen en analyseren als je netwerkfouten op Linux moet oplossen.
Laten we aan de slag gaan met de opdracht tcpdump en onderzoeken hoe we deze kunnen gebruiken om netwerkverkeer vast te leggen.
tcpdump installeren in Linux
tcpdump is meestal vooraf geïnstalleerd met: alle reguliere Linux-distributies en op veiligheid gebaseerde alternatieven. Dus je zou het meteen moeten kunnen gebruiken door in te typen tcpdump met een sudo voorvoegsel.
Als u de opdracht tcpdump niet kunt uitvoeren en vastzit aan de "tcpdump: opdracht niet gevonden" fout, laten we leren hoe u tcpdump op uw Linux-machine installeert.
Om tcpdump te installeren, start u de terminal en voert u de opdracht uit die overeenkomt met de Linux-distro die u momenteel gebruikt:
Voer op Debian/Ubuntu-derivaten uit:
sudo apt-krijgen installeer tcpdump
Op Arch-gebaseerde systemen, rennen:
sudo pacman -S tcpdump
Om het tcpdump-hulpprogramma op Fedora, CentOS en RHEL te installeren, geef je het volgende commando:
sudo dnf installeren tcpdump
Houd er rekening mee dat als u wordt gevraagd om te installeren libcap, typ in Ja of Y omdat het een kernafhankelijkheid is, zonder welke tcpdump weigert op te starten. Dit zou het tcpdump-hulpprogramma moeten installeren en de "opdracht niet gevonden"-fout moeten oplossen.
Nu tcpdump op uw systeem is geïnstalleerd, gaan we eens kijken naar de verschillende opties en functionaliteiten die het biedt.
Netwerkverkeer vastleggen met tcpdump
tcpdump biedt veel vlaggen om de uitvoering aan te passen, maar het kan ook als een op zichzelf staand commando worden uitgevoerd. Het uitvoeren van tcpdump zonder vlaggen of argumenten zou echter zijn volledige potentieel verwaarlozen. Het is altijd beter om een paar vlaggen te gebruiken om de uitvoering en uitvoer zo nodig aan te passen.
Typ deze opdracht om netwerktransmissies met tcpdump te controleren:
sudo tcpdump
Nu begint tcpdump automatisch netwerkpakketten vast te leggen totdat een onderbrekingssignaal wordt verzonden met Ctrl + Z om het proces handmatig te onderbreken. Om het totale aantal vastgelegde pakketten te beperken, gebruikt u de -c markeer en typ de gewenste limiet van pakketten ernaast:
sudo tcpdump -c 5
Als u de uitvoer nu niet kunt begrijpen, moet u: vertrouwd raken met het tcpdump-uitvoerformaat eerst.
Controleer beschikbare netwerkinterfaces met tcpdump
Standaard vangt tcpdump verkeer van elk van de beschikbare netwerkinterfaces op. Als je meerdere actieve netwerkinterfaces in gebruik hebt, wil je misschien de netwerkinterface definiëren van waaruit tcpdump pakketten moet vastleggen. Om tcpdump op een specifieke interface te starten, moet u eerst de interfacenaam leren kennen.
Hier leest u hoe u alle beschikbare netwerkinterfaces met tcpdump kunt weergeven:
sudo tcpdump -D
Of u kunt de. toevoegen --lijst-interfaces vlag aan het commando:
sudo tcpdump --lijst-interfaces
De geretourneerde uitvoer bevat een lijst met alle actieve netwerkinterfaces waarnaar tcpdump kan luisteren. Om tcpdump te configureren om transmissies van een bepaalde netwerkinterface vast te leggen, typt u deze opdracht:
sudo tcpdump -i interface_id
Of u kunt de. toevoegen --koppel vlag aan het commando:
sudo tcpdump --koppelinterface_id
Nu we een paar pakketten hebben vastgelegd, laten we ze nauwkeurig bestuderen en leren hoe u de uitvoer kunt aanpassen om deze beter leesbaar te maken.
tcpdump-filters verkennen
tcpdump kan een overweldigende hoeveelheid verkeer in één keer vastleggen. Een dergelijke overdaad aan informatie kan u van het spoor brengen bij het onderzoeken of oplossen van problemen met een specifiek host- of netwerkprotocol.
Hier komen de tcpdump-filters om de hoek kijken. U kunt de opdracht tcpdump met bepaalde vlaggen toevoegen om het netwerkverkeer uit te filteren en specifieke pakketten vast te leggen. U kunt die pakketten vervolgens opslaan en later analyseren om de oorzaak van eventuele netwerkgerelateerde problemen te achterhalen. Laten we leren hoe we filters in tcpdump kunnen gebruiken.
Pakketten filteren op basis van het gebruikte netwerkprotocol
Om pakketten te filteren die via een specifiek protocol worden verzonden, typt u de protocolnaam in met het tcpdump-commando, en het zal alleen pakketten vastleggen die reizen via het gedefinieerde netwerkprotocol.
Als u bijvoorbeeld op ICMP gebaseerde pakketten wilt vastleggen, voegt u eenvoudig: icmp aan het einde van het tcpdump-commando. Het proces is hetzelfde als u alleen UDP- of TCP-pakketten wilt vastleggen.
sudo tcpdump -c 5 icmp
Deze opdracht geeft alleen uitvoer als er gegevens worden uitgewisseld via het ICMP-protocol.
Pakketten filteren op basis van de host
U kunt tcpdump configureren om pakketten vast te leggen die betrekking hebben op een enkele host met de gastheer parameter. Dit is vooral handig wanneer alle systemen van uw netwerk werken, behalve één. Met dit filter kunt u gericht onderzoek uitvoeren en de algehele workflow voor probleemoplossing versnellen, omdat u niet wordt afgeleid door onnodige gegevens.
Om pakketten vast te leggen die betrekking hebben op een specifieke host, definieert u het netwerkadres van de host met de gastheer parameter:
sudotcpdump-c 5 gastheer 192.168.2.1
Net als bij het netwerkprotocolfilter, retourneert deze opdracht alleen uitvoer als een lopende verzending gerelateerd is aan de gedefinieerde host.
Pakketten filteren op basis van de actieve poort
tcpdump is uitgerust met een parameter waarmee u netwerkverkeer kunt filteren en alleen pakketten kunt vastleggen die van of naar een specifieke poort worden verzonden.
Als u pakketten wilt vastleggen die van een specifieke poort komen, voegt u de haven flag toe aan de opdracht tcpdump en definieer het poortnummer ernaast. Om bijvoorbeeld inkomend of uitgaand HTTP-verkeer vast te leggen, definieert u poort 80:
sudo tcpdump -c 5 poort 80
tcpdump luistert op poort 80, wachtend op HTTP-transmissies. Zodra het HTTP-pakketten in het netwerk detecteert, zal het deze vastleggen.
Combineer filters samen voor geavanceerd sorteren
In eerdere secties is besproken hoe u verkeer kunt filteren op poort, protocol of host, maar wat als? je wilde verkeer vastleggen van een enkele poort van een specifieke host met behulp van een bepaald netwerk protocol? Nou, je hebt geluk, want dit is mogelijk, dankzij de mogelijkheid om logische operatoren te gebruiken met het tcpdump-commando.
Gebruik deze opdracht om pakketten op te vangen van een individuele host via poort 443:
sudotcpdump-c 5 gastheer 192.168.2.1enhaven 443
Inspecteer de inhoud van vastgelegde pakketten
Standaard toont tcpdump de headers van een pakket in de uitvoer. Hoewel het in de meeste gevallen meer dan genoeg is, wilt of moet u soms dieper in de vastgelegde gegevens kijken. U kunt bepaalde parameters doorgeven met de opdracht tcpdump om de inhoud van het vastgelegde pakket te inspecteren.
Zo kunt u de inhoud van de pakketten bekijken:
sudo tcpdump -c 5 -x
Deze opdracht retourneert de hex-versie van de inhoud in een vastgelegd pakket. Als u het ASCII-formulier van de gegevens wilt bekijken, kunt u de -EEN parameter met:
sudo tcpdump -A
tcpdump-uitvoer opslaan in een bestand
Zoals bijna elk ander Linux-opdrachtregelprogramma, kunt u de uitvoer die door tcpdump wordt geproduceerd, opslaan in een bestand waarnaar later wordt verwezen.
Dit kan gedaan worden door de toe te voegen -w vlag aan het commando. Na uitvoering zal tcpdump de vastgelegde gegevens opslaan in een .pcap bestand dat later kan worden geanalyseerd met tcpdump of andere netwerkmonitoringtools zoals Wireshark.
Typ deze opdracht om de uitvoer van uw tcpdump-opdracht in een bestand op te slaan:
sudotcpdump-wvastleggen.pcap
om te lezen .pcap bestand, kunt u tcpdump gebruiken met de -r parameter:
sudotcpdump-rvastleggen.pcap
Linux wordt geleverd met een overvloed aan netwerktools die elk netwerkprobleem kunnen oplossen, zolang het maar aan de softwarekant ligt. Weten hoe je een paar van de beste netwerktools in Linux moet gebruiken, zal zeker van pas komen, of je nu een systeembeheerder bent die netwerken voor de kost beheert of gewoon een alledaagse Linux-gebruiker.
Aangezien de eigenlijke lijst met beschikbare netwerkcommando's te veel kan zijn om te doorgronden, is hier een lijst met enkele van de belangrijkste Linux-netwerktools die je moet kennen.