号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
很多网工第一次接触 NAT(网络地址转换)时,觉得它就是个“内网转公网”的工具,简单易用。

可一旦在网络里叠加了 双 NAT(比如防火墙、路由器同时做 NAT),就经常会遇到一个令人头疼的问题:
明明申请的公网 IP 在哪?怎么一查发现全是私网地址,公网 IP 好像“凭空消失”了?
今天我们就来彻底讲清楚:
双 NAT 背后的逻辑是什么,为什么公网 IP 会“消失”,以及实际环境中如何避免这种坑。
1. NAT 的基本逻辑回顾
-
源 NAT(SNAT):把内网地址(10.x、172.x、192.168.x)转换成公网地址,对外访问。
-
目的 NAT(DNAT):把公网 IP 映射到内网服务器,供外部访问。
-
NAT 表:记录源地址/端口与转换后的地址/端口的映射关系。
一句话:NAT 就是改地址+改端口,靠状态表维持双向通信。

2. 双 NAT 场景长啥样?
常见场景:
-
企业出口:
-
防火墙做了一层 NAT,把内网转成一个私有地址池。
-
出口路由器再做一层 NAT,把这个私有地址池转成公网 IP。
-
结果:外网看不到真实公网 IP,甚至 trace 发现出站流量跳的全是“私网”。
-
-
ISP 场景:
-
运营商在小区宽带前面加了一层 NAT(CGNAT,大规模 NAT)。
-
用户再在自家路由器做 NAT。
-
结果:家里电脑根本拿不到公网 IP,公网访问全靠运营商 NAT 池。
-

3. 为啥公网 IP 会“消失”?
(1)被“掩盖”
第一层 NAT 已经把源地址改掉,公网 IP 压根没有参与到 NAT 映射里,后续所有流量都走私网 NAT。
(2)路由不可达
双 NAT 里如果路由没配好,公网地址段根本不会下发到内网路由表,设备只认 NAT 后的私网。
(3)运营商限制
有些宽带套餐不给真正的公网地址,而是直接丢你到 CGNAT 池里。即便申请了公网 IP,但没配置到位,仍然是“消失”状态。
4. 双 NAT 带来的实际问题
-
公网服务发布失败
- DNAT 一层可以,双 NAT 基本“废掉”,因为外层 NAT 根本不知道你内层的私网怎么对应。
-
排障难度翻倍
- ping 不通?trace 一下全是私网跳点,根本定位不到真实问题。
-
VPN/游戏/远程桌面异常
- 双 NAT 场景下,点对点应用最容易崩。
-
性能损耗
- NAT 本质是状态表,双 NAT 需要维护两份表项,CPU/内存压力大。
5. 如何避免公网 IP “消失”?
-
明确 NAT 角色分工
- 出口设备最好只保留一层 NAT,避免防火墙/路由器重复做转换。
-
桥接模式(Bypass NAT)
- 防火墙只做安全策略,不做 NAT;统一在路由器完成地址转换。
-
申请真正的公网 IP
- 避免被 CGNAT“套娃”,有公网需求必须向运营商要“独享公网 IP”。
-
内网分层规划
- 内层 NAT 使用私网地址,外层 NAT 负责公网出口,保持映射关系清晰。
结语
双 NAT 最大的问题就是——
公网 IP 没有“消失”,只是被 NAT 层层掩盖了。这类问题在家庭宽带(运营商 NAT)和企业多层出口(防火墙+路由器)场景最常见。
如果你发现网络出口查不到公网 IP,首先要想清楚:到底哪台设备在做 NAT?公网 IP 是在谁手里?
搞清楚这一点,你就能精准定位问题,不至于再“怀疑人生”。
原创:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
6032

被折叠的 条评论
为什么被折叠?



