如何判断你是否处于 CGNAT 后面
学习如何判断路由器是否拥有真正的公网 IPv4,还是处于运营商 CGNAT 或家庭双重 NAT 后面。
运营商级 NAT 通常简称为 CGNAT,是端口转发“看起来完全没生效”的常见原因之一。你的路由器可能允许创建转发规则,游戏服务器也可能已经启动,本机防火墙看起来也没问题,但外网用户仍然无法连接。缺失的关键往往很简单:你的家用路由器可能并没有真正拥有公网 IPv4 地址。
这篇教程给出一种不靠猜测的 CGNAT 判断方法。重点不是把所有 Strict NAT 都直接归因于 CGNAT。NAT 类型测试描述的是连接行为,CGNAT 则是运营商在上游进行地址共享的一种网络设计。要判断 CGNAT,需要比较公网 IPv4 与路由器 WAN 地址,检查地址段,并排除家中普通双重 NAT 的可能。
快速结论
如果路由器 WAN IPv4 地址与外部检测器显示的公网 IPv4 完全相同,路由器大概率拥有真正的公网 IPv4。
如果路由器 WAN 地址位于 100.64.0.0/10,这是强 CGNAT 信号。RFC 6598 将这个共享地址段保留给服务提供商 NAT 场景。
如果路由器 WAN 地址位于 10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16,说明上游存在 NAT,可能是运营商网关、光猫路由或另一台家庭路由器。
如果 WAN 地址与公网地址不同,说明公网之前还有一层地址转换。先检查家庭网络拓扑,再判断是否为 CGNAT。
为什么 NAT 类型本身不能证明 CGNAT
NAT 类型测试观察的是当前网络在建立连接时的行为。根据测试方式不同,它可能显示开放互联网、Full Cone、受限、端口受限、对称、超时或阻断等结果。这对游戏和 P2P 应用很有用,但它无法直接说明公网 IPv4 由谁持有。对称 NAT 可以出现在拥有公网 IPv4 的路由器上,而处于 CGNAT 后面的家庭网络也可能正常发起大多数出站连接。
CGNAT 是另一件事。它表示 ISP 将多个用户放在共享 NAT 层之后,用较少的公网 IPv4 地址服务更多客户。RFC 6888 将 CGN 描述为多用户 NAT。RFC 6269 解释了地址共享对应用、日志、滥用处理和入站连接带来的问题。对家庭用户而言,最直接的表现是:即使本地端口转发规则正确,未经请求的入站流量也到不了你的路由器。
如何检查 CGNAT
1找到你的公网 IPv4 地址
在同一网络的设备上运行公网 IP 检测器,或在本站运行 NAT 测试并复制 IPv4 值。这是网站和远程服务看到的地址。请准确记下它,下一步要与路由器 WAN 地址比较。
2找到路由器上的 WAN 或 Internet IPv4 地址
登录路由器管理页面,查找 WAN IP、Internet IP、IPv4 地址或网关状态等字段。不要使用手机或电脑的本地地址,例如 192.168.1.23。你需要的是路由器面向互联网接口获得的地址。
3检查 WAN 地址所在范围
如果路由器 WAN 地址位于 100.64.0.0 到 100.127.255.255,它处于 RFC 6598 定义、IANA 列为不可全球路由的共享地址空间。如果它是 10.x.x.x、172.16-31.x.x 或 192.168.x.x,则属于私有地址空间。两种情况都说明路由器并没有直接持有普通的全球可达 IPv4。
4先排除家里的双重 NAT
很多家庭有两台路由设备:ISP 提供的光猫/网关和自己购买的 Wi-Fi 路由器。如果两者都处于路由模式,你自己的路由器会拿到私有 WAN 地址,即使 ISP 线路在第一台设备上仍然有公网 IPv4。可以将 ISP 设备改桥接,或将自有路由器改 AP 模式后重新检查。
5把端口转发作为辅助证据
端口转发失败本身不足以证明 CGNAT,但在确认服务正在监听且防火墙已放行后,它很有参考价值。如果 WAN 地址是共享或私有地址,且外网端口检测始终失败,那么 CGNAT 或其他上游 NAT 很可能正在阻断入站访问。
6仅将 traceroute 作为高级信号
Cloudflare 介绍过一种方法:观察客户端网络与检测到的公网地址之间是否出现 100.64.0.0/10 跳点。这能帮助技术用户确认 CGN 路径,但不适合作为大多数人的第一步,因为 ISP 路由和过滤可能隐藏或改变跳点可见性。
需要关注的地址段
| 地址段 | 含义 |
|---|---|
| 100.64.0.0/10 | 服务提供商 NAT 使用的共享地址空间。路由器 WAN 地址落在这里,是很强的 CGNAT 指标。 |
| 10/8、172.16/12、192.168/16 | 私有地址空间。你的路由器处于另一层 NAT 后面,可能是 ISP 网关,也可能是另一台本地路由器。 |
| 其他普通 IPv4 范围 | 如果路由器 WAN 地址与公网 IPv4 检测结果一致,通常只要本地服务和防火墙正确,端口转发就有机会工作。 |
CGNAT 与双重 NAT 的区别
CGNAT 和双重 NAT 看起来很像,因为它们都会让设备处于不止一层地址转换之后。区别在于控制权。双重 NAT 通常可以通过调整自己的设备模式解决,而 ISP 的 CGNAT 通常不能在家用路由器设置中直接取消。
CGNAT
ISP 让多个用户共享公网 IPv4 地址。你的路由器获得共享或私有的上游地址,因此未经请求的入站 IPv4 流量在到达你的路由器之前就被截住。
双重 NAT
家里两台设备都在做路由,常见组合是 ISP 网关加自有路由器。桥接模式、AP 模式或移除一层路由通常可以解决。
常见误判
不要只凭端口关闭结果就诊断 CGNAT。端口关闭只说明外部检测没有连到一个正在接受连接的服务。很多本地问题也会产生相同结果。
- 操作系统防火墙或路由器防火墙阻止了端口,即使转发规则已经存在。
- 游戏服务器、摄像头、NAS 或远程桌面服务并没有真正监听该端口。
- 转发规则使用 TCP,但应用需要 UDP,或外部检测器测试了错误协议。
- VPN、安全套件或代理改变了观察到的公网 IP,使比较结果产生误导。
可以怎么解决
先修复本地双重 NAT
如果两台路由设备都在你控制范围内,可将 ISP 网关改桥接,或把第二台路由器改为 AP 模式,然后重新比较 WAN IP 与公网 IP。
向 ISP 申请公网 IPv4
部分运营商提供公网 IPv4、静态 IPv4 附加服务,或不使用 CGNAT 的套餐。名称和价格会因地区而异。
在对端支持时使用 IPv6
IPv6 可以绕过 IPv4 CGNAT,但路由器防火墙仍会控制入站可达性。IPv6 可用性和外部可达性需要分别测试。
使用中继、VPS、隧道或托管服务器
如果 ISP 不提供公网 IPv4,可使用基于中继的游戏模式、VPS 隧道、反向代理,或拥有可达公网地址的托管服务器。
先检查你的 NAT 行为
在修改路由器设置之前,请在同一网络运行 NAT 测试。结果能帮助区分 NAT 行为、ISP 地址共享和本地防火墙问题。
立即检测 NAT 类型 →