Skip to content

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 的三大价值:

  1. 节约公网 IPv4 地址:一个公网地址 + 端口复用即可承载大量私网用户;
  2. 隐藏内网结构:外网只能看到转换后的地址,内网网段无需对外路由;
  3. 私网互联:两个使用相同私网网段的企业互联时做二次转换(较少使用)。

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  (查会话表还原)

两条铁律:

  1. 会话表记录映射:设备为每个转换流记录(私网地址:端口 → 公网地址:端口),回包按表还原,会话超时后表项删除;
  2. 公网地址靠端口区分多条流:不同私网主机可共用同一公网 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 1
  • nat 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.100

5.2 地址规划与实验需求 ​

地址规划:

设备/对象接口/位置IP 地址说明
R1GE0/0/1202.100.1.1/24公网出口
R1GE0/0/2192.168.10.254/24内网网关
R2GE0/0/1202.100.1.2/24与 R1 互联
R2GE0/0/2202.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~110NAPT 出口池
NAT Server 地址—202.100.1.20发布内网 Web

实验需求:

需求内容NAT 类型应用位置
1PC1 访问公网时固定使用 202.100.1.10静态 NATR1 全局
2PC2 等其余内网用户通过地址池上网NAPT(地址池)R1 GE0/0/1 outbound
3改用出接口地址上网(演示 Easy IP)Easy IPR1 GE0/0/1 outbound
4公网通过 202.100.1.20:8080 访问内网 WebNAT ServerR1 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.2

R2 配置:

<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 ]用户视图清空会话表,重新观察

排错三板斧:

  1. 查匹配:display acl 2000 核对需要转换的网段被 permit(NAT 语义是"permit = 转换");
  2. 查绑定:display nat outbound / 接口配置核对转换是否挂在公网出接口(最常见错误是挂到内网口或 ACL 网段写错);
  3. 查会话:display nat session all 看报文是否被转换、New SrcAddr / New DstAddr 是否符合预期——有会话但业务不通,多半是回程路由或 ALG 问题。

八、注意事项 ​

  1. NAT outbound 转换必须应用在公网出接口,ACL 中 permit 的源网段即"需要转换的内网范围";
  2. 静态 NAT(全局)优先于动态 NAPT 命中,同一主机不会同时走两条映射;
  3. NAT Server 的 global 地址不能与地址池重叠,否则地址冲突;
  4. 回程可达是 NAT 生效的前提:出口路由器要有去往目的网段的路由;公网侧只需认识转换后地址,内网网段无需对外通告;
  5. 会话表是还原回包的依据,超时老化后回包无法还原;修改配置后可 reset nat session 清表观察;
  6. NAT 破坏端到端可达性:IPsec、FTP、SIP、DNS 等载荷携带地址的协议需要 ALG 配合;
  7. 删除顺序:先在接口视图 undo nat outbound / undo nat server,再删除地址池与 ACL;
  8. Easy IP 与地址池 NAPT 功能等价,区别仅在公网地址来源(出接口 vs 地址池)。

九、面试高频问答 ​

  1. NAT 的作用是什么? 把报文头中的地址(端口)转换后转发,核心价值是节约公网 IPv4 地址、隐藏内网结构,让私网用户共享公网地址上网。
  2. 静态 NAT、动态 NAT、NAPT 的区别? 静态 NAT 一对一固定映射;动态 NAT 多对多临时映射(不省地址,no-pat);NAPT 多对一端口复用,是主流方式。
  3. Easy IP 与地址池 NAPT 的区别? 功能等价,仅公网地址来源不同:Easy IP 复用出接口地址,适合地址动态获取的场景;地址池方式手工指定范围。
  4. NAT Server 解决什么问题? 公网主动访问内网服务器:把公网地址(端口)预映射到内网地址(端口),配合端口改写还能隐藏真实服务端口。
  5. NAT 中引用的 ACL 是什么语义? 命中 permit 的流量需要转换,deny 或未命中不转换——与包过滤场景(放行/丢弃)含义不同。
  6. NAPT 如何实现多台私网主机共用一个公网地址不冲突? "IP+端口"二元组复用,每个转换流在会话表中记录映射,回包按会话还原。
  7. 为什么 FTP、SIP 需要 ALG? 这些协议在报文载荷中携带 IP/端口信息,NAT 只改 IP 头会导致控制通道与数据通道不一致,ALG 同步改写载荷。
  8. 私网 ping 公网通、公网 ping 私网不通,为什么? 私网地址未对外路由,公网回包只能回到转换后地址;未配置静态 NAT / NAT Server 时,公网无法主动发起访问。

十、记忆口诀 ​

  • 分类:静态一对一,动态借池子,端口复用多合一,Easy 蹭接口,Server 往里翻;
  • 方向:出转源,进转目,回包查表来还原;
  • ACL 语义:NAT 里 permit 要转换;
  • 配置位置:动态挂出口,静态全局走;
  • 四地址:内私内公,外私外公(Inside Local / Inside Global / Outside Local / Outside Global)。