运维知识
悠悠
2026年7月15日

一文讲透NAT:从家里路由器到公司防火墙,IP地址转换到底是怎么玩的

说真的,每次有人问我"运维是干什么的",我都很头疼。这问题太大了,就像你问程序员"你怎么写代码"一样没法一句话答完。但要是有人问"你知道NAT是啥吗",我反而能聊半天,因为这东西太常见了,常见到几乎每个搞网络的人都离不开它,但你真要问起来,很多人对它的理解就停留在"哦,就是地址转换嘛"这个层面。

今天咱就把NAT这事掰开了揉碎了聊一聊,不整那些虚的,都是实打实的内容。

NAT到底是个啥玩意儿

NAT,全称Network Address Translation,网络地址转换。这名字听着挺唬人的,其实原理简单得要命。

你想想看,现在全世界有多少设备要上网?手机、电脑、平板、智能音箱、监控摄像头...几十亿台设备对吧。但IPv4地址一共多少个?理论上是2的32次方,大概43亿个。听起来不少,但早就不够用了。我记得2019年时候,IANA就把最后一批IPv4地址分配完了,从此以后新申请的IPv4地址基本没有了。

那这么多设备怎么上网?靠NAT啊。

你可以这么理解:你们小区几百户人家,每家都有个门牌号(私有IP地址),但对外就一个小区大门(公网IP)。快递员(外部网络)只认小区大门,不认识你们每家每户的门牌号。门卫(NAT设备)就负责把外面的快递收下来,再分发给对应的住户;或者把住户寄出去的快递,标上小区大门的地址发出去。

这就是NAT最核心的作用:让多个内部设备共享少量公网IP地址上网。

我刚入行那会儿,在一个县城的小网吧干网管。网吧里几十台机器,就一根宽带,一个公网IP。那时候我才真正搞明白NAT是怎么回事——路由器把网吧内网的192.168.1.x网段全部转换成一个公网IP,端口号用来区分不同的内网机器。那个年代NAT基本就是救命的玩意儿,没它网吧都没法开。

NAT都有哪些类型

光知道NAT是地址转换还不够,你得知道它有几种玩法。不同场景用的类型不一样,效果也不一样。

1. 静态NAT:一对一映射

这种最好理解,一个私有IP对应一个公网IP,死绑定。打个比方,就像你们公司给每个高管配了专车,司机就固定服务一个人。

实际应用场景:企业里有些服务器需要被外网访问,比如你们公司的官网服务器、邮件服务器。这种情况下就需要给服务器配置一个固定的公网IP,让外网用户能稳定访问到。

我之前在一家电商公司,他们官网服务器就是用的静态NAT。内网服务器IP是10.0.1.100,对外映射成一个公网IP。客户访问官网的时候,DNS解析到的是那个公网IP,流量进来之后路由器一查NAT表,哦,这是要去找10.0.1.100的,转过去就行。

这种方式的优点是稳定,缺点嘛...浪费公网IP啊。一个服务器就占一个公网IP,多奢侈的事儿。

2. 动态NAT:池子里随便挑

这种比静态NAT灵活一些。路由器维护一个公网IP地址池,内网设备需要上网的时候,临时从池子里分配一个公网IP给它用,用完了还回去。

这就像共享单车,你扫码就骑,到了目的地锁车就走。路由器就像调度中心,负责把车(公网IP)分配给需要的人(内网设备)。

不过说实话,动态NAT现在用得真不多了。为啥?因为它还是有上限的,池子就那么大,几十台机器同时上网就可能不够用。除非你们公司有大量公网IP地址可以挥霍,否则还是老老实实用下面的PAT吧。

3. PAT(端口地址转换):真·扛把子

这个才是现在最常用的,名字也好几个,PAT、NAT Overload、NAPT都指的是这个东西。

原理和前两种不太一样,它不仅转换IP地址,还转换端口号。多个内网设备共享一个公网IP,靠端口号来区分不同的连接。

举个例子,公司里192.168.1.10和192.168.1.20两台电脑同时访问百度:

  • 192.168.1.10的源端口是5000,访问后变成 公网IP:50001
  • 192.168.1.20的源端口是5001,访问后变成 公网IP:50002

百度返回数据的时候,看端口号就知道这数据包是给谁的。路由器里维护着一张NAT转换表,谁出去的时候用啥端口,回来的时候就按表查。

你家里那个小路由器,99%用的就是这种方式。要不然一个公网IP怎么让手机、电脑、电视、平板同时上网?

我刚毕业那会儿,住城中村租房,房东给拉了一根宽带,通过一个路由器分给好几户人用。十几号人的手机电脑都通过这一个公网IP上网,全靠PAT顶着。那时候我就琢磨,这技术真是妙啊。

NAT都有啥优缺点

凡事都有两面性,NAT也不例外。这东西虽然解决了IPv4地址枯竭的燃眉之急,但也不是完美的。

优点

第一,省IP。这是最直接的。 IPv4地址不够用是现实问题,NAT让一个公网IP可以带几十上百台内网设备上网,相当于把有限的公网IP资源放大了几十倍。我上家公司就一根专线,200多个员工全靠这根线上办公,没NAT根本玩不转。

第二,天然带点安全性。 内网设备躲在NAT后面,外网没法直接主动连接进来。这不是说NAT是防火墙啊,但它确实让内网没那么"透明"。你想想,你的电脑是192.168.1.5,外网根本不知道这个地址,它只知道你们公司的公网IP。想从外网直接访问你的电脑?没门。除非你主动发起连接,或者在路由器上做了端口映射。

第三,网络调整灵活。 你们公司内网架构调整了,服务器IP变了,只要NAT映射规则不变,对外服务就没影响。不用像以前一样,动个内网IP还得通知所有外部合作方。

缺点

第一,性能开销。 路由器得查NAT表,转换IP和端口,这肯定比直传数据要慢。高端路由器有专门的NAT硬件加速芯片,影响不大;但低端设备或者CPU软转发的,流量大的时候CPU会飙得很高。

我之前遇到过一个坑,一个小企业用那种几百块钱的家用路由器当出口,带了40多台机器。结果高峰期CPU直接100%,网速慢得跟蜗牛一样。后来换了个企业级路由器,问题立马解决。

第二,端到端通信被破坏。 互联网设计的初衷是端到端直连,每台设备都有独立IP,能直接通信。NAT把这个模型破坏了,外网设备没法主动向内网设备发起连接。这就导致一些P2P应用、视频会议、游戏联机之类的功能受影响。

第三,NAT穿透问题。 因为上面那个问题,很多应用需要做NAT穿透。比如你用微信视频、视频会议,有些场景就是建立不起连接。这就需要STUN、TURN、UPnP、ICE这些技术来辅助。我之前做过一个IM项目,就为了解决NAT穿透折腾了好长时间,最后上了coturn这个TURN服务器才搞定。

NAT在实际中怎么用

家庭场景:你家路由器

99%的家用路由器默认就是PAT模式。你登录路由器后台(一般是192.168.1.1或者192.168.0.1),看那个WAN口配置,显示的就是公网IP,LAN口配置就是192.168.1.x这种内网网段。

有时候你想从外网访问家里的NAS、监控啥的,就得在路由器上做端口映射。比如NAS的Web端口是5000,你就在路由器上做个规则:外网访问公网IP的5000端口,转发到内网NAS的5000端口。

这玩意儿我玩过不少次,刚开始的时候踩过不少坑。比如有些运营商封了80、443这些常用端口,你想做个网站就没法用;还有些运营商给你分配的根本不是公网IP,而是大内网IP(比如100.64.x.x),这种情况下你做端口映射也没用,外面根本访问不到。

企业场景:防火墙和路由器

企业级的NAT一般在防火墙或者出口路由器上做。配置比家用复杂一些,但原理一样。

我之前在一家制造业公司做运维,他们有个分支办公室需要访问总部的ERP系统。分支办公室没有公网IP,但有个固定的公网IP可以分配。我就在出口防火墙上做了静态NAT,把ERP服务器的内网IP映射成一个公网IP,分支办公室通过这个公网IP访问ERP。

还有些企业会用到源NAT(Source NAT)和目的NAT(Destination NAT)的组合。源NAT是内网访问外网时转换源IP,目的NAT是外网访问内网时转换目的IP。

云环境中的NAT

现在大家都上云了,AWS、阿里云、腾讯云这些云厂商都提供NAT网关服务。

在云上,NAT的作用就更明显了。你的云服务器如果只有内网IP,想访问外网(比如更新系统、下载软件)就得通过NAT网关出去。云上的NAT网关基本都是PAT模式,很多云服务器共享一个或几个NAT公网IP出去。

不过云上有个坑要注意:NAT网关是要收费的,而且按流量或者按小时收费。我之前帮一个创业公司优化云成本,发现他们NAT网关流量费特别高。后来一查,是因为有个测试环境的机器在疯狂拉外网流量。设置了个防火墙规则限制之后,成本立马降下来了。

聊聊NAT的"坑"和那些年踩过的雷

说几个我亲身经历过的真实案例吧,给大家提个醒。

坑一:MTU问题导致部分网站访问不了

我之前遇到过一次诡异现象:某些网站能访问,某些网站访问不了,有些网站能打开但图片加载不出来。折腾了一下午,最后发现是MTU的问题。

因为NAT在转换IP的时候,IP头可能会变(IPv4转IPv4虽然头长度一样,但有些场景下会增加一些字段),导致数据包超过出口的MTU。然后又没有正确设置DF(Don't Fragment)标志和ICMP反馈,结果就是数据包被默默丢弃。

解决方案:在路由器上调整TCP MSS,把MSS值设小一点(一般是MTU-40),这样TCP握手的时候双方就会按这个MSS来分片。

坑二:FTP服务器的主动模式问题

FTP有两种模式:主动模式(PORT)和被动模式(PASV)。在NAT环境下,被动模式能正常工作,主动模式经常出问题。

因为FTP主动模式下,服务器会主动连接客户端的某个端口(通过PORT命令告诉服务器)。但客户端在内网,服务器在外网,服务器没法主动连接到内网的客户端。

如果你遇到FTP连接慢、传不了文件,先看看是不是模式问题。让客户端用被动模式一般就能解决。

坑三:视频会议连不上

这个我前面提过,做IM项目的时候遇到过。两个内网用户之间视频通话,明明都登录了,但就是建立不了P2P连接。

最后上了TURN服务器中转才解决。TURN服务器的作用就是当中继,两个客户端都把音视频流发给TURN服务器,TURN服务器再转发给对方。这种方式虽然增加了延迟和带宽成本,但能保证连通性。

坑四:一些老旧协议不兼容

有些老协议在设计的时候压根没考虑NAT的情况,比如一些工控协议、老的游戏协议。这些协议里直接硬编码了IP地址,NAT转换之后协议就乱了。

遇到这种情况,要么换协议,要么用IPSec之类的隧道技术把NAT的影响绕过去,要么干脆用代理。

NAT的现状和未来

虽然IPv6号称能解决地址枯竭问题,每个设备都能拿到独立公网IP,不再需要NAT。但实际上,IPv6的普及是个漫长的过程。我写这篇文章的时候(2024年),国内IPv6的普及率虽然在快速提升,但很多场景下还是NAT IPv4为主。

而且就算IPv6普及了,NAT也不会完全消失。因为NAT除了解决地址问题,还有安全防护、网络隔离这些作用。很多企业内网还是会用NAT来管理网络出口。

另外,像云计算、SD-WAN这些新技术,NAT也在其中发挥重要作用。云上VPC之间的流量,很多场景下还是要通过NAT来访问公网。

所以啊,NAT这门技术,运维不学不行,学了也真能解决不少实际问题。

总结

NAT这东西吧,说简单也简单,就是个地址转换;说复杂也复杂,各种类型、各种应用场景、各种坑。我见过不少人觉得"不就是地址转换嘛,有什么难的",真上手配起来就抓瞎。

其实不管是做运维还是搞网络开发,对NAT的理解都应该到位。它不只是一个概念,而是真真实实影响你日常工作的东西。从家里的WiFi到公司的网络,从传统机房到云环境,NAT无处不在。

建议大家有空的时候,可以登录一下自己家的路由器后台,看看WAN口配置、NAT规则、端口映射这些选项。也可以用traceroute、tcpdump这些工具抓包看看实际的NAT转换过程。光看理论不动手,永远学不会。

好了,今天就聊到这儿。如果你觉得这篇文章有点用,欢迎转发给身边需要的朋友。关注公众号「耕云躬行录」,我会持续分享运维路上的实战经验和踩坑故事。还有我的个人博客 躬行笔记,里面记录了更多详细的技术笔记和案例分析。

咱们下期见!记得关注@运维躬行录,不迷路。

文章目录

博主介绍

热爱技术的云计算运维工程师,Python全栈工程师,分享开发经验与生活感悟。
欢迎关注我的微信公众号@运维躬行录,领取海量学习资料

微信二维码