ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

静态路由配置与排错:eNSP实验详解回程路由

静态路由配置与排错:eNSP实验详解回程路由 前阵子帮一个朋友调办公网拓扑特别简单两台路由器一边一个网段中间一根网线连着。结果 PC 互访就是不通他在两台设备上反复重启接口最后甚至把设备都恢复出厂了。我过去一看路由表里就缺一条网段路由还是“去程配了、回程没配”的老问题。静态路由就是这么个东西命令短到一句话但背后牵扯的转发逻辑、双向路由、排错思路够琢磨好一阵子。这篇文章就围绕最典型的 eNSP 静态路由实验展开把为什么要配静态路由、回程路由到底怎么回事、命令怎么写、ping 不通怎么一步步查、以及出了问题怎么删除和调整一次说清楚。适合正在备考网络工程师、刚开始学数通或者在公司网络组被分到一台三层设备却不知道怎么下路由的同学参考。看完你至少能独立完成一个双路由器互联实验并且能把“有去有回”这件事讲明白。1. 静态路由到底解决什么问题1.1 一台路由器只知道直连网段路由器不是天生就知道全网拓扑的。它启动后路由表里只有自己接口配置过 IP 的那些网段这些叫直连路由。比如实验环境里AR1 接口有 192.168.10.1/24它就只知道 192.168.10.0/24 这个网段怎么走AR2 只知道 192.168.30.0/24。当 PC1192.168.10.10要访问 PC2192.168.30.10时数据包先到 AR1AR1 查路由表发现目的地址 192.168.30.10 不在任何直连网段里又没有其他路由条目于是直接丢弃并回一个 ICMP 网络不可达。静态路由干的事就是管理员手动告诉路由器“如果你要去 192.168.30.0/24把包交给 192.168.20.2让下一个设备接着处理。”路由器不关心最终目标离自己有多远它只关心当前这一步要把包交给谁。这个过程叫逐跳转发每一跳路由器都只做同样一件事查表、找下一跳、送出去。1.2 为什么不用动态路由协议有人会问既然有 OSPF、BGP 这些动态路由协议能自动学习、自动收敛为什么还要手动配静态路由道理很简单静态路由在特定场景下比动态路由更合适。没有协议报文开销不占用链路带宽也不会因为协议震荡导致路由反复变化。行为完全可控路由怎么走是管理员说了算不会出现“明明想走 A 链路协议却选了 B”的情况。排障直观路由表里一条一条写死的条目出了问题一眼就能看出来。在小型网络、固定链路、出口指向运营商的场景静态路由比动态协议更稳定也更容易维护。动态路由像手机导航实时更新路线静态路由像路边固定路牌。导航会因堵车改道但路牌永远指向同一个方向。实验环境里设备少、链路固定用静态路由能把最核心的转发原理看清楚。学习阶段先把静态路由吃透后面再学动态路由会轻松很多因为很多概念是相通的。1.3 路由表里的几个关键字段配置之前先看懂路由表。在华为设备上执行display ip routing-table会看到类似下面这样的条目字段含义实验中的示例Destination/Mask目的网段和掩码192.168.30.0/24Proto路由来源Static静态、Direct直连Pre优先级静态默认 60直连 0Cost度量值静态默认 0NextHop下一跳地址192.168.20.2Interface出接口GigabitEthernet0/0/1路由器转发报文时会拿报文的目的 IP 去匹配路由表匹配规则是最长掩码优先。比如同时有 192.168.30.0/24 和 192.168.30.0/16 两条路由去往 192.168.30.10 的报文会优先匹配 /24 这条因为掩码更长代表更精确。这个细节在排错时经常用到后面会提到。2. 实验环境与基础配置2.1 拓扑规划与地址分配实验用华为 eNSP 模拟器做设备选型用 AR2220 路由器终端用普通 PC。拓扑是经典的三段式PC1 接 AR1AR1 接 AR2AR2 接 PC2。具体规划如下设备接口IP 地址作用PC1网卡192.168.10.10/24网关 192.168.10.1模拟终端 AAR1GigabitEthernet0/0/0192.168.10.1/24PC1 所在网段网关AR1GigabitEthernet0/0/1192.168.20.1/30与 AR2 互联AR2GigabitEthernet0/0/0192.168.20.2/30与 AR1 互联AR2GigabitEthernet0/0/1192.168.30.1/24PC2 所在网段网关PC2网卡192.168.30.10/24网关 192.168.30.1模拟终端 B互联网段用 192.168.20.0/30这个细节值得解释一下。/30 掩码只有两个可用地址正好满足点对点链路两台设备各占一个不会浪费地址。如果写成 /24这个网段里会多出 250 多个永远用不到的地址在企业网地址规划里是不专业的做法。2.2 接口 IP 配置完整过程打开 eNSP拖入两台 AR2220 和两台 PC按规划连线。启动设备后先给接口配 IP。AR1 的配置如下system-view sysname AR1 interface GigabitEthernet0/0/0 ip address 192.168.10.1 24 quit interface GigabitEthernet0/0/1 ip address 192.168.20.1 30 quitAR2 的配置如下system-view sysname AR2 interface GigabitEthernet0/0/0 ip address 192.168.20.2 30 quit interface GigabitEthernet0/0/1 ip address 192.168.30.1 24 quit注意华为设备接口视图下配 IP 时掩码可以直接写长度比如24表示 255.255.255.030表示 255.255.255.252。PC 端配置也不难在 eNSP 的 PC 图标上双击打开 IP 配置页把规划好的 IP 和网关填进去。很多人会漏掉网关这一项或者把网关填成别的设备的地址这是第一个隐蔽的坑。配完接口后分别在两台路由器上执行display ip routing-table此时应该能看到各自的两条直连路由。AR1 上应该有 192.168.10.0/24 和 192.168.20.0/30 两条AR2 上应该有 192.168.20.0/30 和 192.168.30.0/24 两条。如果直连路由都没出来先检查接口是否 up再检查 IP 是否配对不要急着配静态路由基础没打牢后面全是问题。3. 核心配置静态路由与回程路由问题3.1 标准配置命令和写法直连路由就绪后开始配置静态路由。在 AR1 上目标是让去往 PC2 所在网段的数据包能送出去所以写下ip route-static 192.168.30.0 24 192.168.20.2命令结构拆开看ip route-static是命令动词192.168.30.0是目的网段24是掩码长度192.168.20.2是下一跳地址。含义就是去 192.168.30.0/24 这个网段的报文都交给 192.168.20.2。这里有个初学者最容易迷惑的点下一跳为什么写 192.168.20.2而不是写 AR1 自己的接口地址 192.168.20.1因为路由条目的下一跳字段表达的是“我这个设备下一步把包交给谁”。AR1 把包从互联接口送出去接收方是 AR2 的接口所以下一跳必须是 AR2 那个接口的 IP。如果写成自己的接口地址路由器会认为下一跳就是自己形成一个逻辑上的循环报文到了又不知道该往哪送。这个细节我在给新人讲课时强调过无数遍但每次实验都有人写错。配置完执行display ip route-static查看静态路由表能看到一条 Proto 为 Static 的条目优先级 Pre 是 60下一跳是 192.168.20.2出接口是 GigabitEthernet0/0/1。3.2 回程路由有去无回的罪魁祸首现在从 PC1 ping PC2你会发现仍然不通。很多人到这里就卡住了明明路由配了为什么还是不通答案在回程。PC1 ping PC2 的 ICMP 请求报文是这样走的PC1 - AR1 - AR2 - PC2。但 PC2 收到请求后要回一个 ICMP 应答报文这个报文的源地址是 192.168.30.10目的地址是 192.168.10.10。报文到了 AR2AR2 查路由表发现自己只有直连的 192.168.20.0/30 和 192.168.30.0/24根本不知道 192.168.10.0/24 怎么走于是直接丢弃。也就是说单方向的路由只解决了“去”的问题“回”的问题没有解决。很多教程会把这一步叫做“配置回程路由”。需要说清楚的是回程路由并不是一种独立的路由类型它只是站在通信链路“返回方向”的视角对某个设备提出的路由需求。这个需求可以用静态路由满足也可以用直连路由或动态路由满足。静态路由实验里常见的误区是只配了一条出去的路由忘了对端设备还需要一条回来的路由。解决办法是在 AR2 上补充ip route-static 192.168.10.0 24 192.168.20.1这两条路由方向相反恰好构成完整的数据通道。配完之后再从 PC1 ping PC2应该就能通了。检验连通性之后可以在 PC1 上执行tracert 192.168.30.10能看到路径逐跳经过 192.168.10.1 和 192.168.20.2再到达 192.168.30.10这个输出可以直观地验证逐跳转发过程。3.3 默认路由和多网段场景如果 AR2 的另一个方向连接的是公网或者上级网络通常还会配一条默认路由ip route-static 0.0.0.0 0 192.168.20.10.0.0.0 0表示匹配所有目的地址优先级最低。只有当路由表里没有任何更精确的条目时报文才会走默认路由。默认路由在出口设备上非常常见相当于“实在不知道往哪走就扔给上级网关”。如果实验拓扑扩展成三台路由器、多个网段思路是一样的每台设备都只关心非直连网段该往哪个下一跳送。可以逐个网段写多条静态路由也可以对连续网段做汇总比如把 192.168.0.0/16 写成一条路由只要这些网段都经由同一个下一跳可达。汇总能减少路由表条目但前提是地址规划要连续否则会配出一个包含错误地址的大网段这也是企业网地址规划必须留意的原因。4. 连通性排查与排错思路4.1 从下到上逐段定位问题实验中最常见的场景就是“明明照着教程配了ping 还是不通”。我的建议是别在 PC 上盲目敲 ping按下面的顺序逐段排查。先确认 PC 到网关是否通。在 PC1 上ping 192.168.10.1如果不通问题在 PC 的 IP 配置或网线连接跟路由无关。网关通了之后再验证两端路由器之间的互联链路。在 AR1 上ping 192.168.20.2如果不通检查互联接口 IP 和端口状态。互联通了之后再验证对端路由器到目标网段的链路。在 AR2 上ping 192.168.30.1或直接ping 192.168.30.10。如果以上都通但 PC1 ping PC2 仍然失败十有八九是回程路由缺失。此时分别查看 AR1 和 AR2 的完整路由表重点确认 AR2 上有没有 192.168.10.0/24 的条目AR1 上有没有 192.168.30.0/24 的条目。两端都齐了还是不通再往下查 ARP 和抓包。4.2 路由表有条目却 ping 不通的深层原因路由表里明明有两条静态路由也配了回程但就是不通信这种情况我遇到过不少次原因通常集中在四个方面。第一下一跳不可达。比如 AR1 上配的是ip route-static 192.168.30.0 24 192.168.20.2但 AR1 上根本没有 192.168.20.0/30 这个直连网段或者互联接口 down 了。此时路由条目虽然存在但实际不可用。执行display ip routing-table看这个条目后面的 Interface 字段如果接口是 down 状态路由不会生效。第二掩码配错导致没有精确匹配。比如 AR1 上把目的网段写成192.168.30.0 16去往 192.168.30.10 的报文确实能匹配到这条路由但这条路由同时也覆盖了 192.168.0.0/16 整个大段如果下一跳指向错误报文就全走偏了。排查时看到路由的掩码和规划不一致直接改掉。第三PC 的网关配置有问题。网关填错、没填、或者填了对端 PC 的 IP都会导致数据包根本无法到达路由器。很多人会在这种情况下反复清 ARP 缓存其实先看 PC 的网关最省时间。第四ARP 表项异常。在路由器上执行display arp查看对应接口的 ARP 表确认对端 MAC 是否正确学习。如果 MAC 地址一直在变或者学不到可能是接口下接了多台设备或者存在地址冲突。实验环境里这种问题不多但实战中很常见尤其是用手工配置 IP 的办公网。4.3 用带源地址的 ping 验证多接口设备还有一个很容易被忽略的细节在路由器上 ping 的时候默认源地址有时不是你期望的那个接口。比如 AR2 上执行ping 192.168.10.10系统可能选择管理口或者其他接口作为源地址导致报文在 AR2 上查表时就找不到返回路由。更严谨的做法是手动指定源地址ping -a 192.168.20.2 192.168.10.10-a参数指定源 IP 为互联接口地址这样才能模拟从 AR2 回包给 PC1 的真实路径。在排回程问题时这个命令比普通 ping 可靠得多。真实设备排障也一样多接口设备上不带源地址的 ping 结果经常有误导性。5. 路由的删除与调整5.1 eNSP 和华为设备上的删除命令静态路由的删除在华为设备上用undo命令。比如要删除 AR1 上那条去 192.168.30.0/24 的静态路由undo ip route-static 192.168.30.0 24 192.168.20.2注意undo后面跟的参数必须和配置时完全一致目的网段、掩码、下一跳都不能少。如果只写undo ip route-static 192.168.30.0 24设备可能提示需要更多参数因为这一条目的地存在多个下一跳时设备不知道该删哪条。删除后立刻执行display ip routing-table确认条目已经消失。此时再去 ping PC2就会回到最初的“网络不可达”状态。这个验证动作很重要它证明了你删掉的就是真正影响通信的那条路由。华为设备上还有一个命令reset ip route-static用于清除全部静态路由。这个命令在实验环境里可以用但生产环境千万别随手敲。它会连默认路由、所有管理用的静态路由一起清掉可能导致整个网络出口瘫痪。我见过有人把reset和undo弄混在核心设备上敲了清除命令结果全网路由表大扫除恢复了一下午。5.2 修改路由时的风险控制实际运维中改静态路由多半是调整下一跳比如新增了一条链路要把流量切到新设备上。正确做法是先在路由器上写新路由确认生效后再删旧路由整个过程流量不会中断。反过来先删后加中间会有一段路由空窗期业务直接受影响。静态路由默认优先级是 60。如果同一条目的网段配置了两条不同下一跳的静态路由优先级高的会进入路由表成为活跃路由其余作为备份。可以把主链路路由保持默认优先级备链路路由设置更高的优先级数字比如preference 80当主链路故障时备份路由自动顶上。这就是浮动路由的用法在实验里可以这样验证配置两条静态路由到同一目的网段把备用路由的优先级调高然后关掉主链路接口观察路由表切换。需要注意的是普通静态路由在下一跳所在链路变成 down 时才会失效。如果中间隔着一台三层交换机主链路交换机和路由器之间的接口还 up但远端已经不可达静态路由不会自动切换必须靠 BFD 或 NQA 联动才能实现快速感知。这是进阶内容实验环境里先知道有这个坑就行。5.3 顺带聊聊 Windows 和 Linux 上的路由删除“route 删除静态路由”这个操作在 PC 上也很常见尤其是测试网络时手动加过临时路由。Windows 下删除路由的命令是route delete 192.168.30.0 mask 255.255.255.0查看本机路由表用route print -4。Linux 下则是ip route del 192.168.30.0/24 via 192.168.20.2PC 上的静态路由一般用于实现“访问某个网段走指定网关”比如同时接入办公室内网和测试外网时让特定目标网段走测试网关。删除时同样要保证掩码和下一跳信息准确否则命令会报错。这个操作虽然不在路由器上但思路完全一致理解了路由表的本质换设备只是命令语法不同而已。6. 从实验到实战的注意事项6.1 静态路由在企业网络里的典型位置实验里的拓扑虽然简单但静态路由在真实网络里的应用非常广泛。企业出口路由器连接运营商的场景出口设备上通常会有一条默认静态路由指向运营商设备核心交换机到各楼层网关可以写静态路由指向汇聚交换机租用专线互联时对端 IP 固定用静态路由比跑动态协议省事得多。在这些场景里最需要关注的不是命令怎么写而是地址规划。静态路由本质上把网络拓扑关系写死在设备上一旦规划不合理后期维护会非常痛苦。比如一个网段散落在多个交换机上你想汇总却汇总不起来只能写一堆明细路由。相反如果一开始就按连续地址块规划几条汇总路由就搞定了路由表干净排障也快。还有一点要提的是路由黑洞。静态路由是手动指定的如果下一跳配错或者汇总路由覆盖了一个实际不存在的网段但下一跳指向某台设备报文就会发出去然后被丢弃表现为“路由表有路由但业务不通”。排查时看到这类可疑条目先验证下一跳设备是否真的有对应的路由能力再做调整。6.2 我在实际操作中养成的几个习惯第一个习惯是给静态路由写描述。华为设备支持在静态路由后面加description比如ip route-static 192.168.30.0 24 192.168.20.2 description To-PC2-Network路由条目多的时候没有描述根本想不起来这条是干嘛的。尤其是工作时间长了看当年的配置有描述和没描述完全是两种体验。第二个习惯是变更前一定先备份。华为设备上执行display current-configuration | include ip route-static把当前所有静态路由先看一眼、记录好再动手改。如果改完发现业务异常可以快速恢复到原状。不要依赖记忆线上设备配置几十上百条路由一旦记错恢复过程会非常混乱。第三个习惯是每做完一个调整就验证一次而不是全部改完再统一验证。一步一步改、一步一步测出问题能立刻定位到是哪一步引入的。这个习惯在排障时能节省大量时间尤其是在核心设备上操作时谨慎永远不过分。第四个习惯是验证回程路由时不只在本端看路由表还要在对端设备上确认。数据通信讲究有去有回只看一个方向永远无法保证业务可用。6.3 实验环境里值得多做的几个练习如果你想把这个实验吃透可以在此基础上做几个进阶练习。第一个把两台路由器换成三台中间那台作为中转手动配置两条方向相反的静态路由体会多跳转发。第二个故意在一台设备上删掉回程路由然后通过抓包观察 ICMP 请求到了对端却没有应答的现象加深对“有去无回”的理解。第三个在 PC 上手动加一条指向错误网关的路由观察它对正常通信的影响练习从现象倒推原因。这些练习不需要额外设备一台 eNSP 就能完成。真正有价值的不是敲命令的速度而是排查问题的思路。做实验的时候我建议每做完一个环节就问自己一个问题如果这里配错了报文会卡在哪一跳带着这个思路去配路由、去排错比单纯背命令有效得多。说句实话静态路由的配置命令我闭着眼都能敲出来但每次带新人做这个实验我都会反复强调三件事先画清楚网段再写清楚下一跳最后一定记得双向配置。如果你正在学 eNSP建议把这个实验做三遍第一遍照着配置敲一遍第二遍不看任何笔记自己独立配通第三遍故意给自己制造故障再排出来。能把错误自己排查出来比配通十次都管用。最后再分享一个我自己的习惯任何路由配置改之前一定要备份改之后一定要验证。这个习惯救过我很多次也推荐你从第一次实验开始就养成。
返回列表