如何连接两台都位于 NAT 后面的机器?

如何连接两台都位于 NAT 后面的机器?

我有两台机器,都位于 NAT-ting 路由器后面,导致它们无法直接交换数据包。

然而,我相信,如果 NAT 防火墙不是非常不合作并且协议是无状态的(可能是 UDP),那么通过一些外部帮助,这样的事情仍然是可能的。

我的想法是这样的:

Machine1 -- Router1 <--> Router2 -- Machine2

我的想法是 Machine1:30000 向 Router2:30000 发送 UDP 数据包。因此,源端口和目标端口都是 30000(我随机选择这个数字)。

当然,Router2 不会传输它,因为它的连接跟踪不知道它。

然而,如果同时发送反向 UDP 数据包,Machine2:30000 -> Router1:30000,情况会好得多!

然后,两个路由器都会认为传入的数据包是对传出的 UDP 数据包的答复。

当然,路由器必须允许 UDP 1,并且它们不应该改变新传出的连接的源端口。

它存在吗?有可能有一个命令行工具吗?

1我已经见过 s..suboptimal互联网服务供应商UDP 被禁用,没有任何解释,他们的客户支持也不想理解我在说什么。甚至没有他们的 L2 支持。

答案1

如果您想让自己的生活变得轻松,我建议您查看一下尾鳞。 Tailscale 基本上可以让你击穿任何东西。它的好处是,它甚至允许您访问物理子网上不允许您安装软件的设备(例如打印机等)。

编辑:我是不是以任何方式隶属于 Tailscale;我只是一名发现这项技术和解决方案本身非常出色的最终用户。它可以免费安装在最多 100 台设备上。

对于那些好奇的人来说,这里有几点:

  • 零配置网络
  • 安全连接:它使用 WireGuard。
  • 易于扩展
  • 跨平台:它支持 Windows、macOS、Linux、iOS 和 Android(可能还有更多)。
  • 它自动创建一个点对点网状网络
  • 访问控制(ACL):提供细粒度的访问控制,允许您管理谁有权访问网络内的内容。
  • 它的设计目的是轻的,这使得它甚至适合在功能较弱的硬件上使用(我在旧的 RasPI 上运行它)。
  • 子网路由:它允许子网路由,使网络上的设备能够访问本地子网中无法安装 Tailscale 的其他设备(例如打印机)。此功能将 Tailscale 的实用性扩展到网络上的几乎所有设备。
  • 无需公共 IP 地址:它消除了每个设备都需要公共 IP 地址的需要。
  • 端到端加密
  • NAT穿越:它有效地处理NAT穿越,允许NAT、CGNAT等后面的设备相互无缝通信。
  • ...还有更多。

对于那些好奇的人来说,有很多文档。我鼓励读这篇文章的人不要相信我的话,而是自己阅读。

相关内容