使用 socat 绕过 NAT

使用 socat 绕过 NAT

我面临以下问题:

假设我的机器为 PC-1,我想要访问的远程机器为 PC-2。PC-1 和 PC-2 位于不同的网络中,并且都位于 NAT 后面。

为了实现 PC-1 到 PC-2 的连接,我使用了运行 socat 的具有有效外部 IP(A VPS)的第三台机器。

因此,PC-2 在端口 5900 上运行 VNC 服务器。为了创建隧道,我使用了 socat 及其语法:

socat tcp-l:10000 tcp4:localhost:5900

在 VPS 上:

socat tcp-l:20000 tcp-l:10000

因此,如果我使用 VPS IP 地址和端口 20000 连接 PC-1,则连接有效,并且我会从 PC-2 接收 VNC 会话我的问题是:

1:有没有更实用的方法?我是不是想得太远了?

2:会话结束后,我无法再次连接,直到我在两台机器上重新启动 socat。有没有办法让套接字再次监听?(我知道 fork 和 repeataddr,但如何使用它们?)

提前致谢!

相关内容