tcpdump正在俯瞰一些snmp流量


1

我正在嗅探SNMP流量来为某些网络硬件编写测试用例。 目前我开始像这样tcpdump:

tcpdump -i any -nn port snmp

然后,我从同一主机发送一些SNMP流量:

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现在不打印任何东西。我用tshark验证了数据包是在线上看到的。但是,如果我重复snmpget命令,它将打印流量:

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

请注意,这与上面的tcpdump过程相同。如果我重新启动了tcpdump,它就不会打印任何内容。基本上,tcpdump似乎会抑制它收到的前几个(四个?)snmp数据包。在前几个数据包之后,它可以正常工作。

如何在没有“预热阶段”的情况下使tcpdump打印所有数据包。这个测试是手工完成的,调用tcpdump和调用snmpget之间有几秒钟的时间。 Tshark查看并打印所有流量,但我不能使用tshark,因为它在生产系统上不可用。


你怎么知道错过了前几/四包?您是否尝试在'warm'tcpdump处于活动状态时再次运行snmpget命令(在您之前) ^C 它)?它捕获了什么?它真的是错过的前几个数据包或错过了特定类型的数据包吗?
nik

@nik:是的,我试过了。而且,正如我在问题中所说,我同时运行tshark和tshark打印这些数据包。
icehawk

好的,尝试使用主机过滤器(主机 192.168.2.4 而不是SNMP协议过滤器。 Tcpdump通常不丢帧,你的输出显示0内核丢弃,我认为你没有足够大的流量来丢失较低层的帧。上面的两行很有意思 - 在8个过滤中捕获了4行。这意味着您有一个捕获过滤器(SNMP),导致跳过其他4个帧。因此,尝试主机过滤器(或短时间的全宽滤波器,然后从捕获的pcap过滤)。
nik
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.