Estou farejando o tráfego SNMP para codificar um testcase para algum hardware de rede. Atualmente eu inicio o tcpdump assim:
tcpdump -i any -nn port snmp
Em seguida, envio algum tráfego SNMP do mesmo 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
O tcpdump NÃO imprime nada agora. Eu verifiquei com tshark, que os pacotes são vistos no fio. No entanto, se eu repetir o comando snmpget, ele irá imprimir o tráfego:
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
Por favor, note que este é o mesmo processo tcpdump como acima. Se eu tivesse reiniciado o tcpdump, ele não teria imprimido nada. Basicamente, o tcpdump parece suprimir os primeiros (quatro?) Pacotes SNMP que recebe. Após os primeiros pacotes, ele funciona corretamente.
Como posso fazer o tcpdump imprimir todos os pacotes sem uma "fase de aquecimento"? Este teste foi feito manualmente e houve vários segundos entre a chamada para o tcpdump e a chamada para o snmpget. Tshark vê e imprime todo o tráfego, mas eu não posso usar tshark, pois não está disponível no sistema de produção.