我有两台机器,都位于 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等后面的设备相互无缝通信。
- ...还有更多。
对于那些好奇的人来说,有很多文档。我鼓励读这篇文章的人不要相信我的话,而是自己阅读。