NAT 网络地址转换与华为设备配置实操
NAT(Network Address Translation,网络地址转换)是把 IP 报文头中的地址(和端口)改写后转发的技术。本文覆盖 NAT 的四大地址术语、主流类型(静态 NAT / NAPT / Easy IP / NAT Server)、会话表转换原理,并提供两台华为路由器 + 内网服务器的完整实操实验:静态 NAT 固定出口、地址池 NAPT 上网、Easy IP 复用接口地址、NAT Server 发布内网 Web 四个递进需求。
一、NAT 概念:本质与四大地址
1.1 NAT 的本质
NAT 是一组地址(端口)映射规则 + 转换动作的集合,部署在内网出口路由器或防火墙上:
- 出方向:把内网源地址(源端口)改写为公网地址(端口);
- 回包:按会话表把目的地址还原为内网地址;
- 入方向主动访问:通过预置映射(静态 NAT / NAT Server)把公网目的地址改写为内网地址。
NAT 的三大价值:
- 节约公网 IPv4 地址:一个公网地址 + 端口复用即可承载大量私网用户;
- 隐藏内网结构:外网只能看到转换后的地址,内网网段无需对外路由;
- 私网互联:两个使用相同私网网段的企业互联时做二次转换(较少使用)。
1.2 四大地址术语
| 术语 | 含义 | 本例对应 |
|---|---|---|
| Inside Local | 内部主机在私网中的真实地址 | 192.168.10.10 |
| Inside Global | 内部主机转换后在公网呈现的地址 | 202.100.1.10 |
| Outside Global | 公网主机的真实地址 | 202.100.2.100 |
| Outside Local | 公网主机在内网侧呈现的地址(通常同 Global) | 202.100.2.100 |
1.3 ACL 与 NAT
NAT 引用 ACL 时的语义与包过滤不同:命中 permit 的流量"需要转换",deny 或未命中不转换——ACL 在 NAT 中仍是"匹配工具",用于圈定转换范围(通常只匹配源网段)。
二、NAT 分类
| 类型 | 映射关系 | 是否复用端口 | 公网地址来源 | 典型场景 |
|---|---|---|---|---|
| 静态 NAT | 一对一固定 | 否 | 手工指定 | 内网主机固定公网出口 / 服务器全端口发布 |
| 动态 NAT | 多对多临时 | 否(no-pat) | 地址池 | 早期应用,现较少见 |
| NAPT(地址池) | 多对一 | 是 | 地址池 | 企业多用户共享公网地址上网 |
| Easy IP | 多对一 | 是 | 出接口 IP | 公网地址动态获取(拨号 / 家庭宽带) |
| NAT Server | 公网→内网定向映射 | 可指定端口 | 手工指定 | 发布内网 Web / FTP / 远程管理服务 |
结论:NAPT(含 Easy IP)是现代 NAT 的绝对主流;静态 NAT 与 NAT Server 用于"让外面主动进来"。
三、NAPT 转换原理
以 PC2(192.168.10.20)访问公网服务器 202.100.2.100 为例:
PC2 发出 :源 192.168.10.20:1024 → 目的 202.100.2.100:80
R1 转换后 :源 202.100.1.100:5001 → 目的 202.100.2.100:80 (改写源并记录会话)
Server 回包 :源 202.100.2.100:80 → 目的 202.100.1.100:5001
R1 还原后 :源 202.100.2.100:80 → 目的 192.168.10.20:1024 (查会话表还原)两条铁律:
- 会话表记录映射:设备为每个转换流记录(私网地址:端口 → 公网地址:端口),回包按表还原,会话超时后表项删除;
- 公网地址靠端口区分多条流:不同私网主机可共用同一公网 IP,靠不同端口号区分,这就是 NAPT"多对一"的底气。
四、华为 NAT 配置语法
4.1 静态 NAT
[R1] nat static global 202.100.1.10 inside 192.168.10.10- 全局视图配置后自动对所有接口生效;接口视图配置则仅对该接口生效;
global后接对外呈现的公网地址,inside后接内网真实地址;- 双向生效:内网主机出方向转换源地址,外网访问该 global 地址时目的地址被映射回 inside。
4.2 地址池 NAPT
[R1] nat address-group 1 202.100.1.100 202.100.1.110
[R1] acl number 2000
[R1-acl-basic-2000] rule 5 permit source 192.168.10.0 0.0.0.255
[R1-acl-basic-2000] quit
[R1] interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1] nat outbound 2000 address-group 1nat address-group:定义可用的公网地址池;nat outbound <acl> address-group <编号>:在公网出接口应用,ACL permit 的流量转换为地址池地址(默认带端口转换 = NAPT);- 末尾追加
no-pat则只转地址不转端口(动态 NAT,公网地址消耗大,很少用)。
4.3 Easy IP
[R1-GigabitEthernet0/0/1] nat outbound 2000- 不指定地址池,直接复用出接口地址;
- 适合出接口公网地址由运营商动态分配、无法预建地址池的场景。
4.4 NAT Server
[R1-GigabitEthernet0/0/1] nat server protocol tcp global 202.100.1.20 8080 inside 192.168.10.100 80- 在公网出接口配置;
global <公网地址> <端口>:外部访问的地址与端口;inside <私网地址> <端口>:实际提供服务的内网地址与端口;- 端口映射时协议必须为 tcp 或 udp;global 地址不能与地址池重叠。
五、完整实操实验
5.1 实验拓扑与环境
以 eNSP 中的华为 AR 系列路由器(VRP 平台)为例。内网三台主机经交换机 SW1 汇聚接入 R1。
PC1 ─────────┐
192.168.10.10│
│
PC2 ─────────┤ SW1 ──── GE0/0/2: 192.168.10.254/24 ┐
192.168.10.20│ │
│ [R1]
Server1 ─────┘ │
192.168.10.100 (Web) │ GE0/0/1: 202.100.1.1/24
│ 公网段 202.100.1.0/24
│
GE0/0/1: 202.100.1.2/24 ── [R2] ── GE0/0/2: 202.100.2.254/24
│
Server2(公网 Web 服务器)
202.100.2.1005.2 地址规划与实验需求
地址规划:
| 设备/对象 | 接口/位置 | IP 地址 | 说明 |
|---|---|---|---|
| R1 | GE0/0/1 | 202.100.1.1/24 | 公网出口 |
| R1 | GE0/0/2 | 192.168.10.254/24 | 内网网关 |
| R2 | GE0/0/1 | 202.100.1.2/24 | 与 R1 互联 |
| R2 | GE0/0/2 | 202.100.2.254/24 | 公网服务器区网关 |
| PC1 | 内网 | 192.168.10.10/24 | 网关 .254,静态 NAT 对象 |
| PC2 | 内网 | 192.168.10.20/24 | 网关 .254,NAPT 对象 |
| Server1 | 内网 | 192.168.10.100/24 | 内网 Web 服务器 |
| Server2 | 公网 | 202.100.2.100/24 | 公网 Web 服务器 |
| 地址池 | — | 202.100.1.100~110 | NAPT 出口池 |
| NAT Server 地址 | — | 202.100.1.20 | 发布内网 Web |
实验需求:
| 需求 | 内容 | NAT 类型 | 应用位置 |
|---|---|---|---|
| 1 | PC1 访问公网时固定使用 202.100.1.10 | 静态 NAT | R1 全局 |
| 2 | PC2 等其余内网用户通过地址池上网 | NAPT(地址池) | R1 GE0/0/1 outbound |
| 3 | 改用出接口地址上网(演示 Easy IP) | Easy IP | R1 GE0/0/1 outbound |
| 4 | 公网通过 202.100.1.20:8080 访问内网 Web | NAT Server | R1 GE0/0/1 |
关键设计:R2 上不需要任何指向 192.168.10.0/24 的路由——公网侧只认识 202.100.1.x,这正是 NAT 隐藏内网网段的价值所在。
5.3 第一步:基础配置(接口 + 路由)
R1 配置:
<Huawei> system-view
[Huawei] sysname R1
[R1] interface GigabitEthernet0/0/2
[R1-GigabitEthernet0/0/2] ip address 192.168.10.254 24
[R1-GigabitEthernet0/0/2] quit
[R1] interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1] ip address 202.100.1.1 24
[R1-GigabitEthernet0/0/1] quit
[R1] ip route-static 202.100.2.0 24 202.100.1.2R2 配置:
<Huawei> system-view
[Huawei] sysname R2
[R2] interface GigabitEthernet0/0/1
[R2-GigabitEthernet0/0/1] ip address 202.100.1.2 24
[R2-GigabitEthernet0/0/1] quit
[R2] interface GigabitEthernet0/0/2
[R2-GigabitEthernet0/0/2] ip address 202.100.2.254 24
[R2-GigabitEthernet0/0/2] quit基础连通性确认:此时 PC1、PC2 ping 202.100.2.100 不通——报文"去得了、回不来":内网报文能到达 Server2,但回包目的地址是私网地址,R2 没有内网路由,直接丢弃。这正是接下来要靠 NAT 解决的问题。
5.4 需求 1:静态 NAT 固定 PC1 的公网出口
[R1] nat static global 202.100.1.10 inside 192.168.10.10原理说明:全局视图配置后对所有接口出方向生效。PC1 的流量出 R1 时源地址被改写为 202.100.1.10;R2 回包到达 R1 后,目的地址 202.100.1.10 被还原为 192.168.10.10。静态 NAT 还兼具"发布"能力:公网可直接访问 202.100.1.10 的所有端口,全部映射到 PC1——生产中静态 NAT 多用于服务器发布或固定出口白名单场景,PC1 此处仅演示固定出口。
5.5 需求 2:地址池 NAPT 让其余内网上网
[R1] nat address-group 1 202.100.1.100 202.100.1.110
[R1] acl number 2000
[R1-acl-basic-2000] description NAT-INSIDE-TO-INTERNET
[R1-acl-basic-2000] rule 5 permit source 192.168.10.0 0.0.0.255
[R1-acl-basic-2000] quit
[R1] interface GigabitEthernet0/0/1
[R1-GigabitEthernet0/0/1] nat outbound 2000 address-group 1原理说明:ACL 2000 在 NAT 中表示"需要转换的流量",permit 了整个内网网段;命中静态 NAT 的 PC1 优先按静态映射转换,不会再进地址池(静态优先级高于动态);PC2、Server1 未命中静态映射,按 NAPT 转换为地址池地址并复用端口,11 个公网地址即可承载整个网段。
5.6 需求 3:Easy IP 复用出接口地址
[R1-GigabitEthernet0/0/1] undo nat outbound 2000 address-group 1
[R1-GigabitEthernet0/0/1] nat outbound 2000原理说明:Easy IP 不建地址池,直接复用出接口地址 202.100.1.1 做端口复用转换,功能上与地址池方式等价;区别在于公网地址"跟着接口走"——出接口地址由运营商动态变更时配置无需调整,家庭宽带、拨号场景标配。
5.7 需求 4:NAT Server 发布内网 Web
[R1-GigabitEthernet0/0/1] nat server protocol tcp global 202.100.1.20 8080 inside 192.168.10.100 80原理说明:公网用户访问 202.100.1.20:8080 时,R1 把目的地址改写为 192.168.10.100:80 后送入内网;Server1 回包经 R1 按映射还原。内网服务器无需公网地址,R2 也永远不需要知道 192.168.10.0/24 的存在。8080→80 的端口改写同时演示了"端口映射",生产中常用于隐藏真实服务端口。
5.8 结果验证
验证需求 1(PC1 源地址固定为 202.100.1.10):
PC1> ping 202.100.2.100
--- 202.100.2.100 ping statistics ---
5 packet(s) transmitted, 5 packet(s) received, 0.00% packet loss
[R1] display nat session all
Protocol : icmp(1)
SrcAddr : 192.168.10.10 DstAddr : 202.100.2.100
New SrcAddr : 202.100.1.10验证需求 2(PC2 转换为地址池地址):
PC2> ping 202.100.2.100
5 packet(s) transmitted, 5 packet(s) received, 0.00% packet loss
[R1] display nat session all
SrcAddr : 192.168.10.20
New SrcAddr : 202.100.1.100验证需求 3(Easy IP 后源地址变为出接口地址):
PC2> ping 202.100.2.100
5 packet(s) transmitted, 5 packet(s) received, 0.00% packet loss
[R1] display nat session all
SrcAddr : 192.168.10.20
New SrcAddr : 202.100.1.1验证需求 4(公网主动访问内网 Web):
Server2 访问 http://202.100.1.20:8080 → 正常打开 Server1 的 Web 页面
[R1] display nat session all
Protocol : tcp(6)
SrcAddr : 202.100.2.100 DstAddr : 202.100.1.20
New SrcAddr : -- New DstAddr : 192.168.10.100说明:会话表输出因 VRP 版本不同略有差异,关注 SrcAddr / New SrcAddr / New DstAddr 字段即可。
六、扩展配置
6.1 no-pat(只转地址不转端口)
[R1-GigabitEthernet0/0/1] nat outbound 2000 address-group 1 no-pat说明:动态 NAT 模式,一条私网地址独占一个公网地址(不共享端口),地址池必须足够大,否则后到的流量转换失败;现很少使用。
6.2 NAT ALG(应用层网关)
[R1] nat alg ftp enable说明:FTP 等协议的报文载荷中携带 IP 与端口(如 PORT 命令),NAT 只改头部会导致数据通道建不起来;开启 ALG 后设备同步改写载荷内容。DNS、SIP、PPTP 同理(命令随版本略有差异,可用 display nat alg 查看开启情况)。
6.3 清理会话表
<R1> reset nat session all说明:修改 NAT 配置后如需立即重新观察转换,先清空会话表;不清也不会出错,旧表项会按老化时间自动删除(ICMP 会话老化较短)。
七、验证与排错命令
| 命令 | 视图 | 作用 |
|---|---|---|
| display nat session [ all ] | 任意 | 查看会话表:转换前后的地址与端口 |
| display nat static | 任意 | 查看静态 NAT 映射 |
| display nat outbound | 任意 | 查看 outbound 绑定的 ACL 与地址池 |
| display nat address-group | 任意 | 查看地址池定义与占用情况 |
| reset nat session [ all ] | 用户视图 | 清空会话表,重新观察 |
排错三板斧:
- 查匹配:
display acl 2000核对需要转换的网段被 permit(NAT 语义是"permit = 转换"); - 查绑定:
display nat outbound/ 接口配置核对转换是否挂在公网出接口(最常见错误是挂到内网口或 ACL 网段写错); - 查会话:
display nat session all看报文是否被转换、New SrcAddr / New DstAddr 是否符合预期——有会话但业务不通,多半是回程路由或 ALG 问题。
八、注意事项
- NAT outbound 转换必须应用在公网出接口,ACL 中 permit 的源网段即"需要转换的内网范围";
- 静态 NAT(全局)优先于动态 NAPT 命中,同一主机不会同时走两条映射;
- NAT Server 的 global 地址不能与地址池重叠,否则地址冲突;
- 回程可达是 NAT 生效的前提:出口路由器要有去往目的网段的路由;公网侧只需认识转换后地址,内网网段无需对外通告;
- 会话表是还原回包的依据,超时老化后回包无法还原;修改配置后可
reset nat session清表观察; - NAT 破坏端到端可达性:IPsec、FTP、SIP、DNS 等载荷携带地址的协议需要 ALG 配合;
- 删除顺序:先在接口视图
undo nat outbound/undo nat server,再删除地址池与 ACL; - Easy IP 与地址池 NAPT 功能等价,区别仅在公网地址来源(出接口 vs 地址池)。
九、面试高频问答
- NAT 的作用是什么? 把报文头中的地址(端口)转换后转发,核心价值是节约公网 IPv4 地址、隐藏内网结构,让私网用户共享公网地址上网。
- 静态 NAT、动态 NAT、NAPT 的区别? 静态 NAT 一对一固定映射;动态 NAT 多对多临时映射(不省地址,no-pat);NAPT 多对一端口复用,是主流方式。
- Easy IP 与地址池 NAPT 的区别? 功能等价,仅公网地址来源不同:Easy IP 复用出接口地址,适合地址动态获取的场景;地址池方式手工指定范围。
- NAT Server 解决什么问题? 公网主动访问内网服务器:把公网地址(端口)预映射到内网地址(端口),配合端口改写还能隐藏真实服务端口。
- NAT 中引用的 ACL 是什么语义? 命中 permit 的流量需要转换,deny 或未命中不转换——与包过滤场景(放行/丢弃)含义不同。
- NAPT 如何实现多台私网主机共用一个公网地址不冲突? "IP+端口"二元组复用,每个转换流在会话表中记录映射,回包按会话还原。
- 为什么 FTP、SIP 需要 ALG? 这些协议在报文载荷中携带 IP/端口信息,NAT 只改 IP 头会导致控制通道与数据通道不一致,ALG 同步改写载荷。
- 私网 ping 公网通、公网 ping 私网不通,为什么? 私网地址未对外路由,公网回包只能回到转换后地址;未配置静态 NAT / NAT Server 时,公网无法主动发起访问。
十、记忆口诀
- 分类:静态一对一,动态借池子,端口复用多合一,Easy 蹭接口,Server 往里翻;
- 方向:出转源,进转目,回包查表来还原;
- ACL 语义:NAT 里 permit 要转换;
- 配置位置:动态挂出口,静态全局走;
- 四地址:内私内公,外私外公(Inside Local / Inside Global / Outside Local / Outside Global)。