Încercați să capturați pachete de date pentru a analiza traficul din rețeaua dvs.? Poate sunteți un administrator de server care s-a lovit de o problemă și dorește să monitorizeze datele transmise în rețea. Oricare ar fi situația, utilitarul tcpdump Linux este ceea ce aveți nevoie.
În acest articol, vom discuta în detaliu comanda tcpdump, împreună cu câteva ghiduri despre cum să instalați și să utilizați tcpdump pe sistemul dvs. Linux.
Ce este comanda tcpdump?
Tcpdump este un instrument puternic de monitorizare a rețelei care permite utilizatorului să filtreze pachetele și traficul într-o rețea în mod eficient. Puteți obține informații detaliate legate de TCP / IP și pachetele transmise în rețeaua dvs. Tcpdump este un utilitar de linie de comandă, ceea ce înseamnă că îl puteți rula pe servere Linux fără afișaj.
Administratorii de sistem pot, de asemenea, să integreze utilitarul tcpdump cu cron pentru a automatiza diverse sarcini precum jurnalizarea. Deoarece numeroasele sale caracteristici îl fac destul de versatil, tcpdump funcționează atât ca soluție de depanare, cât și ca instrument de securitate.
Cum se instalează tcpdump pe Linux
În timp ce de cele mai multe ori veți găsi tcpdump preinstalat pe sistemul dvs., unele distribuții Linux nu sunt livrate împreună cu pachetul. Prin urmare, poate fi necesar să instalați manual utilitarul pe sistemul dvs.
Puteți verifica dacă tcpdump este instalat pe sistemul dvs. utilizând care comanda.
care tcpdump
Dacă ieșirea afișează o cale de director (/usr/bin/tcpdump), atunci sistemul dvs. are pachetul instalat. Cu toate acestea, dacă nu, puteți face acest lucru cu ușurință folosind managerul de pachete implicit din sistemul dvs.
Pentru a instala tcpdump pe distribuții bazate pe Debian, cum ar fi Ubuntu:
sudo apt-get install tcpdump
Instalarea tcpdump pe CentOS este de asemenea ușoară.
sudo yum instalează tcpdump
Pe distribuțiile bazate pe Arch:
sudo pacman -S tcpdump
Pentru a instala pe Fedora:
sudo dnf instalează tcpdump
Rețineți că pachetul tcpdump necesită libcap ca dependență, deci asigurați-vă că îl instalați și pe sistemul dvs.
Exemple Tcpdump pentru a captura pachete de rețea pe Linux
Acum că ați instalat cu succes tcpdump pe mașina dvs. Linux, este timpul să monitorizați unele pachete. Deoarece tcpdump necesită permisiuni pentru superutilizator pentru a executa majoritatea operațiunilor, va trebui să adăugați sudo la comenzile tale.
1. Enumerați toate interfețele de rețea
Pentru a verifica ce interfețe de rețea sunt disponibile pentru a captura, utilizați -D semnalizați cu comanda tcpdump.
tcpdump -D
Trecând de --list-interfaces flag ca argument va returna aceeași ieșire.
tcpdump --list-interfaces
Ieșirea va fi o listă a tuturor interfețelor de rețea care sunt prezente în sistemul dvs.
După ce ați obținut lista interfețelor de rețea, este timpul să vă monitorizați rețeaua captând pachete pe sistemul dvs. Deși puteți specifica ce interfață doriți să utilizați, fișierul orice argument comandă tcpdump pentru a captura pachete de rețea utilizând orice interfață activă.
tcpdump --interface orice
Sistemul va afișa următoarea ieșire.
Legate de: Ce este modelul de interconectare a sistemelor deschise?
2. Formatul de ieșire tcpdump
Începând de la a treia linie, fiecare linie a ieșirii denotă un pachet specific capturat de tcpdump. Iată cum arată ieșirea unui singur pachet.
17: 00: 25.369138 wlp0s20f3 Out IP localsystem.40310> kul01s10-in-f46.1e100.net.https: Flags [P.], seq 196: 568, ack 1, win 309, options [nop, nop, TS val 117964079 ecr 816509256], lungime 33
Rețineți că nu toate pachetele sunt capturate în acest fel, dar acesta este formatul general urmat de majoritatea acestora.
Ieșirea conține următoarele informații.
- Marcaj de timp al pachetului primit
- Numele interfeței
- Flux de pachete
- Numele protocolului de rețea
- Adresa IP și detaliile portului
- Steaguri TCP
- Numărul secvenței de date din pachet
- Ack date
- Dimensiunea ferestrei
- Lungimea pachetului
Primul câmp (17:00:25.369138) afișează ștampila de timp când sistemul dvs. a trimis sau a primit pachetul. Ora înregistrată este extrasă din ora locală a sistemului.
Al doilea și al treilea câmp indică interfața utilizată și fluxul pachetului. În fragmentul de mai sus, wlp0s20f3 este numele interfeței fără fir și Afară este fluxul de pachete.
Al patrulea câmp include informații legate de numele protocolului de rețea. În general, veți găsi două protocoale- IP și IP6, unde IP denotă IPV4 și IP6 este pentru IPV6.
Următorul câmp conține adresele IP sau numele sistemului sursă și destinație. Adresele IP sunt urmate de numărul portului.
Al șaselea câmp din ieșire este format din semnalizatoare TCP. Există diferite semnalizatoare care sunt utilizate în ieșirea tcpdump.
Numele steagului | Valoare | Descriere |
---|---|---|
SYN | S | Conexiunea a început |
FIN | F | Conexiunea s-a încheiat |
APĂSAȚI | P | Datele sunt împinse |
RST | R | Conexiunea este resetată |
ACK | . | Confirmare |
Ieșirea poate conține, de asemenea, o combinație de mai multe semnalizatoare TCP. De exemplu, FLAG [f.] înseamnă un pachet FIN-ACK.
Mergând mai departe în fragmentul de ieșire, câmpul următor conține numărul de ordine (sec 196: 568) a datelor din pachet. Primul pachet are întotdeauna o valoare întreagă pozitivă, iar pachetele următoare folosesc numărul de ordine relativ pentru a îmbunătăți fluxul de date.
Următorul câmp deține numărul de confirmare (ack 1), sau numărul simplu Ack. Pachetul capturat în mașina expeditorului are 1 ca număr de confirmare. La capătul receptorului, numărul Ack este valoarea pachetului următor.
Al nouălea câmp din ieșire găzduiește dimensiunea ferestrei (câștigă 309), care este numărul de octeți disponibili în buffer-ul de recepție. Există mai multe alte câmpuri care urmează dimensiunea ferestrei, inclusiv dimensiunea maximă a segmentului (MSS).
Ultimul câmp (lungimea 33) conține lungimea pachetului total capturat de tcpdump.
3. Limitați numărul de pachete capturate
În timp ce executați comanda tcpdump pentru prima dată, este posibil să observați că sistemul continuă să capteze pachete de rețea până când treceți un semnal de întrerupere. Puteți suprascrie acest comportament implicit specificând numărul de pachete pe care doriți să le capturați în prealabil folosind -c steag.
tcpdump --interface orice -c 10
Comanda menționată mai sus va captura zece pachete de pe orice interfață de rețea activă.
4. Pachete de filtrare pe baza câmpurilor
Când depanați o problemă, obținerea unui bloc mare de ieșire de text pe terminalul dvs. nu vă face mai ușor. Acolo intră în joc funcția de filtrare din tcpdump. Puteți filtra pachetele în funcție de diferite câmpuri, inclusiv gazdă, protocol, număr de port și multe altele.
Pentru a captura numai pachete TCP, tastați:
tcpdump --interface orice -c 5 tcp
În mod similar, dacă doriți să filtrați ieșirea folosind numărul portului:
tcpdump --interface orice -c 5 port 50
Comanda menționată mai sus va prelua numai pachetele transmise prin portul specificat.
Pentru a obține detaliile pachetului pentru o anumită gazdă:
tcpdump --interface orice -c 5 gazdă 112.123.13.145
Dacă doriți să filtrați pachetele trimise sau primite de o anumită gazdă, utilizați src sau dst argument cu comanda.
tcpdump --interface any -c 5 src 112.123.13.145
tcpdump --interface any -c 5 dst 112.123.13.145
De asemenea, puteți utiliza operatorii logici și și sau pentru a combina două sau mai multe expresii împreună. De exemplu, pentru a obține pachete care aparțin IP-ului sursă 112.123.13.145 și utilizați portul 80:
tcpdump --interface orice -c 10 src 112.123.13.145 și portul 80
Expresiile complexe pot fi grupate împreună folosind paranteze după cum urmează:
tcpdump --interface orice -c 10 "(src 112.123.13.145 sau src 234.231.23.234) și (port 45 sau port 80)"
5. Vizualizați conținutul pachetului
Puteți utiliza -A și -X semnalizează cu comanda tcpdump pentru a analiza conținutul pachetului de rețea. -A steag înseamnă ASCII format și -X denotă hexazecimal format.
Pentru a vizualiza conținutul următorului pachet de rețea capturat de sistem:
tcpdump --interface orice -c 1 -A
tcpdump --interface orice -c 1 -x
Legate de: Ce este pierderea pachetelor și cum să-i remedi cauza?
6. Salvați datele de captură într-un fișier
Dacă doriți să salvați datele de captare în scopuri de referință, tcpdump este acolo pentru a vă ajuta. Treci doar -w semnalizați cu comanda implicită pentru a scrie ieșirea într-un fișier în loc să o afișați pe ecran.
tcpdump --interface orice -c 10 -w data.pcap
.pcap extensia de fișier înseamnă captarea pachetelor date. De asemenea, puteți emite comanda menționată mai sus în modul detaliat folosind -v steag.
tcpdump --interface orice -c 10 -w data.pcap -v
Pentru a citi un .pcap utilizând tcpdump, utilizați fișierul -r steag urmat de calea fișierului. -r înseamnă Citit.
tcpdump -r data.pcap
De asemenea, puteți filtra pachetele de rețea din datele pachetelor salvate în fișier.
tcpdump -r data.pcap port 80
Monitorizarea traficului de rețea pe Linux
Dacă vi s-a atribuit sarcina de a administra un server Linux, atunci comanda tcpdump este un instrument excelent de inclus în arsenalul dvs. Puteți remedia cu ușurință problemele legate de rețea prin captarea pachetelor transmise în rețea în timp real.
Dar, înainte de toate acestea, dispozitivul dvs. trebuie să fie conectat la internet. Pentru începătorii Linux, chiar conectarea cu Wi-Fi prin linia de comandă poate fi un pic provocatoare. Dar dacă utilizați instrumentele potrivite, este o clipă.
Doriți să vă conectați la o rețea Wi-Fi prin linia de comandă Linux? Iată ce trebuie să știți despre comanda nmcli.
Citiți în continuare
- Linux
- Securitate
- Rețea criminalistică
Deepesh este Junior Editor pentru Linux la MUO. Scrie conținut informațional pe internet de peste 3 ani. În timpul liber, îi place să scrie, să asculte muzică și să cânte la chitară.
Aboneaza-te la newsletter-ul nostru
Alăturați-vă newsletterului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Încă un pas…!
Vă rugăm să confirmați adresa de e-mail în e-mailul pe care tocmai vi l-am trimis.