华为路由器Easy IP配置实验:内网一条命令上外网
做实验记录这块我最常被问到的就是内网一堆电脑要上网运营商却只给一个接口地址到底怎么配如果你用的是华为的设备标准答案基本就是 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 的出口连接模拟运营商侧的路由器 AR2AR2 下面挂一台公网测试主机。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/24192.168.10.1内网用户终端PC2网卡192.168.10.3/24192.168.10.1内网用户终端AR1GE0/0/0192.168.10.1/24—内网网关AR1GE0/0/110.0.0.1/24—与外网互联Easy IP 出接口AR2GE0/0/010.0.0.2/24—对接 AR1AR2GE0/0/1203.0.113.1/24—公网测试网段网关PC3网卡203.0.113.10/24203.0.113.1公网侧测试主机从规划表可以看出内网段是 192.168.10.0/24AR1 出口 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.1PC2 配置 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.2AR2 收到这个私网地址的包之后没有回程路由包就丢了。这一步“先不通”的现象非常重要它能证明我们确实需要 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 outboundEasy 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/1Type 是 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 模式下所有内网用户都共用一个出口 IPNAT 会通过端口号区分不同会话。如果并发会话数特别大比如有大量 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 相关的故障你也能有一个更清晰的排查方向。