Wireshark捕获的SNMP流量,但源端口和目标端口相同

时间:2018-09-05 10:12:51

标签: snmp

据我所知,在正常情况下,客户端会随机分配一个端口来连接SNMP服务端口,现在客户端使用SNMP陷阱端口(162)与服务器进行通信。

我的问题:

  1. 作为客户端设置,我没有为客户端配置任何SNMP设置,为什么WireShark能够捕获来自客户端的SNMP流量?
  2. 为什么客户端使用SNMP陷阱端口(162)与服务器通信,而不是使用随机端口?

Screenshot from Wireshark

1 个答案:

答案 0 :(得分:2)

SNMP通常通过UDP传输,因此实际上没有“连接”,并且从技术上讲,源端口无关紧要。您可以发送数据报(例如陷阱)而无需绑定到端口。

但是,即使在UDP上运行,SNMP也确实涉及一些双向通信。如果您期望响应(客户端正在发送SNMP Get或Set请求时将执行此操作),则另一端唯一知道发送该响应的位置是返回请求的来源,即原始IP /端口组合。 SNMP数据包中没有提供任何替代“返回地址”信息的信息。

因此,为了在可预测的端口上获得响应,您将从 bound 套接字发送请求数据报。通常,客户端将在端口162上运行其自己的侦听“服务器”,从那里发送请求,然后也可以在那里接收响应。否则,您将看不到回复。这也使我们能够设置简单的防火墙规则(尽管由于hole punching *,您经常可以在没有防火墙规则的情况下返回路径)。

对于服务器也是如此,它发出陷阱并通知已知的,标准的,可预测的端口,不仅使您可以可靠地配置陷阱接收器和防火墙,而且可以将通知响应发送回去。到您正在监听的已知的,可预测的标准端口。

tl; dr:您可以根据需要从任意端口发送请求,但这不是很有用。


*当客户端/接收器仅在最后一次发出某种请求数据包后约15分钟内才看到陷阱时,我的SNMP实现似乎有问题。随后的陷阱似乎完全消失了。经过服务器端的大量调试后,事实证明,我们忘记为客户端打开入站防火墙上的正确端口,而无意中依赖于打孔,这是有时间限制的。 :D


关于Wireshark为什么看到来自未配置的SNMP客户端的流量的原因,实际上是您的SNMP客户端实际上被配置为发送请求,或者您误解了结果。 Wireshark不会创造流量。没有更完整的网络设置,软件设置以及所看到的数据包的图片,我们只能推测出造成混乱的确切原因。