据我所知,在正常行为中,客户端将使用随机端口连接SNMP服务端口,现在客户端使用SNMP陷阱端口(162)与服务器通信。
我的问题:
SNMP通常通过UDP传输,因此实际上没有“连接”,从技术上讲,源端口无关紧要。您可以发送数据报(例如陷阱)而不绑定到端口。
但是,即使在UDP上运行,SNMP也会涉及一些双向通信。如果您期望响应(客户端在发送SNMP Get或Set请求时执行此操作),则另一端知道发送它的唯一位置是返回请求来自的位置,即原始IP /端口组合。 SNMP数据包中没有提供任何替代“返回地址”信息的信息。
因此,为了在可预测的端口上获得响应,您将从绑定的套接字发送请求数据报。通常,客户端将在端口162上运行自己的侦听“服务器”,从那里发送请求,然后它也可以在那里接收响应。否则你不会看到回复。这也允许我们设置简单的防火墙规则(尽管由于hole punching *,您通常可以在没有防火墙规则的情况下逃离返回路径)。
对于服务器也是如此,该服务器发出陷阱并通知已知的,标准的,可预测的端口,这样您就可以以可靠的方式配置陷阱接收器和防火墙,但是通知响应可以发送回已知的,您正在聆听的标准,可预测的端口。
tl; dr:如果你愿意,你可以从任意端口发送你的请求,但它不是很有用。
*当客户端/接收器仅在最后一次检出某种请求数据包后约15分钟内发现陷阱时,我的SNMP实现似乎有问题。后来的陷阱似乎完全没有了。经过对服务器端的大量调试,结果发现我们忘记在客户端的入站防火墙上打开正确的端口,并且意外地依赖于打孔,这有时间限制。 :d
至于为什么Wireshark会看到来自未配置的SNMP客户端的流量,那么,您的SNMP客户端实际上是配置为发送请求,还是您错误解释了结果。 Wireshark没有发明流量。如果没有更完整的网络设置,软件设置以及您看到的数据包的图片,我们只能推测您造成混淆的确切原因。