我正在开发一个Java应用程序,它可以收集有关网络设备的各种信息。所有这些设备都在网络堡垒后面,我使用JSch按需创建到远程设备的TCP隧道。这适用于基于TCP的TL1等协议。但是我发现自己也需要收集SNMP数据。
我可以访问的堡垒服务器相当陈旧且有限,而且我没有很多选项来在那里构建SNMP代理。我的问题是,社区是否知道一种干净,可靠的方式,可根据需要以编程方式建立隧道。我已经研究过诸如this one之类的解决方案,但由于我有成千上万可能的IP地址,手动的一次性方法是不可行的。如果需要,我会推动一个能够做一个强大的snmp代理的服务器,但我需要知道在我打这场战斗之前别无他法。
答案 0 :(得分:3)
SSH协议不包含任何UDP转发功能。
因此,您需要在SSH服务器端运行一些程序,该程序将为您发送UDP数据包,并接收已发送的数据包。
我不知道SNMP的详细信息,但对于简单的情况,您可以使用exec通道启动netcat
或socat
,通过标准输入/标准输出发送数据包。
我想这样的事情可以做到:
netcat -u server 161
或socat
:
socat STDIO UDP:server:161
答案 1 :(得分:0)
将udp:server:3200转发到当前计算机,执行以下操作:
socat SYSTEM:"ssh server socat - udp\:127.0.0.1\:3200" udp-l:3200,fork,reuseaddr
请注意,在使用隧道之前,必须打开并监听onver上的udp端口3200。