2011-07-29 160 views
2

我正在研究收集网络设备上各种信息的Java应用程序。所有这些设备都位于网络堡垒之后,我使用JSch按需创建TCP隧道到远程设备。这适用于基于TCP的TL1等协议。但是我发现自己也需要收集SNMP数据。如何通过SSH隧道udp?

我有权限访问的堡垒服务器比较陈旧,而且我没有太多的选项来在那里建立SNMP代理服务器。我的问题是,如果社区知道根据需要以程序化方式建立隧道的干净可靠的方式。我查看了诸如this one之类的解决方案,但是由于我有数千个可能的数以万计的可能的IP地址,因此手动一次性方法是不可行的。如果需要的话,我会推出一个能够做出强大snmp代理的服务器,但是我需要知道在我打这场战斗之前没有别的办法。

回答

3

SSH协议不包含UDP转发的任何内容。

所以你需要在SSH服务器端运行一些程序,它会为你发送UDP数据包,并接收发送的数据包。

我不知道SNMP的详细信息,但对于简单的情况,您可以简单地使用exec通道启动netcatsocat,通过标准输入/标准输出发送数据包。

我想这样的事情可以做:

netcat -u server 161 

或者与socat

socat STDIO UDP:server:161 
0

转发UDP:服务器:3200到当前机器,请执行以下操作:

socat SYSTEM:"ssh server socat - udp\:127.0.0.1\:3200" udp-l:3200,fork,reuseaddr 

请注意,在使用隧道之前,必须先打开并监听上出口的udp端口3200。