【问题标题】:Bidirectional UDP tunnel with socat on LinuxLinux 上使用 socat 的双向 UDP 隧道
【发布时间】:2022-01-18 05:18:03
【问题描述】:

是否可以使用 socat 创建双向 UDP 隧道?起点是客户端(C)与服务器(S)通信并接收回复,所以C⟷S。当然,C 和 S 在不同的网络上,它们之间有一个中继(R),因此需要 C⟷R⟷S。中继运行的是 Ubuntu Linux。

this 为例,使用 socat:

sudo nohup socat UDP-LISTEN:1194,fork,reuseaddr UDP:IP-ADDRESS-OF-HOME-ROUTER:1194 &

显然会导致中继(R)收到的所有数据包都被转发到IP-ADDRESS-OF-HOME-ROUTER,包括来自服务器的回复数据包,或C⟶R⟷S。

所以我的问题是,是否可以让 socat 等待来自服务器的回复数据包,然后将它们转发回客户端?是否有其他方法可以实现这一目标?

【问题讨论】:

  • 我没试过,不过你可以试试UDP-RECVFROMUDP-SENDTO。我还建议阅读/略读the manual
  • 我认为你是正确的,根据你链接到它的文档应该可以工作。

标签: linux networking portforwarding tunnel socat


【解决方案1】:

第二种方法(带有UDP-RECVFROM/UDP-SENDTO的数据报)只适用于查询/应答模式;来自 OpenVPN 服务器的第二个答案将不会被传回客户端;并且对于每个查询数据包都会分叉一个子进程。

第一种方法为每个“连接”(由源端口确定)分叉一个子进程,并且 - 在来自客户端的初始数据包之后 - 双向转发。 子进程将“永远”挂起,因此建议使用超时选项 -T 3600 左右。

【讨论】:

  • 这很有道理,可能解释了连接不稳定的原因。
猜你喜欢
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多