Il problema

Si vuole ascoltare il traffico di rete utilizzando il programma tcpdump, ma si riceve il seguente messaggio di errore:

root@linux# tcpdump -n tcp port 22
tcpdump: socket: Address family not supported by protocol

La causa

Il modulo del kernel af_packet non è caricato. Questo modulo implementa i raw socket, con i quali si può accedere direttamente a una scheda di rete, aggirando il TCP/IP - e questo modulo è esattamente ciò di cui tcpdump ha bisogno.

Normalmente il modulo viene caricato automaticamente, ma questa situazione può verificarsi se il modulo manca o se le dipendenze del modulo non sono note (depmod -a non è stato eseguito).

Il rimedio

Se necessario, aggiornare le dipendenze del modulo e poi caricarlo manualmente:

root@linux# depmod -a
root@linux# modprobe af_packet

Se necessario, verificare la presenza del modulo:

root@linux# find /lib/modules -name "af_packet*"
/lib/modules/2.6.13-15-default/kernel/net/packet/af_packet.ko

Se modprobe non funziona, si può provare a caricare il modulo direttamente con insmod:

root@linux# insmod /lib/modules/2.6.13-15-default/kernel/net/packet/af_packet.ko

Linux knowledge

Questi articoli sono stati scritti dal fondatore di Checkmk molti anni fa.
Tuttavia, sono ancora validi e quindi li conserviamo sul nostro sito web.
Da allora Mathias ha sviluppato un software di monitoraggio chiamato Checkmk.

Scopri di più