tcpdump übersieht den Snmp-Verkehr

3892
icehawk

Ich schnüffle nach SNMP-Verkehr, um ein Testcase für einige Netzwerkhardware zu codieren. Momentan starte ich tcpdump so:

tcpdump -i any -nn port snmp 

Ich sende dann SNMP-Verkehr vom selben Host:

snmpget -v 3 -u public 192.168.2.4 1.3.6.1.4.1.3181.10.6.3.65.1.1.5.0 

tcpdump druckt momentan NICHT. Ich habe mit tshark überprüft, dass die Pakete auf dem Draht sichtbar sind. Wenn ich jedoch den Befehl snmpget wiederhole, wird der Datenverkehr gedruckt:

pi@raspberrypi:~/martin_testframework/Frameworks/P2P $ sudo tcpdump -i any -nn port snmp tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes 15:30:13.033363 IP 192.168.2.5.39351 > 192.168.2.4.161: F=r U= E= C= GetRequest(14)  15:30:13.034473 IP 192.168.2.4.161 > 192.168.2.5.39351: F= U= E= 0x800x000x1F0x880x040x4D0x490x430x520x4F0x530x450x4E0x53 C= Report(31) .1.3.6.1.6.3.15.1.1.4.0=2 15:30:13.034908 IP 192.168.2.5.39351 > 192.168.2.4.161: F=r U=public E= 0x800x000x1F0x880x040x4D0x490x430x520x4F0x530x450x4E0x53 C= GetRequest(35) .1.3.6.1.4.1.3181.10.6.3.65.1.1.5.0 15:30:13.036447 IP 192.168.2.4.161 > 192.168.2.5.39351: F= U=public E= 0x800x000x1F0x880x040x4D0x490x430x520x4F0x530x450x4E0x53 C= GetResponse(35) .1.3.6.1.4.1.3181.10.6.3.65.1.1.5.0="" ^C 4 packets captured 8 packets received by filter 0 packets dropped by kernel 

Bitte beachten Sie, dass dies der gleiche tcpdump-Prozess wie oben ist. Wenn ich tcpdump neu gestartet hätte, hätte es nichts gedruckt. Im Grunde scheint tcpdump die ersten paar (vier?) SNMP-Pakete zu unterdrücken, die es empfängt. Nach den ersten Paketen funktioniert es korrekt.

Wie kann ich tcpdump alle Pakete ohne "Aufwärmphase" drucken lassen? Dieser Test wurde von Hand durchgeführt und es gab einige Sekunden zwischen dem Aufruf von tcpdump und dem Aufruf von snmpget. Tshark sieht und druckt den gesamten Datenverkehr, aber ich kann tshark nicht verwenden, da er im Produktionssystem nicht verfügbar ist.

1
Woher wissen Sie, dass die ersten paar Pakete versäumt werden? Haben Sie versucht, den Befehl snmpget erneut auszuführen, während der 'warme' tcpdump aktiv ist (bevor Sie `^ C` ausführen)? Was erfasst es? Sind es wirklich die ersten Pakete, die verpasst werden, oder werden bestimmte Pakete verpasst? nik vor 7 Jahren 0
@nik: Ja, das habe ich versucht. Und, wie ich schon in der Frage sagte, führe ich gleichzeitig die Pakete tshark und tshark druckt aus. icehawk vor 7 Jahren 0
Ok, versuchen Sie, einen Hostfilter (Host `192.168.2.4`) anstelle des SNMP-Protokollfilters zu verwenden. Tcpdump löscht normalerweise keine Frames, Ihre Ausgabe zeigt 0 Kernel-Drops und ich glaube nicht, dass Sie über ausreichend Traffic verfügen, um Frames in niedrigeren Schichten zu übersehen. Die beiden obigen Zeilen sind interessant - 4 von 8 gefilterten. Dies bedeutet, dass Sie über einen Capture-Filter (SNMP) verfügen, durch den 4 weitere Frames übersprungen werden. Probieren Sie also den Host-Filter (oder einen vollständigen Wide-Filter für kurze Zeit aus und filtern Sie dann aus einer erfassten PCAP). nik vor 7 Jahren 0

0 Antworten auf die Frage