考虑的研究/方法

考虑的研究/方法

有没有简单的方法来进行用户空间 UDP 反向代理?

具体来说,我想要相当于

ssh -R 10000:localhost:10000 $server

但对于UDP。

我希望这种方法是不可靠的从某种意义上说,如果数据包在我和服务器之间丢失,则不会发生重传。还假设客户端计算机无法收到UDP 数据包。

考虑的研究/方法

  • Openvpn 在 IP 级别执行此隧道。配置方面给人感觉很重,需要进行不少设置
  • socat也许能够神奇地做到这一点。但我无法通过查看文档找到方法
  • 有一种称为“VPN TAP”接口的东西,听起来有点像您和服务器之间的虚拟线路。我发现一些开源程序声称可以创建用户空间TAP接口
  • 这一页讨论通过 TCP 路由 UDP(请注意,这会产生重传)
  • 玻璃钢看起来可能很简单 - 但我无法从初步检查中看出它的作用。

开放VPN

正如人们在评论中明确指出的那样,就原始性能而言,OpenVPN 是最好的方法(因为它适用于 TCP 数据包转发 - 假设需要加密)。当然,缺点是这需要连接双方的根进程、证书、配置文件、几个 IP 地址以及这些 IP 地址的一些路由规则。

答案1

您可以在 SSH 隧道的另一端放置 SOCKS 代理。如果我没记错的话,在对参数进行微小调整后,附带的示例脚本之一libio-socket-socks-perl应该足够了。

答案2

我注意到可用于反向代理 UDP 的工具有:

  • frp,就像你提到的,我测试了它(他们有一个 dns 示例)

  • 带有流指令的 nginx 并监听 udp:

    溪流 {

    服务器 { 监听 10000 udp; proxy_pass 后端:10000; }

(如您所见,第一个反向代理 UDP,它还将代理回所有响应,因为在 DNS 中响应可以是多个,就像来自对等方的整个视频和音频流)

相关内容