打开网络设置,你大概会看到 192.168.1.23 这样的地址。打开本站首页,你会看到一个完全不同的地址。两者都是你的 IP 地址——一个是私有的,一个是公网的。
私有地址
私有地址保留给局域网内部使用,绝不会在公共互联网上路由。IPv4 有三个私有地址段(RFC 1918):
10.0.0.0/8——常见于企业和云网络172.16.0.0/12——Docker 和一些企业网络在用192.168.0.0/16——大多数家用路由器的默认网段
任何人都可以使用它们,所以数百万个网络同时使用相同的地址也不会冲突。IPv6 中对应的是唯一本地地址(fd00::/8),不过 IPv6 网络通常直接给设备分配公网地址。
公网地址
公网地址全球唯一,通过注册机构体系分配给运营商或机构。你连接时,网站、游戏服务器和邮件服务器看到的就是这个地址。
NAT 把两者连接起来
路由器在互联网一侧有一个公网地址,背后是一个私有网络。网络地址转换会改写出站数据包,让它们看起来来自路由器的公网地址,并维护一张表,确保回复能送回正确的设备。这就是为什么你家里所有设备显示的公网 IP 都一样。
运营商级 NAT
由于 IPv4 地址稀缺,许多运营商——尤其是移动运营商——会再加一层 NAT。这时你的路由器会从 100.64.0.0/10(共享地址空间,RFC 6598)获得地址,许多用户共用一个公网地址。
判断自己是否处在 CGNAT 之后的方法是:把路由器状态页上的 WAN 地址与本站显示的地址进行比较。如果两者不同,说明运营商又做了一次转换。这种情况下,除非使用 IPv6 或向运营商申请公网地址,否则端口转发和在家对外提供服务都无法实现。
私有地址能保护我吗?
部分可以。NAT 让未经请求的入站连接无法直接到达你的设备,起到了基础防火墙的作用。但它本来就不是为安全设计的——一个真正的防火墙依然重要,尤其是在设备可被直接寻址的 IPv6 中。
网站看到的是哪个地址?
只有公网地址。私有地址永远不会离开你的局域网。如果处在 CGNAT 或 VPN 之后,网站看到的是运营商或 VPN 的地址,甚至连你路由器的地址都看不到。
用 IP 查询查一查任意地址——私有和特殊用途地址段会被识别并给出说明,而不会被拿去查询。