两台经过 NAT 的机器之间直接进行本地流量 TCP 文件传输

两台经过 NAT 的机器之间直接进行本地流量 TCP 文件传输

目的:

我想在位于两个不同 NAT 后面的两台机器之间执行最快的基于 TCP 的文件传输,在这种情况下,公共端口无法重定向到两台机器中的任何一台(本地策略)。

近似值:

到目前为止,我可以:1) 设置一个带有中央公共节点作为中继的 VPN(OpenVPN),2) 设置网状 VPN,以便在两台机器之间建立直接链接,而无需中继(tinc)。然后可以无缝使用 VPN 通过任何第三方文件传输客户端/服务器执行数据传输(就像两台机器都在同一个 LAN 上一样)。

问题:

两台机器之间的线路非常不稳定,单个 TCP 流通常只能达到可用带宽的一小部分。此外,在 TCP 上封装 TCP 会产生额外的开销,并且对于不稳定的线路而言效率极低。因此,我想在两台机器之间建立直接(无中继)和本地流量链路(无 VPN 封装)。自然的选择是 STUN 框架,但我得出的结论是,要与公共 STUN 服务器交互并实现 NAT 遍历,必须使用临时 STUN 库编译应用程序,并依赖 STUN 特定套接字而不是常规套接字。这基本上意味着每组新的启用 STUN 的客户端/服务器应用程序都需要从头开始编写。

问题:

为了简化这个过程,我想知道是否有可能实现一个通用的 STUN 客户端,它基本上作为守护进程在两台机器上运行。客户端将连接到公共 STUN 服务器以注册和查询其他客户端的信息。它们还会将所有来自本地监控端口的传出流量重定向到正确的 IP/端口(用户配置 + STUN 服务器信息)以到达另一台机器。这可以让任何第三方客户端/服务器应用程序无缝打开常规 TCP 套接字(可能有几个)并与另一台机器建立连接(就像在同一个 LAN 上一样)。

相关内容