网络指南 · 1 分钟阅读

什么是CGNAT以及如何绕过它

如果您的公共IP以100.64开头,或者朋友无法连接到您的服务器,您的ISP可能将您放在CGNAT后面——在多个客户之间共享一个公共IP。这意味着什么,以及真正的解决方法。

IPv4短缺,转嫁给你

运营商级NAT (CGNAT) 是互联网服务提供商(ISP)应对IPv4地址耗尽的方式。ISP并不是给每个客户分配一个独特的公共IP,而是将数百或数千个用户放在一个共享的公共地址后面,并在一个大型运营商级路由器上转换他们的连接。这与您家用路由器中的NAT是同样的概念,但是在更高的层次上,并且在多个家庭之间共享。对于普通的浏览,您不会注意到——出站连接工作正常。问题在于入站连接。

因为您与陌生人共享一个公共IP,您并不真正拥有一个可达的地址。您无法为您的机器打开一个端口,因为决定共享IP如何处理传入数据包的是ISP的路由器,而不是您——而且它不知道随机的入站连接是针对哪个用户的。

如何判断您在其后面

这是一个快速测试。请在“我的IP是什么”网站上查找您的公共IP,然后查看您路由器的WAN状态页面上显示的IP。如果它们不同——您的路由器认为它的WAN IP是私有的,而外界看到的是不同的IP——您就处于CGNAT后面。一个明显的迹象是WAN地址在100.64.0.0/10范围内,这个范围专门为CGNAT保留,或者当您期望一个公共IP时,看到一个看起来像私有的WAN IP(10.x,172.16–31.x,192.168.x)。

症状都是入站的:您路由器中的端口转发没有任何作用,朋友无法加入您主办的游戏,自托管的服务无法从外部访问,BitTorrent运行缓慢且没有入站对等体。您尝试的所有主办的事情都失败了,尽管您访问的所有内容都能正常工作。

真正的解决方法

您无法单靠自己击败 CGNAT,因为缺失的部分——一个属于您的公共 IP——在 ISP 那里。诚实的选择:1) 向您的 ISP 请求一个公共/静态 IP;许多 ISP 提供此服务,有时需要支付少量费用。2) 租用一个 VPS 并在上面运行您的服务,或者通过 WireGuard 隧道到它,这样 VPS 的公共 IP 就可以代表您的家庭服务——这是标准的自托管解决方案。3) 使用一个 专用/个人 IP:一个为您保留的地址,与 CGNAT 共享的地址不同,它实际上可以指向您的服务并且 被列入白名单。

共同点与端口转发相同:“我没有真实的公共 IP”的解决办法是获取一个您可以控制的 IP。共享的 VPN 出口并不提供用于入站托管的 IP,但 VPS 加上专用 IP 可以做到——一个您拥有的稳定地址和端口。这是从“在 CGNAT 后面”到“可访问”的直接、诚实的路径。

FAQ

问题,已解答

我怎么知道我是否在CGNAT后面?

将 "我的 IP 是什么" 网站显示的公共 IP 与您路由器中的 WAN IP 进行比较。如果它们不同,或者路由器的 WAN IP 在 100.64.0.0/10 范围内(或私有的 10/172/192 范围内),您处于 CGNAT 后面——您的 ISP 在多个客户之间共享一个公共 IP。

VPN能修复CGNAT吗?

不是用于入站托管的共享 VPN 出口 — 它仅转发出站流量。真正的解决方案是向您的 ISP 请求公共 IP,在您隧道到的 VPS 上运行您的服务,或使用您控制的专用 IP,实际上可以指向您的服务。

获取您控制的真实IP

CGNAT 会剥夺您的可达地址;带有 s4m 专用 IP 的 VPS 会恢复一个——一个稳定的公共 IP 和您拥有的端口,因此入站连接可以正常工作。

人们通过搜索找到此页面

此页面回答的真实搜索短语 — 链接的短语打开详细覆盖它们的页面。