0

我想设置一个反向 udp 隧道,因为我需要从远程连接到我的 openvpn 服务器,而 openvpn 服务器位于 NAT 后面。为此,我使用 socat 和 ssh。tcp 隧道命令:

socat exec:"ssh removeserver \"socat tcp-listen:10000,fork -\"" tcp-connect:localhost:22

确实可以正常工作,然后我就可以建立到 remoteserver:10000 的 ssh 连接。

但是当我想对 udp 做同样的事情时:

socat exec:"ssh removeserver \"socat udp-listen:10000,fork -\"" udp-connect:localhost:1194

然后尝试建立openvpn连接,我收到以下错误:

2011/12/23 13:27:43 socat[28241] E read(3, 0x80c3b08, 8192): Connection refused

隧道起初似乎工作,因为两个日志文件(服务器和客户端)都有连接尝试的条目。但是无法建立连接。

4

1 回答 1

2

我刚刚尝试过这个,我相信它失败的原因是因为隧道的 ssh 部分没有保留 UDP 数据报的大小。IE。一个 14 字节的数据报和一个 22 字节的数据报在另一端组合成一个 26 字节的数据报。Openvpn 在这种情况下不起作用。

我已经通过与此类似的构造获得了概念验证成功,但是有一个程序可以读取 UDP 数据报并将它们转换为具有 16 位长度前缀的 tcp 流(即长度、字节、长度、字节等),显然也相反。

有了这个,我能够隧道 openvpn 。

于 2014-05-30T17:06:28.480 回答