从同一 NAT 网络进行 TCP/UDP 打洞

从同一 NAT 网络进行 TCP/UDP 打洞

我想知道当您在同一个网络中(NAT后面)时tcp / udp打洞是否仍然有效,以及数据包的路径是什么。

如果在同一网络上使用打洞技术,那么它将发送一个具有相同目标和源地址的数据包。只有源端口和目标端口会有所不同。我认为启用了 NAT 环回的路由器会按预期处理此问题,但其他路由器呢?它们会丢弃数据包吗?还是来自 ISP 的路由器(第一个?)会将数据包弹回,然后处理好?

我之所以想知道,是因为我正在考虑使用这种技术来绕过网络中对等点之间的阻止(例如学校网络,客户端只能访问互联网,但彼此之间的任何联系都被阻止)。唯一的其他选择是使用中间人作为代理(隧道?)。这样做的缺点是,你必须拥有一个带宽比只做打洞的服务器大得多的服务器。而且延迟也会显著增加。

答案1

这就是所谓的 NAT Hairpinning。支持 Hairpinning 的 NAT 可以进行转换,即使两端都在同一个 NAT 中。

答案2

仅当目标网络与发送网络不同时,路由器才会“路由”。

因此,如果源计算机的 IP 地址为 10.1.1.5,掩码为 255.255.255.0,而目标地址为 10.1.1.50,则 NAT 路由器将忽略它,只有交换机会处理它。

如果目的地是 10.2.1.50,则您需要路由器,但根据路由器的配置,路由可能仍不会到达 NAT 部分,因为您通常不会在内部网络上使用 NAT。NAT 会增加您不想要的开销和问题,您永远不需要内部 NAT。

因此,你所建议的做法是行不通的。

事实上,如果点对点流量被阻止,这很可能是某种透明过滤器造成的。

解决这个问题的唯一方法是找到一个渠道在对等点之间进行工作,然后在此上运行加密通道。

最后,由于点对点连接被阻止,尝试绕过阻止将要违反您的服务条款 - 您将被踢出网络,可能被开除(从学校)甚至面临刑事起诉 - 真的不值得!设置您自己的 WiFi 网络,以实现点对点流量。

相关内容