3. NAT设备与配置实战
NAT的三种形态在真实设备上的落地方式并不相同。静态NAT建立的是固定的一对一映射,动态NAT从地址池中临时分配,PAT则通过端口号让多个内网主机共享一个公网地址。本节以一台边界路由器(内网接口G0/0:192.168.10.1/24,外网接口G0/1:203.0.113.2/30)和一台防火墙为对象,分别完成三类配置,并给出可复现的验证方法。以下地址、端口与输出均为教学示例,实际部署时需替换为规划值。
一、静态NAT:让内网服务器拥有固定公网身份
静态NAT适用于需要被外网主动访问的服务器,例如Web或邮件服务器。它把内网私有地址与一个公网地址永久绑定,映射关系不随会话变化。在路由器上,先定义内外接口,再写映射:
interface G0/0
ip address 192.168.10.1 255.255.255.0
ip nat inside
interface G0/1
ip address 203.0.113.2 255.255.255.252
ip nat outside
ip nat inside source static 192.168.10.20 203.0.113.10
关键点是接口角色必须显式声明:ip nat inside标记流量进入NAT处理的内部侧,ip nat outside标记外部侧。若漏配,映射表项不会生效。配置后用show ip nat translations查看,应出现--- 203.0.113.10 192.168.10.20 --- ---形式的静态表项。外网主机访问203.0.113.10的80端口时,路由器将目的地址改写为192.168.10.20并转发;回程流量再被改回公网地址,因此服务器无需知道公网地址即可正常响应。
二、动态NAT:从地址池中按需借用
动态NAT适合内网主机数量多于公网地址、但并非所有主机同时上网的场景。它先定义一个公网地址池,再用ACL圈定允许转换的内网网段:
ip nat pool PUB_POOL 203.0.113.20 203.0.113.30 netmask 255.255.255.240
access-list 10 permit 192.168.10.0 0.0.0.255
ip nat inside source list 10 pool PUB_POOL
这里的地址池包含11个可用地址。当192.168.10.0/24内的主机发起对外连接时,路由器从池中取一个空闲地址建立映射,会话结束后地址被回收。验证时,让两台内网主机分别ping外网,再执行show ip nat translations,可看到两条动态表项,且内网地址不同、公网地址不同。若池中地址耗尽,后续主机的连接会失败——这正是动态NAT的容量边界,也是它逐渐被PAT取代的原因。
三、PAT:用端口号复用单个公网地址
PAT(端口地址转换,也称NAT过载)是家庭和企业出口最常见的形态。它只用一个公网地址,通过源端口区分不同内网会话。配置时在动态NAT语句末尾加overload:
access-list 10 permit 192.168.10.0 0.0.0.255
ip nat inside source list 10 interface G0/1 overload
也可写成ip nat inside source list 10 pool PUB_POOL overload,让地址池与端口复用结合。此时show ip nat translations的输出会同时显示内网地址:端口与公网地址:端口,例如tcp 192.168.10.30:51234 203.0.113.2:1027。同一公网地址可承载数万条并发会话,端口号成为区分不同主机的关键字段。需要注意,PAT只改写源地址和源端口,不改变目的地址,因此外网无法主动访问内网主机,除非额外配置端口映射。
四、端口映射:把外网请求送到指定内网服务
端口映射(端口转发)本质是带端口的静态NAT。若内网Web服务器192.168.10.20监听8080端口,希望外网通过203.0.113.2的80端口访问,可配置:
ip nat inside source static tcp 192.168.10.20 8080 203.0.113.2 80
这样外网访问203.0.113.2:80时,目的端口被改写为8080并转发到192.168.10.20。验证分两步:外网侧用telnet 203.0.113.2 80或浏览器访问,应能建立连接;路由器上执行show ip nat translations,应看到tcp 203.0.113.2:80 192.168.10.20:8080的表项。若连接失败,依次检查ACL是否放行、接口角色是否正确、服务器本地防火墙是否开放8080端口。
五、验证与排障要点
配置完成后,验证应覆盖三个方向:内网到外网的出向访问、外网到内网服务器的入向访问、以及映射表项是否符合预期。出向验证可在内网主机执行ping 198.51.100.8,同时在路由器上观察show ip nat translations是否新增表项;入向验证则从外网侧发起连接。若出向不通,先确认默认路由指向外网接口,再检查ACL是否匹配内网网段;若入向不通,重点检查端口映射语句中的协议、内外端口是否写反,以及外网接口是否被ACL拦截。
把三类配置放在同一台设备上时,注意匹配顺序:静态映射优先于动态池,动态池优先于接口overload。实际工程中常采用“静态NAT服务对外 + PAT内网用户共享出口”的组合,既保证服务器可被访问,又节省公网地址。掌握映射表项的读法,就能在出现访问异常时快速定位是转换未命中、地址池耗尽,还是策略拦截。