拓冰建站拓冰建站
首页 / 资讯中心 / 正文

华为eNSP静态路由综合实验:回程路由配置与故障排查

1. 实验拓扑设计与整体思路先说这次实验的环境。手头是华为ensp模拟器版本我用的比较老实的eNSP V100R003C00装了四台设备三台路由器加两台PC型号方面AR1和AR2用AR2220AR3用的AR201其实AR2220也行实验规模小性能完全够。这个实验的岗位价值我就不多废话了跑过企业网项目的人都清楚绝大多数中小型园区、分支互联、专线接入静态路由依然是最稳、最透明的选路方案。动态路由协议固然省事但静态路由让你把“下一跳是谁、掩码该写多少、回程怎么走”这三件事彻底想明白这些恰恰是后面学OSPF、BGP的基础。所以这份实验不是学院派凑学分用的是对“数据包怎么来回”这件事的完整落地验证。1.1 拓扑规划与基本思路先看拓扑这里我给的是一个典型的“三路由串联”结构PC1 --- AR1 --- AR2 --- AR3 --- PC2三台路由器串在一起PC1挂在AR1的G0/0/0口PC2挂在AR3的G0/0/0口路由器之间用G0/0/1和G0/0/2互连。很多新手拿到这个拓扑第一反应是“这不就是一路顺着转发吗配三条静态路由不就通了”——真有这么简单就好办了。链路通了只是一半数据包到达对端之后回程数据包怎么回来这是整个实验里被问烂却又反复踩坑的地方。我特意把网段规划成三组每组都留出清晰的范围方便验证路由表里的条目对不对设备/接口IP地址掩码所属网段PC1192.168.10.10255.255.255.0192.168.10.0/24AR1 G0/0/0192.168.10.1255.255.255.0192.168.10.0/24AR1 G0/0/110.0.12.1255.255.255.010.0.12.0/24AR2 G0/0/110.0.12.2255.255.255.010.0.12.0/24AR2 G0/0/210.0.23.2255.255.255.010.0.23.0/24AR3 G0/0/210.0.23.3255.255.255.010.0.23.0/24AR3 G0/0/0192.168.20.1255.255.255.0192.168.20.0/24PC2192.168.20.20255.255.255.0192.168.20.0/24这个规划有一个隐藏的好处三台路由器各自的直连网段都摊在面上配静态路由的时候不需要做任何汇总计算每条路由都很直白。10.0.12.0/24在AR1和AR2之间10.0.23.0/24在AR2和AR3之间一眼就能看出谁和谁是邻居。后边排查的时候display ip routing-table一刷哪个网段该出现在哪台设备上对照这个表直接就能判断出问题。1.2 为什么要用三台路由器而不是两台很多新手问两台路由器做双向静态路由不也能通吗为什么非要用三台串起来。这个问题的答案其实就是在为“回程路由”做铺垫。两台路由器之间做静态路由路由条目很少即使漏了回程也容易一眼看出。但三台串联之后PC1访问PC2要经过AR1、AR2、AR3三跳每条数据包经过一个节点就需要一次路由查表三个节点的路由表必须同时正确。任何一个节点缺了对应条目数据包要么被丢弃要么走到半路就回不来了。这个设计能让“路由必须双向可达”这个概念变得非常具体——不是AR1一个人知道怎么走就行而是链路上每一台设备都得知道去程和回程分别往哪儿转发。另外三台设备还留出了中间节点AR2的观察位。调试的时候在AR2上开debug ip packet或者抓包能看到数据包的进出方向这种体验是在两台路由器上根本体会不到的。后面的故障排查部分我会再次回到这个点上。2. 静态路由原理与核心参数深度拆解原理层面先别急着敲命令把几个关键概念理顺了配置就是水到渠成的事。很多人在ensp里配静态路由出错追到底都是原理层面的一两个点没想透。2.1 静态路由本质一台设备只负责“告诉下一跳怎么走”静态路由的路由条目就干一件事告诉路由器去某个网段的数据包应该从哪个出接口发送交给哪个下一跳地址。这里要建立一个基本认知路由器不是为数据包规划完整路径的“导航中心”它只负责查自己的路由表然后把数据包交给离目标更近的下一跳。至于下一跳收到之后再怎么转那是下一跳的事。这个认知特别重要因为很多新手容易犯一个错觉得只要在自己的设备上配了一条“去往对方网段”的路由整条链路就应该通了。不是的。你只是把包交给了下一跳下一跳如果不知道怎么继续往最终目的地转发包一样被丢。数据包是一跳一跳地接力跑完全程的不是源设备直接发一个带完整路径的包裹过去。2.2 掩码、下一跳和出接口三条要素怎么配合华为ensp里静态路由的标准命令是ip route-static 目标网段 掩码 下一跳地址三个要素分别回答三个问题目标网段数据包要去的地方是哪一段网络。掩码这段网络有多大精确到几位。下一跳地址应该把数据包交给哪个邻居设备。比如在AR1上配一条去往192.168.20.0/24网段的路由下一跳是10.0.12.2也就是AR2的接口地址这条命令就是告诉AR1如果数据包是去192.168.20.0这个网段的就从10.0.12.0这个口交给10.0.12.2去处理。有件事必须说清楚下一跳地址必须和当前设备某个接口在同一个网段里而且得是可达的。什么意思呢AR1的G0/0/1地址是10.0.12.1下一跳必须是10.0.12网段里的某个地址比如10.0.12.2。如果你在AR1上写了个下一跳10.0.23.3这个地址跟AR1的任何一个接口都不在同一个网段路由器根本没法直连到这个下一跳这条静态路由配置了也是白配数据包丢给空气。很多新手第一次排查半天发现路由表里这条路由始终不生效原因就在这。还有一个细节——静态路由支持指定出接口格式是ip route-static 目标网段 掩码 出接口 下一跳多写一个出接口的好处是能在某些特殊环境比如链路发生故障时更快地判断路由是否可用。但在ensp实验里点对点链路直接指定出接口、不写下一跳也能通。不过为了贴合真实企业网环境我还是建议大家尽量养成“出接口下一跳”都写的习惯后续接真实设备时心态不会慌。2.3 回程路由和静态路由的区别一个必须单独拿出来讲的问题搜索大家都在问“回程路由和静态路由的区别”这个问题其实本身就暴露了一个理解错位。回程路由不是一种独立的路由类型它只是静态路由的一种应用场景。去程路由和回程路由在本质上都是静态路由只是方向不同。我打个比方你去朋友家做客从你家出发你得知道朋友家在哪这是去程路由你从朋友家回来朋友你得知道你家在哪这是回程路由。这俩是两张完全独立的路由表条目不能因为你知道朋友家怎么去就默认他也知道你家怎么回。放到实验里PC1访问PC2数据包从AR1一路向左向右转发到AR3这是去程路由。但PC2收到之后要给PC1回包回包的目的地址是192.168.10.10。此时AR3的直连网段是192.168.20.0/24它并不知道192.168.10.0/24该往哪走。如果AR3上没有配置去往192.168.10.0/24的静态路由回包到AR3这里就直接被丢弃。现象就是PC1 ping PC2的时候能看到请求发出去了但永远收不到回复。这个痛点在企业网里特别常见。很多客户报障“网络不通单向能通”排查到最后就是回程路由缺失。ping测试里有一个非常典型的特征如果去程通回程不通你在PC1上看到的往往是“请求超时”而不会报“目标不可达”。因为请求确实到了对端但对端的回应回不来。这个小特征学会了以后排障会快很多。2.4 路由表查询规则与最长掩码匹配数据包到达路由器后路由器会查看它的目标IP地址然后去路由表里查找最匹配的路由条目。华为设备的查找原则是“最长掩码优先”即掩码越长、越精确的条目优先被使用。比如AR1上同时存在两条去往192.168.0.0/16和192.168.10.0/24的路由当数据包目的地址是192.168.10.10时路由器会优先选择掩码更长的192.168.10.0/24这条因为它的匹配范围更精确。这个原则在配置汇总路由时会频繁使用实验阶段虽然用不上但建议把这个概念刻在脑子里后边学路由汇总、黑洞路由都是从这里延伸的。3. 华为ensp下的静态路由综合实验完整实操背景和原理都过完了现在开始敲命令。我尽量按实际操作的顺序走每一步配上解释这样你照着做一遍能真正理解每一句配置到底是在干什么。3.1 第一阶段配置设备基础信息并验证直连链路打开ensp拖出三台路由器和两台PC按表里的规划连好线。然后先给所有设备配好IP、打开接口。在AR1上执行system-view sysname AR1 interface GigabitEthernet0/0/0 ip address 192.168.10.1 255.255.255.0 undo shutdown interface GigabitEthernet0/0/1 ip address 10.0.12.1 255.255.255.0 undo shutdown quitAR2上执行system-view sysname AR2 interface GigabitEthernet0/0/1 ip address 10.0.12.2 255.255.255.0 undo shutdown interface GigabitEthernet0/0/2 ip address 10.0.23.2 255.255.255.0 undo shutdown quitAR3上执行system-view sysname AR3 interface GigabitEthernet0/0/2 ip address 10.0.23.3 255.255.255.0 undo shutdown interface GigabitEthernet0/0/0 ip address 192.168.20.1 255.255.255.0 undo shutdown quitPC1和PC2的配置图形界面很简单PC1的IP填192.168.10.10掩码255.255.255.0网关192.168.10.1PC2的IP填192.168.20.20网关192.168.20.1。配完先别急着配静态路由先验证直连链路。在AR1上ping AR2的10.0.12.2AR2上ping AR3的10.0.23.3AR3上ping PC2。这几条ping全通说明物理链路和接口地址都没问题后边配了静态路由不通用就可以把问题锁定在路由层面。这个阶段强烈建议养成一个习惯配完一个设备的接口后立刻用display ip interface brief确认接口状态是upIP地址也写进去了。ensp里最常见的低级错误就是接口没undo shutdown或者IP地址打错了一位导致后边怎么配都不通。3.2 第二阶段配置静态路由重点是回程直连链路验证通过之后开始配置去程路由。PC1访问PC2数据包的路径是PC1 → AR1 → AR2 → AR3 → PC2所以需要在AR1上配一条指向AR2的路由让数据包能走向AR2在AR2上配一条指向AR3的路由在AR3上配一条指向PC2的默认路由或者直连路由——注意因为PC2的网段就是AR3的直连网段AR3根本不需要额外配置就能知道192.168.20.0/24怎么走。但这里有个特别坑的细节AR3虽然是PC2的网关但PC2返回给PC1的数据包目标地址是192.168.10.10AR3查自己的路由表发现没有192.168.10.0/24的路由回包就会在AR3处丢弃。所以AR3必须配置一条去往192.168.10.0/24网段的回程路由下一跳指向AR2的10.0.23.2。同理AR2也需要回程路由。PC2的回包从AR3发给AR2后AR2查路由表发现目标是192.168.10.0/24直连网段里没有这个网段如果AR2上没配置正对着AR1的10.0.12.1的下一跳数据包一样被丢。所以完整的配置如下。AR1上配置去程路由ip route-static 192.168.20.0 255.255.255.0 10.0.12.2AR2上配置去程和回程两条ip route-static 192.168.20.0 255.255.255.0 10.0.23.3 ip route-static 192.168.10.0 255.255.255.0 10.0.12.1AR3上配置回程路由ip route-static 192.168.10.0 255.255.255.0 10.0.23.2很多教程只配到这一步然后说“通了”。但这里强烈建议你验证完后再做一件被我称为“苦难测试”的事故意删掉AR2上的回程路由然后PC1去ping PC2观察现象。你会发现PC1永远等不到回应但这种状态并不是完全断开——在AR2上做抓包仍然是能看到数据包进来的。这才是理解回程路由最好的实验方式。3.3 第三阶段验证路由表与全网连通性配置完之后在三台设备上分别执行display ip routing-table。重点检查关键条目是否出现在正确设备上AR1上必须有192.168.20.0/24的静态路由下一跳是10.0.12.2。AR2上必须同时有192.168.20.0/24和192.168.10.0/24两条静态路由分别指向AR3和AR1。AR3上必须有192.168.10.0/24的静态路由下一跳是10.0.23.2。然后在PC1的命令行里输入ping 192.168.20.20通了就代表全链路转发正常。如果没通不要慌下一步就是排查环节。这个阶段有一个值得养成的习惯用tracert 192.168.20.20看看路径。ensp里PC跟windows命令一致输出会显示数据包经过的几个跳点。正常情况下第一跳是192.168.10.1第二跳是10.0.12.2第三跳是10.0.23.3最终到192.168.20.20。tracert能一眼看出数据包卡在哪个节点是排查多跳网络问题最直观的工具之一。3.4 静态路由的删除与修改操作命令行配置久了偶尔需要改路由或删路由华为ensp里常用的命令如下。删除一条静态路由system-view undo ip route-static 192.168.20.0 255.255.255.0 10.0.12.2修改的话华为的机制是“先删后加”。比如想把AR1这条的路由下一跳改成10.0.12.2改成10.0.23.2实验里不推荐这么改因为下一跳不在同网段不合法但要真实改的话需要先undo删掉旧条目再重新ip route-static添加新条目。如果直接敲相同目标网段的新静态路由配置时会提示是否覆盖但稳妥起见还是先删后加避免出现两条相同网段的条目互相干扰。顺带提一下华为设备上display current-configuration里能看到所有配置过的静态路由条目排查配置是否生效时很有用。3.5 静态路由的优先级与备份路由华为静态路由默认优先级是60如果环境里同时配了OSPF、直连路由路由器会按优先级选路直连路由优先级0静态路由60OSPF内部路由10。这里不需要死记知道一点就够了——静态路由的优先级数值越小越优先。如果后续需要做静态路由的备份链路可以利用优先级数值ip route-static 192.168.20.0 255.255.255.0 10.0.12.2 preference 60 ip route-static 192.168.20.0 255.255.255.0 10.0.23.3 preference 80这样配置的话正常情况下第一条主路由生效当第一条链路故障不可达时路由器会自动切换到备用的那条。这就是浮动静态路由的基本原理也是企业网络里做链路冗余最常用的手段之一。ensp实验里建议自己把优先级改成主备两条路由试试观察路由表里哪一条会被选进活跃路由等主链路接口down掉后再看备用路由是否被激活——这个现象只有亲眼看一遍才记得住。4. 常见问题与排查技巧实录博客标题下的热词搜索里“华为ensp静态路由综合实验”被搜得最多说明大家都在做这个实验的时候碰到问题。我把自己在这个实验中实际遇到过、以及帮别人排过的典型故障全部整理在下面这些问题都是真实会发生的不是编出来的。我按故障现象分类方便你对照排查。4.1 PC ping不通对端PC但直连链路全部正常这个现象是问题出现频率最高的检查所有接口直连都通也都配了IP但PC之间就是不通信。排查思路是“逐跳缩小范围”不要一上来就在PC上疯狂ping那样除了刷屏没有意义。我的做法是先缩小到哪一跳断了在AR1上ping 192.168.20.1如果不通说明AR1的静态路由或AR2/AR3的配置有问题。在AR2上ping 192.168.20.1如果不通问题在AR2或AR3这一段。在AR3上ping 192.168.20.1如果通说明AR3直连没问题。这样一步步缩小之后再针对出问题的节点查看路由表。比较常见的坑是AR2上漏配了回程路由或者是AR1上静态路由的下一跳写错成AR2的G0/0/2地址——也就是下一跳写成了10.0.23.2但AR1根本没有接口在10.0.23.0/24网段静态路由直接失效数据包哪里都去不了。4.2 路由表里有静态路由条目但数据包不转发这个现象最迷惑display ip routing-table里明明能看到静态路由条目但数据包就是不通。排查这个问题的重点是要区分“有路由”和“路由可用”是两码事。华为设备里如果静态路由指定的下一跳不可达路由条目不会出现在核心路由表里。你在配置里写了但display current-configuration能看到display ip routing-table里却看不到多半就是下一跳地址不在当前设备的直连网段里或者下一跳接口处于down状态。如果路由条目确实在路由表里但数据包还是不转发那就要看接口状态了。华为ensp里经常出现接口协议up但物理up的现象或者反过来。看接口状态用display ip interface brief如果接口状态是down那无论路由表多正确数据包也出不去。4.3 PC的命令行ping不通但tracert显示已经到最后一跳这个现象特别有意思我第一次遇到时也卡了很久。PC1上tracert 192.168.20.20显示到了第三跳192.168.20.1之后就没有下文了但PC1 ping 192.168.20.20一直超时。后来发现是PC2的网关没有配置或者配错了。PC2的网关必须指向AR3的G0/0/0地址192.168.20.1。如果PC2配的是192.168.20.254这类不存在的地址它收到数据包后不知道谁能帮它转发回192.168.10.10就会把回包丢弃。这个问题在ensp里特别隐蔽因为PC的图形界面里网关一栏经常被忽略很多教程也默认你配了。所以排查最后一段时永远不要忘记检查终端的网关配置。网络通了往往是“链路每个节点都没问题唯独端侧网关配错”。4.4 大流量业务下偶尔丢包时长时通这个是进阶一点的问题。我在一次模拟企业分支互联的业务时PC之间做长ping测试发现丢包率很高但静态路由的配置完全正确。排查到最后才发现是ensp自身的资源调度问题——多台设备同时运行CPU占用过高模拟器本身丢包。这个问题的经验是ensp里的实验环境设备数量不要太贪尤其是开了多个路由器时性能影响特别明显。如果出现时长时通但所有配置都正确的情况先把不用的窗口关掉等ensp的CPU占用降下来再测。另外别忘了把设备上的“hello报文”之类不相关的功能关掉减少模拟器负担。4.5 静态路由配置了但dis ip routing-table里看不到常见原因有三类分别对照排查下一跳不在直连网段里。比如在AR1上写下一跳10.0.23.2但AR1没有接口在10.0.23.0/24这个网段。这种情况静态路由配置不生效。下一跳对应的接口shutdown了。接口没开下一跳不可达路由不会加表。配置命令没有保存。ensp里配置完忘记save重启后全部失效。很多新手做了半天实验重启全没了欲哭无泪。4.6 回程路由实验的“单向通”现象速查表为了以后排查方便我把单向通的典型原因整理成一张速查表直接保存下来能用很久现象可能原因排查方法从PC1 ping PC2超时但PC2 ping PC1能通AR2或AR3上缺192.168.10.0/24的回程路由在AR3和AR2上查看路由表从PC1 ping PC2能通但从PC2 ping PC1超时AR1或AR2上缺192.168.20.0/24的去程路由在AR1和AR2上查看路由表两边都超时但tracert能到第二跳第三跳的网关或接口配置错误检查AR3接口和PC2网关两边都超时tracert只到第一跳AR1的静态路由下一跳不可达或接口down检查AR1路由表和G0/0/1接口5. 负载均衡与扩展玩法实验做到这一步全链路已经通了。但如果只停留在“能通就行”这个实验的价值你只拿到了一半。强烈建议把下面这两个扩展方案也做一遍才算真正把静态路由玩明白了。5.1 等价路由负载均衡在AR1上如果存在两条下一跳不同的路径都能到达192.168.20.0/24比如实际拓扑里AR1和AR3中间还并联了一台路由器那么AR1上可以配两条等价静态路由ip route-static 192.168.20.0 255.255.255.0 10.0.12.2 ip route-static 192.168.20.0 255.255.255.0 10.0.23.2华为设备默认支持等价路由负载分担会在两条链路上轮流转发数据包。查看路由表时下一跳不只显示一个地址而是一组。这个实验对理解多路径选路非常有帮助也是后续学习策略路由、负载均衡的基础。5.2 默认路由的配置某些场景下比如出口路由器你不需要精确告诉路由器“这个网段怎么去那个网段怎么去”只需要告诉它“所有不知道去哪的数据包统一交给上游某一台设备处理”。这就是默认路由ip route-static 0.0.0.0 0.0.0.0 10.0.12.2注意掩码是0.0.0.0代表匹配所有网段。默认路由的优先级最低只有当前设备路由表里没有更精确的条目时才会被使用。在ensp里把AR3的静态路由临时改成默认路由再用display ip routing-table观察你会发现多了个“S*”条目那个星号就是默认路由的标志。6. 写在最后这个实验最有价值的地方如果在ensp里把这个实验完整做完了最关键的收获不是敲熟了几条命令而是真正理解了“数据包来回是怎么跳的”。很多人学网络喜欢死记命令配完能通就说会了但把一个接口down掉加一条多余的路由或者故意制造一个环路立刻才发现自己并没有真正理解转发逻辑。做这个实验的时候我个人的建议是把前面提到的那些坑全部亲手创造一遍再亲手解决一遍。缺回程路由时的超时、下一跳写错导致的路由失效、tracert卡在中间节点时的分析思路……每一个坑都用真实操作去撞一遍比单纯背下一百条理论都管用。这个实验还可以继续往下扩展把三台路由器改成四台、五台将静态路由和默认路由结合起来用浮动路由做冗余链路甚至把OSPF区域加进来一起跑。但无论怎么扩展底层的东西没变——数据包每经过一个节点就会查一次路由表决定往哪转发。把这个逻辑刻在脑子里后面学任何路由协议都不再是背命令。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门