【问题标题】:How do I tunnel udp over ssh?如何通过 ssh 隧道 udp?
【发布时间】:2011-07-29 19:09:40
【问题描述】:

我正在开发一个收集网络设备上各种信息的 Java 应用程序。所有这些设备都位于网络堡垒后面,我使用 JSch 按需创建到远程设备的 TCP 隧道。这适用于基于 TCP 的 TL1 等协议。但是我确实发现自己也需要收集 SNMP 数据。

我可以访问的堡垒服务器相当陈旧且有限,而且我没有很多选择可以在那里构建 SNMP 代理。我的问题是社区是否知道根据需要以编程方式建立隧道的干净、可靠的方法。我查看了诸如this one 之类的解决方案,但由于我有成千上万个可能的IP 地址,因此手动一次性方法是不可行的。如果需要的话,我会推动一个能够做一个强大的 snmp 代理的服务器,但我需要知道在我战斗之前没有其他方法。

【问题讨论】:

    标签: java ssh udp snmp tunnel


    【解决方案1】:

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

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

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

    我想这样的事情可以做到:

    netcat -u server 161 
    

    或者socat:

    socat STDIO UDP:server:161
    

    【讨论】:

      【解决方案2】:

      要将 udp:server:3200 转发到当前机器,请执行以下操作:

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

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

      【讨论】:

      • 你的问题真的很有帮助,即使已经 7 年前了
      猜你喜欢
      • 2012-01-26
      • 2016-09-09
      • 2014-09-03
      • 2013-05-26
      • 2015-06-15
      • 1970-01-01
      • 2018-09-02
      • 2013-09-28
      • 2012-08-15
      相关资源
      最近更新 更多