三厂 NAT 命令体系总览
NAT 是跨厂商差异较大的配置之一。思科的模型要求先在接口上声明角色:面向内网的接口标 inside、面向外网的标 outside,再由一条源转换语句引用 ACL;华为与 H3C 没有接口角色的概念,直接把转换规则挂在连接外网的接口上,用 nat outbound 引用 ACL 决定哪些流量被转换。理解这一层模型差异,就不会出现配了一半却完全不转换的情况。
基本信息
| 适用设备 | 三厂路由器、防火墙与三层交换机 |
|---|---|
| 核心差异 | 思科要标记接口角色,华为与 H3C 只在外网口配转换规则 |
| 源选择 | 三厂都用 ACL 圈定需要转换的流量,通常使用只匹配源地址的 ACL |
| 地址来源 | 可复用接口地址,也可使用地址池,拨号场景用接口地址更稳 |
| 验证命令 | show ip nat translations 与 display nat session 查看会话表 |
典型使用场景
- 内网整体上网:多用户共享少量公网地址
- 外网发布内网服务:把公网端口映射到内网服务器
- 服务器需要固定公网地址:一对一静态映射
- 跨网段互访时的地址翻译,避免双方网段冲突
- 设备替换或厂商迁移时,把源转换与端口映射规则逐条重写
华为 VRP
华为 VRP
acl number 2000
rule 5 permit source 192.168.1.0 0.0.0.255 # 需要上网的网段
interface GigabitEthernet0/0/1 # 连接外网的接口
nat outbound 2000 # 不跟地址池即为复用接口地址
display nat outbound思科 IOS
思科 IOS
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat inside source list 1 interface GigabitEthernet0/0 overload
interface GigabitEthernet0/1
ip nat inside # 面向内网
interface GigabitEthernet0/0
ip nat outside # 面向外网
show ip nat statisticsH3C Comware
H3C Comware
acl basic 2000
rule 0 permit source 192.168.1.0 0.0.0.255
interface GigabitEthernet1/0/1 # 连接外网的接口
nat outbound 2000
display nat outbound
display nat session all三厂模型差异对照
| 维度 | 华为 VRP | 思科 IOS | H3C Comware |
|---|---|---|---|
| 接口角色 | 无角色概念 | 必须标 inside 与 outside | 无角色概念 |
| 源转换命令 | 接口下 nat outbound 引用 ACL | 全局语句加接口角色标记 | 接口下 nat outbound 引用 ACL |
| 端口映射 | nat server 配在外网口 | 静态源转换语句 | nat server 配在外网口 |
| 地址复用关键字 | 不跟地址池即复用 | 必须写 overload | 不跟地址池即复用 |
| 会话查看 | display nat session all | show ip nat translations | display nat session all |
迁移与排障要点
- 先确认接口角色是否漏配:思科上这是 NAT 完全不生效的头号原因,查统计输出能看到已标记的 inside 与 outside 接口
- ACL 类型要匹配:地址转换的源选择通常使用只匹配源地址的 ACL,写成高级或扩展 ACL 在部分平台上语义不同
- 会话表是判断依据:有会话表说明转换在工作,没有会话表说明流量根本没进入转换流程
- 回程路由同样重要:转换成功但回包路径不对,表现为单向通或时通时断
- 地址池方式在动态地址场景不可靠:重拨换地址会断流,接口地址复用更稳
常见疑问
- 为什么配置看起来一样却不生效:先比对接口角色与命令位置,三厂的模型不同,命令位置本身就是语义
- 内网能 ping 网关但不能上网:多为源选择 ACL 未命中或外网接口选择错误
- 外网访问内网服务不通:先确认映射条目存在、公网地址已在接口上,再看服务器自身是否放行
- 需要排除某些网段不做转换:在 ACL 里对它们显式拒绝,或用规则顺序把范围排在外面
- 改完配置要不要清会话:会话表变化会短暂中断在线业务,非必要不清
思科漏配接口角色时,转换语句存在也不会产生任何会话;华为与 H3C 没有这个问题,但要求把命令配在正确的接口上——配在内网口上同样是常见错误。
NAT 与 ACL 是引用关系而不是替代关系:ACL 决定哪些流量需要转换,NAT 语句决定怎么转换。两者任意一环写错都会表现为完全不通,排障时按引用链逐段确认。