Ihr Problem
Sie wollen Netzwerkverkehr mit Hilfe des Programms tcpdump
mithören, bekommen aber folgende Fehlermeldung:
root@linux# tcpdump -n tcp port 22
tcpdump: socket: Address family not supported by protocol
Die Ursache
Das Kernelmodul af_packet ist nicht geladen. Dies implementiert Raw-Sockets, mit denen man an TCP/IP vorbei direkt auf eine Netzwerkkarte zugreifen kann. Und genau das benötigt tcpdump
.
Normalerweise wird das Modul automatisch geladen. Wenn das Modul aber fehlt oder die Modulabhängigkeiten nicht bekannt sind (depmod -a
nicht ausgeführt wurde), kann es zu diesem Zustand kommen.
Die Lösung
Aktualsieren Sie evtl. Ihre Modulabhängigkeiten und laden dann das Modul von Hand:
root@linux# depmod -a
root@linux# modprobe af_packet
Kontrollieren Sie ggfls., ob das Modul vorhanden ist:
root@linux# find /lib/modules -name "af_packet*"
/lib/modules/2.6.13-15-default/kernel/net/packet/af_packet.ko
Wenn modprobe
nicht funktioniert, können Sie versuchen, das Modul mit insmod
direkt zu laden:
root@linux# insmod /lib/modules/2.6.13-15-default/kernel/net/packet/af_packet.ko