Stai cercando di acquisire pacchetti di dati per analizzare il traffico sulla tua rete? Forse sei un amministratore di server che ha riscontrato un problema e desidera monitorare i dati trasmessi sulla rete. Qualunque sia la situazione, l'utilità tcpdump Linux è ciò di cui hai bisogno.

In questo articolo, discuteremo in dettaglio il comando tcpdump, insieme ad alcune guide su come installare e utilizzare tcpdump sul tuo sistema Linux.

Cos'è il comando tcpdump?

Tcpdump è un potente strumento di monitoraggio della rete che consente a un utente di filtrare i pacchetti e il traffico su una rete in modo efficiente. È possibile ottenere informazioni dettagliate relative a TCP / IP e ai pacchetti trasmessi sulla rete. Tcpdump è un'utilità della riga di comando, il che significa che puoi eseguirla su server Linux senza display.

Gli amministratori di sistema possono anche integrare l'utilità tcpdump con cron al fine di automatizzare varie attività come la registrazione. Poiché le sue numerose funzionalità lo rendono abbastanza versatile, tcpdump funziona come uno strumento di risoluzione dei problemi e di sicurezza.

instagram viewer

Come installare tcpdump su Linux

Sebbene la maggior parte delle volte troverai tcpdump preinstallato sul tuo sistema, alcune distribuzioni Linux non vengono fornite con il pacchetto. Pertanto, potrebbe essere necessario installare manualmente l'utilità sul sistema.

Puoi controllare se tcpdump è installato sul tuo sistema usando il quale comando.

quale tcpdump

Se l'output mostra un percorso di directory (/usr/bin/tcpdump), quindi il tuo sistema ha il pacchetto installato. Tuttavia, in caso contrario, puoi farlo facilmente utilizzando il gestore di pacchetti predefinito sul tuo sistema.

Per installare tcpdump su distribuzioni basate su Debian come Ubuntu:

sudo apt-get install tcpdump

Anche l'installazione di tcpdump su CentOS è facile.

sudo yum installa tcpdump

Sulle distribuzioni basate su Arch:

sudo pacman -S tcpdump

Per installare su Fedora:

sudo dnf installa tcpdump

Nota che il pacchetto tcpdump richiede libcap come dipendenza, quindi assicurati di installarlo anche sul tuo sistema.

Esempi di tcpdump per acquisire pacchetti di rete su Linux

Ora che hai installato con successo tcpdump sulla tua macchina Linux, è il momento di monitorare alcuni pacchetti. Poiché tcpdump richiede i permessi di superutente per eseguire la maggior parte delle operazioni, dovrai aggiungere sudo ai tuoi comandi.

1. Elenca tutte le interfacce di rete

Per verificare quali interfacce di rete sono disponibili per l'acquisizione, utilizzare il -D flag con il comando tcpdump.

tcpdump -D

Passando il --list-interfaces flag come argomento restituirà lo stesso output.

tcpdump --list-interfaces

L'output sarà un elenco di tutte le interfacce di rete presenti nel sistema.

Dopo aver ottenuto l'elenco delle interfacce di rete, è il momento di monitorare la rete acquisendo i pacchetti sul sistema. Sebbene sia possibile specificare quale interfaccia si desidera utilizzare, il file qualunque L'argomento comanda a tcpdump di acquisire i pacchetti di rete utilizzando qualsiasi interfaccia attiva.

tcpdump: interfaccia qualsiasi

Il sistema visualizzerà il seguente output.

Relazionato: Cos'è il modello di interconnessione dei sistemi aperti?

2. Il formato di output di tcpdump

A partire dalla terza riga, ogni riga dell'output denota uno specifico pacchetto catturato da tcpdump. Ecco come appare l'output di un singolo pacchetto.

17: 00: 25.369138 wlp0s20f3 Out IP localsystem.40310> kul01s10-in-f46.1e100.net.https: Flags [P.], seq 196: 568, ack 1, win 309, opzioni [nop, nop, TS val 117964079 ecr 816509256], lunghezza 33

Tieni presente che non tutti i pacchetti vengono catturati in questo modo, ma questo è il formato generale seguito dalla maggior parte di essi.

L'output contiene le seguenti informazioni.

  1. Timestamp del pacchetto ricevuto
  2. Nome dell'interfaccia
  3. Flusso di pacchetti
  4. Nome del protocollo di rete
  5. Indirizzo IP e dettagli della porta
  6. Flag TCP
  7. Il numero di sequenza di dati nel pacchetto
  8. Riconosci i dati
  9. Dimensioni della finestra
  10. Lunghezza del pacchetto

Il primo campo (17:00:25.369138) visualizza il timestamp quando il sistema ha inviato o ricevuto il pacchetto. L'ora registrata viene estratta dall'ora locale del sistema.

Il secondo e il terzo campo indicano l'interfaccia utilizzata e il flusso del pacchetto. Nello snippet sopra, wlp0s20f3 è il nome dell'interfaccia wireless e Su è il flusso di pacchetti.

Il quarto campo include le informazioni relative al nome del protocollo di rete. In generale, troverai due protocolli: IP e IP6, dove IP indica IPV4 e IP6 è IPV6.

Il campo successivo contiene gli indirizzi IP o il nome del sistema di origine e di destinazione. Gli indirizzi IP sono seguiti dal numero di porta.

Il sesto campo nell'output è costituito dai flag TCP. Ci sono vari flag che vengono usati nell'output di tcpdump.

Nome bandiera Valore Descrizione
SYN S Connessione avviata
FIN F Connessione terminata
SPINGERE P I dati vengono inviati
RST R La connessione viene ripristinata
ACK . Riconoscimento

L'output può anche contenere una combinazione di diversi flag TCP. Per esempio, BANDIERA [f.] sta per un pacchetto FIN-ACK.

Spostandosi ulteriormente nello snippet di output, il campo successivo contiene il numero di sequenza (segg 196: 568) dei dati nel pacchetto. Il primo pacchetto ha sempre un valore intero positivo ei pacchetti successivi utilizzano il numero di sequenza relativo per migliorare il flusso di dati.

Il campo successivo contiene il numero di riconoscimento (ack 1) o un semplice numero Riconoscimento. Il pacchetto catturato nella macchina del mittente ha 1 come numero di riconoscimento. All'estremità del destinatario, il numero di riconoscimento è il valore del pacchetto successivo.

Il nono campo nell'output si adatta alle dimensioni della finestra (vincere 309), che è il numero di byte disponibili nel buffer di ricezione. Ci sono molti altri campi che seguono la dimensione della finestra, inclusa la dimensione massima del segmento (MSS).

L'ultimo campo (lunghezza 33) contiene la lunghezza del pacchetto complessivo catturato da tcpdump.

3. Limita il conteggio dei pacchetti acquisiti

Durante la prima esecuzione del comando tcpdump, potresti notare che il sistema continua a catturare i pacchetti di rete finché non passi un segnale di interruzione. È possibile sovrascrivere questo comportamento predefinito specificando in anticipo il conteggio dei pacchetti che si desidera acquisire utilizzando il file -c bandiera.

tcpdump --interface any -c 10

Il comando di cui sopra catturerà dieci pacchetti da qualsiasi interfaccia di rete attiva.

4. Filtra pacchetti in base ai campi

Quando stai risolvendo un problema, ottenere un grande blocco di output di testo sul tuo terminale non lo rende più facile. È qui che entra in gioco la funzione di filtro in tcpdump. È possibile filtrare i pacchetti in base a vari campi tra cui host, protocollo, numero di porta e altro.

Per acquisire solo i pacchetti TCP, digitare:

tcpdump --interfaccia qualsiasi -c 5 tcp

Allo stesso modo, se vuoi filtrare l'output utilizzando il numero di porta:

tcpdump --interface any -c 5 port 50

Il comando sopra menzionato recupererà solo i pacchetti trasmessi attraverso la porta specificata.

Per ottenere i dettagli del pacchetto per un host particolare:

tcpdump --interfaccia qualsiasi host -c 5 112.123.13.145

Se desideri filtrare i pacchetti inviati o ricevuti da un host specifico, utilizza l'estensione src o dst argomento con il comando.

tcpdump --interface any -c 5 src 112.123.13.145
tcpdump --interface any -c 5 dst 112.123.13.145

È inoltre possibile utilizzare gli operatori logici e e o per combinare due o più espressioni insieme. Ad esempio, per ottenere pacchetti che appartengono all'IP di origine 112.123.13.145 e usa il porto 80:

tcpdump --interface any -c 10 src 112.123.13.145 e porta 80

Le espressioni complesse possono essere raggruppate insieme usando parentesi come segue:

tcpdump --interface any -c 10 "(src 112.123.13.145 o src 234.231.23.234) e (porta 45 o 80)"

5. Visualizza il contenuto del pacchetto

Puoi usare il file -UN e -X flag con il comando tcpdump per analizzare il contenuto del pacchetto di rete. Il -UN flag sta per ASCII formato e -X denota esadecimale formato.

Per visualizzare il contenuto del prossimo pacchetto di rete catturato dal sistema:

tcpdump --interface any -c 1 -A
tcpdump --interface any -c 1 -x

Relazionato: Che cos'è la perdita di pacchetti e come risolverne la causa?

6. Salva i dati acquisiti su un file

Se vuoi salvare i dati di acquisizione a scopo di riferimento, tcpdump è lì per aiutarti. Basta passare il file -w flag con il comando predefinito per scrivere l'output su un file invece di visualizzarlo sullo schermo.

tcpdump --interface any -c 10 -w data.pcap

Il .pcap estensione file sta per acquisizione di pacchetti dati. È inoltre possibile emettere il suddetto comando in modalità dettagliata utilizzando il -v bandiera.

tcpdump --interface any -c 10 -w data.pcap -v

Per leggere un file .pcap file usando tcpdump, usa il -r flag seguito dal percorso del file. Il -r sta per Leggere.

tcpdump -r data.pcap

È inoltre possibile filtrare i pacchetti di rete dai dati del pacchetto salvati nel file.

tcpdump -r data.pcap porta 80

Monitoraggio del traffico di rete su Linux

Se ti è stato assegnato il compito di amministrare un server Linux, il comando tcpdump è un ottimo strumento da includere nel tuo arsenale. È possibile risolvere facilmente i problemi relativi alla rete acquisendo i pacchetti trasmessi sulla rete in tempo reale.

Ma prima di tutto, il tuo dispositivo deve essere connesso a Internet. Per i principianti di Linux, anche la connessione con il Wi-Fi tramite la riga di comando può essere un po 'impegnativa. Ma se stai usando gli strumenti giusti, è un gioco da ragazzi.

E-mail
Come connettersi al Wi-Fi tramite il terminale Linux con Nmcli

Vuoi connetterti a una rete Wi-Fi tramite la riga di comando di Linux? Ecco cosa devi sapere sul comando nmcli.

Leggi Avanti

Argomenti correlati
  • Linux
  • Sicurezza
  • Analisi forense della rete
Circa l'autore
Deepesh Sharma (37 articoli pubblicati)

Deepesh è il Junior Editor per Linux presso MUO. Scrive contenuti informativi su Internet da oltre 3 anni. Nel tempo libero ama scrivere, ascoltare musica e suonare la chitarra.

Altro da Deepesh Sharma

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Ancora un passo…!

Conferma il tuo indirizzo e-mail nell'e-mail che ti abbiamo appena inviato.

.