上周上门给一位用户调路由器,装完他习惯性打开百度,搜"我的 IP",盯着屏幕愣了几秒:"师傅,我家路由器上明明写着 192.168.1.1,这百度上咋显示的又是另一个号?"
我乐了:"这俩都对,中间隔着一个'翻译官'------NAT。你家手机、平板、电脑、电视十来台设备,全挤在一个公网 IP 后面上网,全靠它在路由器里翻来翻去。今天咱就把它扒开看个明白:它到底怎么让 43 亿个 IPv4 地址'够用'了三十多年。"
一、先说问题:IPv4 地址为什么不够分
上一课聊子网掩码时提到过,IPv4 一共就 2³² 个,约 43 亿。听着挺吓人,但刨掉 A/B/C 类保留、组播、私有地址这些不能全球路由的段,真正能分给全世界的公网地址,撑死 33 亿个。
全球联网设备呢?早就破百亿了。手机、电脑、电视、摄像头、智能音箱、扫地机器人......每台都要一个 IP 才能上网。33 亿对一百多亿,三倍的缺口,怎么填?
两条路摆在那:
- 换新版本:把地址从 32 位扩到 128 位(IPv6),地址多到用不完,但全世界的设备、线路、系统都得跟着升级,不是一两天的事;
- 先凑合用:让一批设备共用同一个公网 IP,靠 NAT 在中间翻译。
在 IPv6 全面铺开之前,全球运营商基本都选了第二条路------所以今天家家户户路由器里,都藏着这个"翻译员"。
二、NAT 的核心类比:公司大门口的"代收快递前台"
讲原理之前,先打个比方。
把你们家想象成一栋写字楼:
- 楼里每一间办公室都有个内部分机号 (192.168.1.x),这是私有 IP------只在楼内管用,出了楼谁都不认;
- 整栋楼对外只有一个门牌号 (比如 114.114.x.x),这是公网 IP------全世界都知道;
- 快递小哥把包裹都送到大楼前台,前台(NAT)登记:哪间办公室收的、哪个时间收的,然后转交到您手上;
- 您往外寄快递也一样,前台把您的"内部分机号"换成"大楼门牌号"发出去,对方只看到大楼地址,完全不知道您在哪个屋。
这个"前台"就是路由器里的 NAT 模块。它手里有一张转换表,一行一行记着"谁对应谁"------哪台设备用了哪个端口出去的,回来时该送回哪屋。
三、NAT 干活全流程:地址和端口一块儿换
NAT 不是简单地换个 IP 就完事。您家十几台设备共用一个门牌号,光换地址还是分不清谁是谁------它还得靠端口号来认人。
拿最常见的场景演示一遍:手机(192.168.1.105)打开一个网站(93.184.216.34)。
- 手机发出数据包:源 IP 192.168.1.105,源端口 50001 → 目标 93.184.216.34:443;
- 路由器收到,做 SNAT(源地址转换):把源 IP 换成公网 IP 114.114.1.1,顺手分配一个新源端口 30001,记进转换表;
- 数据包到了公网,对方只看到 114.114.1.1:30001 → 93.184.216.34:443;
- 网站回包给 114.114.1.1:30001,路由器查表------"30001 对应 192.168.1.105:50001",翻回去,把包准确送到您的手机上。
整个过程对应这张图:

用表格拆开看更清楚:
| 步骤 | 源 IP:端口 | 目标 IP:端口 | 说明 |
|---|---|---|---|
| 手机发出 | 192.168.1.105:50001 | 93.184.216.34:443 | 私有地址出家门 |
| 路由器 SNAT | 114.114.1.1:30001 | 93.184.216.34:443 | 换成公网地址+新端口 |
| 网站回包 | 93.184.216.34:443 | 114.114.1.1:30001 | 回包打到大楼门牌 |
| 路由器反查 | 93.184.216.34:443 | 192.168.1.105:50001 | 查表翻译员回内网 |
这就是"地址 + 端口一起换"的 NAPT (Network Address Port Translation,也叫 PAT)。平时大家嘴上说的 NAT,99% 其实指的是 NAPT。 记住这句,出去跟同行聊天不露怯。
四、三种 NAT:SNAT 管出门,DNAT 管进门
按翻译员方向,NAT 分三种,其实记住一句话就够了:
- SNAT(源地址转换)------管"出门"。内网设备去外网,源 IP 从私有换成公网。家用路由器做的就是这个,上面那个例子就是 SNAT;
- DNAT(目标地址转换) ------管"进门"。外网访问内网,目标 IP 从公网换成内网。典型操作就是端口映射:路由器上设"外网 8080 → 内网 192.168.1.100:80",外面访问您的公网 IP:8080,路由器把目标地址翻到内网服务器。远程访问 NAS、看家里监控、自己搭网站,全靠 DNAT;
- 双向 NAT------源和目标都翻,企业网络偶尔用,家里基本不碰。
一句话收工:SNAT 管"出门",DNAT 管"进门"。
五、装维实操:NAT 在工地上的四件实事
光懂原理没用,干活时这几件事最常碰到:
① 判断"有没有公网 IP"------远程访问的前提。
路由器 WAN 口看分配到的 IP,再去百度搜"我的 IP"对比。两个一样 → 恭喜,您有公网 IP,可以做端口映射;不一样 → 运营商在您前面又套了一层 NAT(CGNAT),您拿到的是中间层地址,配端口映射大概率不生效。没有公网 IP 想远程访问 NAS?老老实实用内网穿透(frp、ZeroTier 这类工具)绕过去。
② 端口映射配置------DNAT 最常见的现场操作。
路由器"端口映射/虚拟服务器"页面:外部端口 8080 → 内部 IP 192.168.1.100 → 内部端口 80 → 协议 TCP。配完,外网就能用"公网 IP:8080"访问内网服务。再强调一遍:没公网 IP 的用户配了也白搭,外面根本到不了您。
③ NAT 会话数耗尽------"能 ping 通外网,网页却打不开"的元凶。
家用路由器 NAT 表容量有限,低端机几百到几千条。P2P 下载、设备太多、中招木马疯狂建连接时,NAT 表一满,表现就是"能 ping 通但网页打不开"。重启路由器能临时清空恢复,治本得换带机量更大的路由。
④ 游戏"NAT 类型"不是玄学。
PS5/Xbox 网络设置里显示 NAT 类型:开放(NAT1,有公网 IP)> 中等(NAT2,能做端口映射)> 严格(NAT3,在 CGNAT 后面)。NAT3 联机老失败,解法就俩:找运营商要公网 IP,或开 UPnP 让游戏机自动映射端口。
六、CGNAT:运营商的"套娃 NAT"
公网 IP 那么缺,运营商自己也不够分。于是又在前面套了一层:您的路由器做第一层 NAT,运营商的 CGNAT(运营商级 NAT) 再做第二层,两层翻译员完才真正到公网。

这也是 100.64.0.0/10 这段地址的由来------专门给 CGNAT 中间层用的"伪公网"地址,全球不可路由,只在运营商内部认识。
CGNAT 后面是什么体验?
- 您路由器 WAN 口拿到的"公网 IP",其实是 CGNAT 分配给您的中间地址,不是真公网;
- 端口映射彻底失效------运营商的 CGNAT 不会为您的家用路由做端口映射;
- 出口 IP 是共享的,和同区域邻居共用一个大 IP。
目前国内大部分家庭宽带都在 CGNAT 后面。想要真公网 IP 得主动申请,部分运营商可免费改,部分要上企业宽带套餐。
七、NAT 的"原罪":补丁终归是补丁
NAT 扛住了 IPv4 三十年,但也背着三笔"债":
- 端到端被打破:NAT 是"有状态"翻译员------只有内网主动发起的连接才能正确回包,外网想主动访问内网,默认不通。这跟互联网"任意两台设备都可互通"的本意相违背;
- NAT 表是单点瓶颈:路由器一重启,所有会话全断。在线视频、游戏掉线,很多时候就这原因;
- P2P 打洞难:语音通话、P2P 下载得靠 STUN/TURN/ICE 这套复杂的穿越技术,NAT 类型越严,越难打通。
一句话总结:NAT 是让 IPv4 续命的补丁,IPv6 才是真正的解法------每台设备一个全球唯一地址,不用翻译员、不用打洞,端到端直连。
小结
- IPv4 公网地址约 33 亿,而全球设备超百亿,缺口的答案就是 NAT;
- NAT 靠"地址 + 端口"一起翻译,用转换表区分不同设备的会话;
- SNAT 管出门 (私有→公网),DNAT 管进门(端口映射),家用路由器两样都做;
- CGNAT 是运营商的第二层套娃,导致用户拿不到真公网 IP、端口映射失效;
- NAT 表会耗尽,症状是"能 ping 通但网页打不开";
- NAT 是过渡方案,IPv6 才是终局。
思考题:您在办公室手机连 VPN 访问公司内网,一直超时。查了家里路由器,WAN 口 IP 是 100.64.x.x。问题出在哪?有什么临时解法?(提示:100.64.x.x 是 CGNAT 地址段,说明家里没有真公网 IP,VPN 的回包根本找不到您。)
下期预告
NAT 这个"补丁"撑了几十年,那"正版答案" IPv6 什么时候接班?其实------您的宽带很可能早就在用 IPv6 了,只是没注意过。明天开讲:IPv6------你的宽带其实早就用上它了。