Linux este echipat cu o multitudine de utilități de rețea din care să alegeți. tcpdump este un astfel de instrument puternic de rețea care poate captura și analiza traficul de rețea în cazul în care trebuie să depanați erorile de rețea pe Linux.
Să începem cu comanda tcpdump și să explorăm cum să o folosim pentru a capta traficul de rețea.
Instalarea tcpdump în Linux
tcpdump vine de obicei preinstalat cu toate distribuțiile Linux mainstream și alternative bazate pe securitate. Deci, ar trebui să-l puteți folosi imediat tastând tcpdump cu sudo prefix.
În cazul în care nu puteți rula comanda tcpdump și sunteți blocat la "tcpdump: comanda nu a fost găsită", haideți să învățăm cum să instalați tcpdump pe mașina dvs. Linux.
Pentru a instala tcpdump, porniți terminalul și rulați comanda corespunzătoare distribuției Linux pe care o utilizați în prezent:
Pe derivatele Debian/Ubuntu, rulați:
sudo apt-obține instalați tcpdump
Pe Sisteme bazate pe arcuri, alerga:
sudo pacman -S tcpdump
Pentru a instala utilitarul tcpdump pe Fedora, CentOS și RHEL, lansați următoarea comandă:
sudo dnf instalare tcpdump
Rețineți că, dacă vi se cere să instalați libcap, introduceți da sau Y deoarece este o dependență de bază, fără de care tcpdump va refuza să pornească. Aceasta ar trebui să instaleze utilitarul tcpdump și să rezolve eroarea „comanda nu a fost găsită”.
Acum că tcpdump a fost instalat pe sistemul dvs., să explorăm diferitele opțiuni și funcționalități pe care le oferă.
Captarea traficului de rețea cu tcpdump
tcpdump oferă o mulțime de steaguri pentru a-și modifica execuția, dar poate fi rulat și ca o comandă autonomă. Cu toate acestea, rularea tcpdump fără semne sau argumente ar neglija întregul său potențial. Este întotdeauna mai bine să folosiți câteva steaguri pentru a modifica execuția și ieșirea după cum este necesar.
Introdu această comandă pentru a monitoriza transmisiile de rețea cu tcpdump:
sudo tcpdump
Acum tcpdump va începe să captureze automat pachetele de rețea până la un semnal de întrerupere este trimis cu Ctrl + Z pentru a întrerupe procesul manual. Pentru a limita numărul total de pachete capturate, utilizați -c marcați și introduceți limita dorită de pachete lângă el:
sudo tcpdump -c 5
Dacă nu puteți înțelege rezultatul chiar acum, trebuie familiarizați-vă cu formatul de ieșire tcpdump primul.
Verificați interfețele de rețea disponibile cu tcpdump
În mod implicit, tcpdump captează traficul de la oricare dintre interfețele de rețea disponibile. Dacă aveți mai multe interfețe de rețea active în uz, este posibil să doriți să definiți interfața de rețea din care tcpdump ar trebui să capteze pachetele. Pentru a porni tcpdump pe o anumită interfață, va trebui mai întâi să aflați despre numele interfeței.
Iată cum să enumerați toate interfețele de rețea disponibile cu tcpdump:
sudo tcpdump -D
Sau, puteți adăuga --list-interfețe flag la comanda:
sudo tcpdump --listă-interfețe
Ieșirea returnată conține o listă a tuturor interfețelor de rețea active pe care le poate asculta tcpdump. Pentru a configura tcpdump pentru a captura transmisii de la o anumită interfață de rețea, tastați această comandă:
sudo tcpdump -i interfață_id
Sau, puteți adăuga --interfață flag la comanda:
sudo tcpdump --interfatainterfață_id
Acum că am capturat câteva pachete, haideți să le studiem îndeaproape și să aflăm cum puteți modifica rezultatul pentru a fi mai lizibil.
Explorarea filtrelor tcpdump
tcpdump este capabil să capteze o cantitate copleșitoare de trafic într-o singură rulare. O astfel de supraîncărcare de informații vă poate abate atunci când investigați sau depanați probleme cu o anumită gazdă sau protocol de rețea.
Aici intră în joc filtrele tcpdump. Puteți adăuga comanda tcpdump cu anumite steaguri pentru a filtra traficul de rețea și a captura anumite pachete. Apoi puteți stoca acele pachete și ulterior le puteți analiza pentru a ajunge la rădăcina oricăror probleme legate de rețea. Să învățăm cum să folosim filtrele în tcpdump.
Pachete de filtrare pe baza protocolului de rețea utilizat
Pentru a filtra pachetele transmise printr-un protocol specific, introduceți numele protocolului cu comanda tcpdump și va captura numai pachetele care călătoresc prin protocolul de rețea definit.
De exemplu, pentru a captura pachete bazate pe ICMP, ați atașa pur și simplu icmp la sfârșitul comenzii tcpdump. Procesul este același dacă doriți să capturați numai pachete UDP sau TCP.
sudo tcpdump -c 5 icmp
Această comandă va returna rezultate numai dacă există un schimb de date prin protocolul ICMP.
Pachete de filtrare pe baza gazdei
Puteți configura tcpdump pentru a captura pachete legate de o singură gazdă cu gazdă parametru. Acest lucru este util în special atunci când toate sistemele rețelei dvs. funcționează, cu excepția unuia. Acest filtru vă permite să efectuați investigații direcționate și accelerează fluxul de lucru general de depanare, deoarece nu sunteți distras de date inutile.
Pentru a captura pachete legate de o anumită gazdă, definiți adresa de rețea a gazdei cu ajutorul gazdă parametru:
sudotcpdump-c 5 gazdă 192.168.2.1
Similar cu filtrul de protocol de rețea, această comandă va returna ieșire numai dacă orice transmisie în curs este legată de gazda definită.
Pachete de filtrare pe baza portului activ
tcpdump este echipat cu un parametru care vă permite să filtrați traficul de rețea și să capturați numai pachetele care sunt transmise către sau de la un anumit port.
Pentru a captura pachete care provin dintr-un anumit port, adăugați port marcați comanda tcpdump și definiți numărul portului de lângă acesta. De exemplu, pentru a captura orice trafic HTTP de intrare sau de ieșire, definiți portul 80:
sudo tcpdump -c 5 portul 80
tcpdump va asculta pe portul 80, în așteptarea transmisiilor HTTP. Odată ce detectează pachetele HTTP în rețea, le va captura.
Combinați filtrele împreună pentru sortarea avansată
Secțiunile anterioare au discutat despre cum puteți filtra traficul în funcție de port, protocol sau gazdă, dar dacă ați vrut să captați trafic de la un singur port al unei anumite gazde folosind o anumită rețea protocol? Ei bine, ai noroc pentru că acest lucru este posibil, pe baza capacității de a folosi operatori logici cu comanda tcpdump.
Pentru a captura pachete de la o gazdă individuală folosind portul 443, utilizați această comandă:
sudotcpdump-c 5 gazdă 192.168.2.1șiport 443
Inspectați conținutul pachetelor capturate
În mod implicit, tcpdump afișează anteturile unui pachet în ieșire. Deși este mai mult decât suficient în majoritatea cazurilor, uneori, s-ar putea să doriți sau să aveți nevoie să vă uitați mai adânc în datele capturate. Puteți trece anumiți parametri cu comanda tcpdump pentru a inspecta conținutul pachetului capturat.
Iată cum să vizualizați conținutul pachetelor:
sudo tcpdump -c 5 -x
Această comandă returnează versiunea hex a conținutului dintr-un pachet capturat. Dacă doriți să vizualizați forma ASCII a datelor, puteți trece -A parametru cu:
sudo tcpdump -A
Salvați ieșirea tcpdump într-un fișier
Ca aproape orice alt instrument de linie de comandă Linux, puteți stoca rezultatul produs de tcpdump într-un fișier pentru a fi referit mai târziu.
Acest lucru se poate face prin adăugarea -w flag la comandă. La execuție, tcpdump va stoca datele capturate într-un .pcap fișier care poate fi analizat ulterior cu tcpdump sau cu alte instrumente de monitorizare a rețelei, cum ar fi Wireshark.
Introdu această comandă pentru a stoca rezultatul comenzii tcpdump într-un fișier:
sudotcpdump-wcaptură.pcap
A citi a .pcap fișier, puteți utiliza tcpdump cu -r parametru:
sudotcpdump-rcaptură.pcap
Linux este livrat cu o multitudine de instrumente de rețea care pot rezolva orice problemă de rețea, atâta timp cât este din partea software-ului. Să știi cum să folosești câteva dintre cele mai bune instrumente de rețea în Linux va fi cu siguranță util, indiferent dacă ești un administrator de sistem care gestionează rețele pentru a trăi sau doar un utilizator Linux obișnuit.
Deoarece lista reală a comenzilor de rețea disponibile poate fi prea mult de înțeles, iată o listă cu unele dintre cele mai importante instrumente de rețea Linux pe care ar trebui să le cunoașteți.