做实验记录这块,我最常被问到的就是:内网一堆电脑要上网,运营商却只给一个接口地址,到底怎么配?如果你用的是华为的设备,标准答案基本就是 Easy IP。我自己在模拟环境里反复搭过好多次这种拓扑,也替客户在真实设备上调过类似的场景,今天把这次“配置华为 Easy IP”的完整实验记录整理出来,从原理到命令,从验证到排错,一次说透。
这篇内容适合刚接触 NAT 的新手,也适合那些一直在用地址池方式、但对 Easy IP 细节不太清楚的兄弟。不管你是备考、做实验,还是准备去现场交付,照着配置一遍,基本就能把这块吃透。我不会只扔命令,还会把每条命令为什么要这么写、踩过哪些坑都讲清楚,这才是实验记录该有的样子。
1. 先把 Easy IP 这件事理解透
1.1 它是 NAT 里最省事的一种玩法
华为设备上的 NAT 大类里有个分支叫 NAT Outbound,就是源地址转换,把内网私有地址转换成出口的公网地址。传统做法是先建一个地址池(address-group),把运营商给的几个公网地址填进去,然后在内网出口调用:“符合 ACL 的流量,源地址都改成地址池里的地址”。
Easy IP 不一样。它不需要单独建地址池,而是直接借用出接口自己的 IP 地址作为转换后的源地址。也就是说,接口配置的 IP 是多少,转换后源地址就是多少。如果接口 IP 是动态获取的,比如通过拨号方式从运营商拿到一个动态地址,Easy IP 也能跟着自动适应,转换后的地址始终就是当前接口地址。
这样的好处非常直观:省掉了地址池配置,不用担心地址池里的地址和接口地址不一致,更不用在运营商临时改了地址之后手动去改 NAT 配置。你只需要一条“nat outbound 2000”把接口调用起来,剩下的事情设备自己搞定。对大规模高并发场景来说,Easy IP 不是最优解,因为大家共享一个出口地址,端口资源会被大量消耗;但在中小型网点、门店、分支办公室这种场景,Easy IP 就是又简单又实用的方案。
1.2 搞清楚它和你现在用的配置有什么不同
我知道很多同事习惯用地址池方式做 NAT,配置大概是这样的:
nat address-group 1 203.0.113.10 203.0.113.20 acl number 2000 rule 5 permit source 192.168.10.0 0.0.0.255 interface GigabitEthernet0/0/1 nat outbound 2000 address-group 1地址池方式适合手上有多个公网地址的情况,多个内网用户转换后可以分配到不同的公网地址,端口压力分散。而 Easy IP 的写法是:
acl number 2000 rule 5 permit source 192.168.10.0 0.0.0.255 interface GigabitEthernet0/0/1 nat outbound 2000两者核心区别就三点:
- 有没有独立的地址池。
- 转换后的源地址来源不同。
- 公网地址变化时是否需要手动干预。
Easy IP 模式下,转换后的源地址永远等于调用 NAT 的那个接口的 IP。这一点在做故障排查时特别重要,后面我验证的时候会再次强调。
2. 实验拓扑与地址规划
2.1 这次实验搭建的环境
我这几年做实验的习惯是先在 eNSP 里把拓扑跑通,再去真机上验证。这次实验用的拓扑很简单,但已经足够覆盖 Easy IP 的核心知识点:
内网两台 PC 接到一台路由器 AR1 的内网口,AR1 的出口连接模拟运营商侧的路由器 AR2,AR2 下面挂一台公网测试主机。AR1 就是我们要配置 Easy IP 的设备,AR2 主要用来模拟公网侧环境,验证 NAT 转换后的流量能不能正确到达“外网”。
拓扑结构大致长这样:
PC1 (192.168.10.2) ----+ +---- AR1 ---- AR2 ---- PC3 (203.0.113.10) PC2 (192.168.10.3) ----+AR1 上两个接口:GE0/0/0 接内网,GE0/0/1 接“外网”。AR2 用两个接口分别连 AR1 和公网测试主机 PC3。
2.2 地址规划表
实验前把地址规划清楚,后面配置才不会乱。我习惯先把表格做好再动手:
| 设备 | 接口 | IP地址 | 网关 | 说明 |
|---|---|---|---|---|
| PC1 | 网卡 | 192.168.10.2/24 | 192.168.10.1 | 内网用户终端 |
| PC2 | 网卡 | 192.168.10.3/24 | 192.168.10.1 | 内网用户终端 |
| AR1 | GE0/0/0 | 192.168.10.1/24 | — | 内网网关 |
| AR1 | GE0/0/1 | 10.0.0.1/24 | — | 与外网互联,Easy IP 出接口 |
| AR2 | GE0/0/0 | 10.0.0.2/24 | — | 对接 AR1 |
| AR2 | GE0/0/1 | 203.0.113.1/24 | — | 公网测试网段网关 |
| PC3 | 网卡 | 203.0.113.10/24 | 203.0.113.1 | 公网侧测试主机 |
从规划表可以看出,内网段是 192.168.10.0/24,AR1 出口 IP 是 10.0.0.1,公网测试段是 203.0.113.0/24。这里故意把地址段完全区分开,方便后面观察 NAT 转换效果。
2.3 实验要验证的目标
在动手之前,我先把这次实验的验证目标列出来,避免配完不知道看什么:
- 内网 PC1、PC2 在没有配置 Easy IP 之前,无法访问公网测试主机 PC3。
- 配置 ACL 和 Easy IP 之后,PC1、PC2 都能 ping 通 PC3。
- 在 AR1 上能看到 NAT 转换记录,转换后的源地址是 10.0.0.1。
- 能通过 display 命令确认当前 NAT 类型是 Easy IP。
有了明确的验证目标,整个操作过程就不会走偏。
3. 基础配置:先保证链路能通
3.1 配置 AR1 接口和默认路由
装上设备第一件事,不是配置 NAT,而是先把底层网络弄通。很多人喜欢一上来就写 NAT 命令,结果 NAT 配了半天还是不生效,最后发现基础路由都没通,白白浪费时间。
AR1 的基础配置如下:
system-view sysname AR1 interface GigabitEthernet0/0/0 ip address 192.168.10.1 255.255.255.0 quit interface GigabitEthernet0/0/1 ip address 10.0.0.1 255.255.255.0 quit ip route-static 0.0.0.0 0.0.0.0 10.0.0.2最后那条默认路由非常关键。NAT 转换前,数据包需要先查路由表找到出接口,路由器才能确定用哪个接口的地址做转换。没有默认路由或者路由错误,包根本不会走到出口接口,后面的一切都无从谈起。我这句话说得直白一点:默认路由是 NAT 生效的前提,不是可有可无的东西。
3.2 配置 AR2 模拟运营商侧
AR2 配置比较简单,就是给两个接口配上地址,让“外网侧”有基本的连通性:
system-view sysname AR2 interface GigabitEthernet0/0/0 ip address 10.0.0.2 255.255.255.0 quit interface GigabitEthernet0/0/1 ip address 203.0.113.1 255.255.255.0 quit因为 AR2 连接的是模拟公网段,而 AR1 的转换后地址 10.0.0.1 和 AR2 的 GE0/0/0 同网段,所以 AR2 上不需要额外写回程路由,回包可以直接送到 10.0.0.1。真实生产环境里,如果 NAT 设备和外网设备中间跨了多跳,回程路由一定要检查清楚,这个我后面专门讲。
3.3 配置 PC 和测试连通性
给 PC1 配置静态地址 192.168.10.2/24,网关 192.168.10.1;PC2 配置 192.168.10.3/24,网关同样是 192.168.10.1。
配置完成后,先在 AR1 上测试到运营商侧 AR2 的连通性:
ping 10.0.0.2如果这个 ping 能通,说明 AR1 出口链路是正常的。接着在 AR1 上测试到公网测试主机 PC3 的连通性:
ping 203.0.113.10这个时候 AR1 应该能 ping 通,因为 AR1 本身在公网侧有路由,它不需要做 NAT。真正需要 NAT 的是内网 PC,所以在 PC1 上 ping 203.0.113.10 应该是不同的,因为此时还没有配置任何 NAT 规则,PC1 的源地址是 192.168.10.2,AR2 收到这个私网地址的包之后没有回程路由,包就丢了。
这一步“先不通”的现象非常重要,它能证明我们确实需要 NAT,而且能帮我们区分是路由问题还是 NAT 问题。
4. 华为 Easy IP 核心配置与命令详解
4.1 用 ACL 圈定需要做 NAT 的流量
Easy IP 配置的第一步,是先写一个 ACL,告诉路由器哪些流量需要被转换。华为设备上通常用 2000-2999 的数字 ACL 做源地址匹配。
acl number 2000 rule 5 permit source 192.168.10.0 0.0.0.255 quit这条 ACL 的意思是:允许源地址为 192.168.10.0/24 网段的流量通过。注意这里用的是通配符 0.0.0.255,不是子网掩码 255.255.255.0。ACL 里写通配符是华为设备的固定格式,0 表示必须严格匹配,255 表示不需要匹配。
rule 5 前面的编号是规则优先级,数字越小越靠前匹配。如果内网只有一个网段,一条规则就够了。如果需求更复杂,比如只有部分主机需要上网,可以写得更精细:
acl number 2000 rule 5 permit source 192.168.10.2 0.0.0.0 rule 10 permit source 192.168.10.3 0.0.0.0 quit这样就只有 PC1 和 PC2 这两台主机能转换上网。ACL 从根本上决定了哪些流量会被 NAT,哪些流量会裸奔出去,写的时候一定要想清楚。
4.2 在出接口调用 nat outbound,Easy IP 就此生效
ACL 写好之后,进入 AR1 的出口接口 GE0/0/1,执行最核心的一条命令:
interface GigabitEthernet0/0/1 nat outbound 2000 quit命令里只有 ACL 编号,没有 address-group,这就会触发 Easy IP 模式。设备会自动把该接口的 IP 地址当作转换后的源地址。如果想验证一下当前配置,可以执行:
display nat outbound输出结果里会明确出现 EASY IP 字样,看到这个就说明模式已经生效了。以我在设备上实际观察到的输出为例:
NAT Outbound Information: Interface Acl Address-group/IP/Interface Type --------------------------------------------------------------------------- GigabitEthernet0/0/1 2000 GigabitEthernet0/0/1 EASY IPAddress-group/IP/Interface 这一列显示的是 GigabitEthernet0/0/1,Type 是 EASY IP,意思就是 Easy IP 直接借用了 GE0/0/1 的接口地址做转换。
4.3 完整配置汇总,方便直接对照
实验做完之后,AR1 的完整关键配置大致长这样:
sysname AR1 # interface GigabitEthernet0/0/0 ip address 192.168.10.1 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 10.0.0.1 255.255.255.0 nat outbound 2000 # acl number 2000 rule 5 permit source 192.168.10.0 0.0.0.255 # ip route-static 0.0.0.0 0.0.0.0 10.0.0.2配置量和传统地址池 NAT 相比,少了 address-group 那一段,整体清爽了很多。这也是 Easy IP 最大的优势之一,少一个环节就少一个出错点。
5. 验证与测试:确认转换真正生效
5.1 从内网 PC 发起访问测试
配置完成后,在 PC1 上 ping 公网测试主机 PC3 的地址:
ping 203.0.113.10如果配置正确,PC1 应该能收到回应。为了更直观地确认转换效果,我习惯在 PC1 上用“ping -a”指定源地址发起测试,这样后面的 NAT 会话表能看到明确的源地址信息。
PC2 同样执行 ping 203.0.113.10,也应该能通。到这一步,Easy IP 的基本功能就算验证通过了。
5.2 查看 NAT 转换表示例
光能 ping 通还不够,我们要从路由器上看到转换记录,才能真正确信 NAT 在工作。
在 AR1 上执行:
display nat session all以 PC1 发起的 ICMP 流量为例,会话表大概长这样:
NAT Session Table Information: Protocol : ICMP SrcAddr : 192.168.10.2 SrcPort : 0 DestAddr : 203.0.113.10 DestPort : 0 Global SrcAddr : 10.0.0.1 Global DestAddr : 203.0.113.10 Global SrcPort : 0 Global DestPort : 0注意 Global SrcAddr 这一栏,显示的正是 10.0.0.1,也就是 AR1 出接口的地址。内网 PC 的私网地址 192.168.10.2 被隐藏起来了,对外访问的源地址统一变成了 10.0.0.1。这就是 Easy IP 最直观的证明。
5.3 使用 Debug 命令观察 NAT 过程
如果还想看得更细,可以用 debug 命令跟踪 NAT 转发过程:
terminal monitor terminal debugging debugging nat packet屏幕上会打印出 NAT 处理的详细日志,能看到数据包进入时的源地址、转换后的源地址以及转换动作。这个命令在生产环境要慎用,debug 会消耗设备 CPU 资源,在高峰期可能导致设备性能下降。我通常在实验环境里用一用,确认逻辑没问题就马上关掉:
undo debugging nat packet关闭终端调试:
undo terminal debugging5.4 验证时容易被忽略的细节
在验证过程中,我发现很多人会犯一个低级错误:拿路由器本身去 ping 公网地址,然后以为 NAT 生效了。路由器自己发起的流量不走 NAT Outbound,它本身就是公网侧设备。真正要验证的是内网 PC 发起的流量。我这次实验特意从 PC1、PC2 分别发起测试,就是为了避免这个误区。
6. 常见问题与排错,都是实战踩过的坑
6.1 NAT 怎么都不生效,先查这几个地方
Easy IP 配置虽然简单,但出问题的时候排查起来还是有一套固定思路的。我把实际排障过程中最常见的几个方向列出来:
第一,查 ACL 有没有匹配到流量。在设备上执行:
display acl 2000看里面的匹配计数是不是在增长。如果计数是 0,说明流量根本没被 ACL 命中,后面的 NAT 肯定不会执行。这种情况常见于内网网段和 ACL 写的不一致,或者 PC 的网关配置错误。
第二,查默认路由。执行:
display ip routing-table看有没有默认路由,默认路由的下一跳是否正确。如果匹配 NAT 的流量找不到出接口,数据包会被丢弃,表现就是 NAT 不生效。
第三,查 NAT 调用接口。执行:
display nat outbound看 ACL 是不是绑定在正确的出接口上。有人把 nat outbound 配在了内网口,方向完全反了,流量自然转换不了。NAT Outbound 一定要配置在数据流向“外”的那个接口上。
6.2 外网接口 IP 变了,NAT 怎么办
Easy IP 一个很大的优势,就是出接口 IP 如果动态变化,比如拨号线路重新获取了一个新地址,NAT 转换后的源地址会自动跟随接口地址变化。传统地址池方式如果只配置了静态公网地址,运营商改地址之后就要手动调整;而 Easy IP 不需要任何干预。
这个特性在拨号场景里特别实用。如果出接口是通过 Dialer 口拨号获取地址,直接在 Dialer 接口上调用 NAT 就行,转换后的源地址永远是拨号接口当前拿到的地址。
6.3 内网能通,公网地址却 ping 不通
很多时候内网 PC 能跑到出口设备,但 ping 公网地址不通。这里有个经验:不要只盯着 NAT 配置,先确认你的出口设备本身能不能 ping 通公网地址。如果出口设备也 ping 不通,那就是基础路由或者运营商侧的问题,和 NAT 没关系。
如果出口设备能 ping 通,而内网 PC 不能,再回来查 NAT 会话是否有记录。还有一种情况比较隐蔽:对端设备可能禁用了 ICMP 回显,或者公网侧安全策略把 ICMP 拦了。这时候用 TCP 类测试更可靠,比如从内网 telnet 公网服务器的 80 端口,能通就说明 NAT 是好的。
6.4 大流量场景下的端口复用问题
Easy IP 模式下所有内网用户都共用一个出口 IP,NAT 会通过端口号区分不同会话。如果并发会话数特别大,比如有大量 BT 下载、视频会议或者突发业务,会耗尽 NAT 端口资源。设备上可能看到大量“no resource”或者 NAT 会话建立失败的日志。
这种情况不是配置错了,而是模式选型问题。业务规模上来之后,建议改为地址池方式,或者多配置几个出接口做负载分担。Easy IP 更适合轻量级使用场景,这是它的定位决定的。
6.5 常见故障速查表
把容易犯的错和对应处理方式整理成了一张表,现场排查的时候可以直接对照:
| 问题现象 | 可能原因 | 排查命令 | 解决办法 |
|---|---|---|---|
| 内网 PC 无法访问公网 | ACL 未匹配 | display acl 2000 | 检查 ACL 源地址范围 |
| 内网 PC 无法访问公网 | 没有默认路由 | display ip routing-table | 配置 ip route-static 默认路由 |
| 转换后源地址显示私网地址 | NAT 没在出接口生效 | display nat outbound | 将 nat outbound 绑到正确出接口 |
| 能 ping 通但网页打不开 | 公网侧封了 ICMP 或 MTU 问题 | telnet 公网地址 80 | 用 TCP 类测试排除 ICMP 干扰 |
| 大流量时 NAT 会话建立失败 | 端口资源耗尽 | display nat session all | 改用地址池方式或增加出口资源 |
6.6 实验做完还应该顺手做的三件事
实验结束,配置验证通过,我通常还会多做三件事。第一是保存配置,在 AR1 和 AR2 上执行 save,防止设备重启后配置丢失。第二是清理调试命令,确认没有遗留的 debug 开关。第三是整理实验笔记,把关键命令和验证输出记录下来,方便下次直接复用。
这三件事看起来不起眼,但做工程的习惯就是从这些细节里养出来的。很多人实验做完了,配置不保存,第二天来发现设备状态和昨天完全不一样,还以为自己记错了,这种亏我年轻时候没少吃。
7. 我自己在做 Easy IP 实验时的一些体会
从第一次在模拟器里配置 Easy IP 到现在,这个功能给我的最大感受就是“简单但不简陋”。它把 NAT 配置的门槛降到了很低:一条 ACL、一条 nat outbound、一条默认路由,三件事做完,内网机器就能正常访问外部网络了。相比地址池方式,少了很多需要维护的状态。
我也越来越理解为什么 Easy IP 会成为那么多分支网点、中小型企业的标准配置。不是因为大家不会配地址池,而是这种场景下根本不需要地址池。运营商的接入方式越来越灵活,动态地址越来越普遍,Easy IP 这种“跟着接口走”的思路,天然就适合动态地址环境。
如果你正在学习华为 NAT,我建议你亲手把这次实验完整跑一遍,不要只看命令。重点去观察三个现象:配置前内网 PC 能不能通、配置后能不能通、NAT 会话表里的 Global SrcAddr 是什么。这三个现象串起来,你对 Easy IP 的理解就不只是停留在“会敲命令”的层面了。下次再遇到 NAT 相关的故障,你也能有一个更清晰的排查方向。