思科 NAT 的接口角色
思科的 NAT 必须先在接口上声明方向角色:面向内网的接口标 ip nat inside,面向外网的接口标 ip nat outside。转换语句只是描述规则,接口角色决定哪些接口之间的流量会进入转换流程,任一侧漏配,NAT 就完全不生效。这是跨厂商排查中最容易被忽略的一点:从华为或 H3C 转过来的工程师习惯只找转换命令,不会想到还有一层接口标记。
基本信息
| 适用平台 | Cisco IOS 与 IOS-XE 路由器、防火墙模块 |
|---|---|
| 命令 | ip nat inside 与 ip nat outside,配置在接口下 |
| 作用范围 | 同一物理口的所有子接口要各自标记 |
| 核对方式 | show ip nat statistics 会列出已标记的接口 |
| 典型故障 | 只标一侧或子接口漏标,表现为部分网段无法转换 |
典型使用场景
- 内网整体上网的出口配置,必须先标好内外接口
- 单臂路由或子接口场景,每个子接口单独标记角色
- 设备替换时从其他厂商迁移配置,补上缺失的角色标记
- 排查 NAT 不生效问题时作为第一检查项
- 多出口场景中分别标记各接口角色,避免流量走错方向
思科 IOS
思科 IOS
interface GigabitEthernet0/1
description LAN
ip nat inside # 面向内网的接口
interface GigabitEthernet0/0
description WAN
ip nat outside # 面向外网的接口
show ip nat statistics | include interfaces
show run interface GigabitEthernet0/0 | include nat华为 VRP
华为 VRP
! 华为没有接口角色概念,只在出口接口配置转换规则
interface GigabitEthernet0/0/1
nat outbound 2000 # 挂在连接外网的接口上
display nat outboundH3C Comware
H3C Comware
! H3C 同样没有接口角色概念
interface GigabitEthernet1/0/1
nat outbound 2000
display nat outbound模型差异对照
| 对比项 | 思科 IOS | 华为 VRP | H3C Comware |
|---|---|---|---|
| 接口角色 | 必须有 inside 与 outside 标记 | 无此概念 | 无此概念 |
| 子接口处理 | 每个子接口单独标记 | 逻辑接口上直接配转换规则 | 逻辑接口上直接配转换规则 |
| 角色缺失后果 | NAT 完全不生效,会话表为空 | 不存在该问题 | 不存在该问题 |
| 核对方式 | 统计输出列出已标记接口 | 查看转换条目挂载的接口 | 查看转换条目挂载的接口 |
| 常见误判 | 以为命令写错,实际是漏标接口 | 命令挂错接口 | 命令挂错接口 |
排查与配置要点
- NAT 不工作时第一步查接口角色,而不是反复修改转换语句
- 子接口场景逐个子接口确认:物理口上的标记不会自动继承
- 删除角色标记会立即停止转换,变更前先确认影响范围
- 接口描述建议写明 LAN 与 WAN,方便多人协作时快速识别
- 与其他厂商设备对接时先理解模型差异,再逐条重写配置
常见疑问
- 为什么转换语句写了却没效果:先看接口是否已标记角色,再看源选择 ACL
- 同一接口能同时是 inside 和 outside 吗:不能,角色的含义互斥,混用会导致转换行为混乱
- 子接口要怎么标:在子接口视图下分别配置,做单臂路由时容易漏
- 删掉角色标记会怎样:转换立即失效,属于高危操作,需要在维护窗口进行
角色漏配是思科 NAT 完全失效的头号原因:转换语句、ACL、路由都检查过没问题时,回头确认接口角色,往往就是这一步没做。
统计输出会直接列出被标记为 inside 与 outside 的接口清单,这是最快的核对方式;日常巡检时把它作为出口设备的固定检查项。