文章目录
-
- 第一部分:路由的基石------路由表是如何工作的?
-
- [1. 什么是路由?](#1. 什么是路由?)
- [2. 无类域间路由 (CIDR)](#2. 无类域间路由 (CIDR))
- [3. 路由信息来源(路由从哪里来?)](#3. 路由信息来源(路由从哪里来?))
- [4. 路由优先级 (Administrative Distance)](#4. 路由优先级 (Administrative Distance))
- [5. 路由畅通的条件(选路与激活)](#5. 路由畅通的条件(选路与激活))
- 第二部分:静态路由配置与应用
-
- [1. 配置静态路由示例](#1. 配置静态路由示例)
- [1.1 专家级辨析:下一跳的三种写法](#1.1 专家级辨析:下一跳的三种写法)
- [2. 默认路由 (Default Route)](#2. 默认路由 (Default Route))
- [3. 浮动静态路由 (Floating Static Route)](#3. 浮动静态路由 (Floating Static Route))
- [3.1 进阶:与NQA/BFD联动的智能浮动路由 (Track)](#3.1 进阶:与NQA/BFD联动的智能浮动路由 (Track))
- 第三部分:路由汇总与路由表简化
-
- [1. 为什么要精简路由表?](#1. 为什么要精简路由表?)
- [2. 通过路由汇总精简路由表](#2. 通过路由汇总精简路由表)
- [3. 使用默认路由和路由汇总简化路由表](#3. 使用默认路由和路由汇总简化路由表)
- [4. 路由汇总的例外 (钻洞)](#4. 路由汇总的例外 (钻洞))
- 第四部分:路由环路与网络排错
-
- [1. 默认路由造成路由环路](#1. 默认路由造成路由环路)
- [2. 网络排错案例(综合应用)](#2. 网络排错案例(综合应用))
- [3. 专家级排错工具 (FIB & Verbose)](#3. 专家级排错工具 (FIB & Verbose))
第一部分:路由的基石------路由表是如何工作的?
我们首先要解决最根本的问题:路由器到底是什么?它如何思考?
1. 什么是路由?
- 通俗解释:
您可以把路由器想象成一个快递中转站 。当一个包裹(IP数据包)到达时,路由器会查看包裹上的收货地址(目的IP地址) 。然后,它会查询自己手头的一张全国投递地图(路由表) ,找出这个地址应该发往哪个相邻的中转站(下一跳 Next-Hop) 。这个查地图并决定发往下一站的动作 ,就是路由(Routing)。 - 技术解释:
路由(Routing)是路由器根据其本地的路由表(Routing Table) 来决策IP数据包的下一跳(Next-Hop) 并将其转发出去的过程。路由的核心就是决策,而决策的依据就是路由表。 - 重点辨析:路由表 (RIB) vs. 转发信息库 (FIB)
在高性能路由器中,存在两张表:- 路由表 (RIB, Routing Information Base): 这是由路由器CPU维护的大脑 或总地图 。它包含了所有路由来源(直连、静态、动态)学到的所有路由。您使用
display ip routing-table命令查看的就是它。 - 转发信息库 (FIB, Forwarding Information Base): 这是CPU从RIB中挑选出最优 路由后,下发给高速转发芯片的小抄 或快速反应列表 。数据包真正被转发时,芯片查的是FIB,因为FIB查找速度极快(硬件转发)。
总结: RIB负责决策(选出最优路由),FIB负责执行(高速转发)。
- 路由表 (RIB, Routing Information Base): 这是由路由器CPU维护的大脑 或总地图 。它包含了所有路由来源(直连、静态、动态)学到的所有路由。您使用
我们知道了路由器靠路由表工作。那么路由表里的条目(例如 192.168.1.0/24)是如何书写的?要理解现代路由表,我们必须先抛弃陈旧的A/B/C类网络概念,学习它的现代化语言:CIDR。
2. 无类域间路由 (CIDR)
- 为什么淘汰有类路由?
早期的A/B/C类路由(如C类固定为/24)非常死板,导致了IP地址的巨大浪费。例如,一个需要500个地址的公司,申请C类(254个)不够,只能申请B类(65534个),从而浪费了6万多个地址。 - CIDR (Classless Inter-Domain Routing) 如何工作?
CIDR打破了A/B/C类的界限,允许使用任意长度的网络前缀 (如/24,/30,/22)来表示网络范围。192.168.1.0/24表示前24位是网络号 ,后8位是主机号。192.168.1.0/30表示前30位是网络号,后2位是主机号(常用于路由器之间的点对点链接)。192.168.0.0/22表示一个更大的网络范围。
- CIDR是所有现代路由协议的基础,它实现了IP地址的灵活分配和高效的路由汇总。
好了,现在我们知道路由表里的条目是用CIDR(如 192.168.1.0/24)来写的。那么,路由器是如何知道这些条目的?它们从哪里来?
3. 路由信息来源(路由从哪里来?)
路由表里的条目不是凭空出现的,它们主要有三种来源:
- 直连路由 (Direct):
- 如何产生: 当您给路由器的某个接口(如
GigabitEthernet 0/0/0)配置了IP地址(如192.168.1.1 24)并执行undo shutdown激活该接口后,路由器立刻就知道了它屁股底下直接连着192.168.1.0/24这个网段。 - 特征: 这是最可信的路由,优先级最高。
- 如何产生: 当您给路由器的某个接口(如
- 静态路由 (Static):
- 如何产生: 由网络管理员手动配置的路由。
- 命令:
ip route-static 192.168.2.0 24 192.168.1.2 - 含义: 我(管理员)明确地告诉你(路由器),要去
192.168.2.0/24网段,请把包发给192.168.1.2。
- 动态路由 (Dynamic):
- 如何产生: 路由器之间运行相同的路由协议(如 OSPF , BGP),它们像邻居一样互相通告自己知道的路由信息,自动学习并更新路由表。
- 特征: 能自动适应网络变化(如某条链路中断),无需人工干预。
这就带来一个有趣的问题:如果路由器通过直连、静态和OSPF同时 学到了去往同一个网段(如 192.168.1.0/24)的路由,它到底该相信谁?这就引出了路由选路的第一道关卡:路由优先级。
4. 路由优先级 (Administrative Distance)
- 核心问题:
如果一台路由器同时通过直连发现、管理员静态配置和OSPF邻居通告,都学到了去往192.168.1.0/24的路由,它到底该相信谁? - 详细解释:优先级 (Preference) (在其他厂商也叫AD - Administrative Distance)就是用来衡量不同路由来源的可信度 的一个数值。数字越小,代表越可信,优先级越高。
- 华为VRP的默认优先级 (部分):
- Direct (直连): 0 (最可信,毕竟是自己身上的)
- OSPF (动态): 10
- Static (静态): 60 (管理员配的,但不如动态的OSPF可信)
- BGP (动态): 255 (用于iBGP)
- 注意:静态路由的优先级60是可以被管理员手动修改的。
- 结论:
在上述例子中,Direct (0)的优先级最高,路由器会无条件地相信直连路由,而忽略OSPF和Static学来的同一条路由。
我们知道了优先级决定了该信谁。但是,一条路由要最终被路由器使用(放进FIB转发表),光可信还不够,它还必须是最优的,并且是可达的。我们来看看一条路由C位出道的完整选拔流程。
5. 路由畅通的条件(选路与激活)
一条路由要真正生效(即被加载到FIB中指导转发),必须满足两个条件:它必须是最优的 ,并且它是可激活的。
- 选路(如何成为最优路由?):
路由器按照以下严格顺序来挑选最优路由:- 第一原则:最长匹配原则 (Longest Match Rule)
- 含义: 越精确的路由,越优先。
- 举例: 路由表同时有两条路由:
- A:
192.168.1.0/24(匹配192.168.1.x所有地址) - B:
192.168.1.0/25(匹配192.168.1.0到1.127)
- A:
- 当一个去往
192.168.1.10的数据包抵达时,它同时匹配A和B。但B (/25)的网络前缀更长(更具体),因此路由器选择B路由 。display ip routing-table 192.168.1.10会显示匹配了B。
- 第二原则:优先级 (Preference)
- 含义: 当最长匹配相同时(如两条都是去往
192.168.1.0/24的),路由器比较它们的优先级。 - 举例:
- A:
ip route-static 192.168.1.0 24 ...(优先级 60) - B: (通过OSPF学到的)
192.168.1.0/24 ...(优先级 10)
- A:
- 路由器选择优先级数字更小即优先级更高 的 B (OSPF) 路由。
- 含义: 当最长匹配相同时(如两条都是去往
- 第三原则:度量值 (Metric)
- 含义: 当最长匹配和优先级都相同时(例如两条都是OSPF路由),路由器会比较它们的度量值 (Metric 或 Cost) 。在OSPF协议中,它被称为开销(Cost) 。它是路由协议内部 用来衡量一条路径"好坏"的数值。这个数值越小,代表路径越好(开销越低)。Cost是根据链路的带宽 自动计算出来的。带宽越高(如1000M),Cost值越低(越好)。带宽越低(如10M),Cost值越高(越差)。一条路由的总Cost,是数据包沿途经过的所有出接口Cost的总和。
- 举例:
- A: OSPF路由,Metric=20
- B: OSPF路由,Metric=30
- 路由器选择Metric更低的 A路由(路径开销更小)。
- 第一原则:最长匹配原则 (Longest Match Rule)
- 激活 (Active):
- 含义: 一条路由即使最优,也可能无法使用。为什么? 因为它的下一跳地址,路由器自己都不知道怎么去。
- 举例: 你配置了
ip route-static 10.1.1.0 24 172.16.1.1。但是,路由器在自己的路由表里找不到 任何一条可以去往172.16.1.1的路由。 - 结果: 这条静态路由是
Inactive(非激活) 状态,不会被加载到FIB,等于无效。路由器必须能够递归地解析到下一跳地址。
第二部分:静态路由配置与应用
第一部分全是理论,我们搞懂了路由器如何思考。现在,让我们进入实践环节。在三种路由来源中,我们作为管理员最常直接配置的就是静态路由。我们先从最基础的配置开始。
1. 配置静态路由示例
-
场景:
- R1的G0/0/0接口IP:
192.168.1.1/24 - R2的G0/0/0接口IP:
192.168.1.2/24 - R2的G0/0/1接口连接了一个局域网:
192.168.2.0/24 - 目标: R1后的PC (如
192.168.1.10) 要访问 R2 后的服务器 (如192.168.2.10)。
- R1的G0/0/0接口IP:
-
命令 (在R1上配置):
[R1] system-view [R1] ip route-static 192.168.2.0 24 192.168.1.2 -
解释:
ip route-static: 宣告这是一条静态路由。192.168.2.0: 目的网络ID。24: 目的网络子网掩码 (也可以写255.255.255.0)。192.168.1.2: 下一跳地址 (R2的IP)。- 含义: R1,你想去
192.168.2.0/24吗?把数据包扔给192.168.1.2就行了。
-
重点:路由是单向的!
-
此时,
192.168.1.10去ping 192.168.2.10,数据包可以到达服务器(R1知道怎么去)。 -
但是,服务器的回复包 (源
192.168.2.10,目的192.168.1.10)到达R2时,R2不知道192.168.1.0/24网段在哪里!R2会丢弃回复包。 -
结果:
ping超时。 -
解决方案: 必须在R2上配置回程路由:
[R2] ip route-static 192.168.1.0 24 192.168.1.1 -
现在,
ping才有去有回,才能通。
-
上面这个例子 ... 192.168.1.2 看起来很简单,但下一跳的写法是静态路由中一个非常重要且容易出错的细节。
1.1 专家级辨析:下一跳的三种写法
ip route-static 命令的下一跳部分有三种写法,它们有天壤之别:
- 写法一 (推荐):指定 [下一跳IP]
ip route-static 10.1.1.0 24 192.168.1.2- 工作原理: 路由器会查找
192.168.1.2如何到达(递归查找),发现它匹配自己的直连路由192.168.1.0/24 (G0/0/0)。然后将数据包从G0/0/0接口发往192.168.1.2对应的MAC地址。 - 优点: 逻辑清晰,适用所有场景。
- 写法二 (危险):仅指定 [出接口] (以太网环境)
ip route-static 10.1.1.0 24 GigabitEthernet 0/0/0- 适用场景: 仅适用于点对点(P2P) 链路(如PPP或HDLC封装的串口),因为P2P链路只有一个对端,数据包扔出接口就行。
- 巨大风险: 严禁 在以太网(如
G0/0/0)这种广播网络上使用! - 为什么危险? 当路由器这样配置时,它认为
10.1.1.0/24网段就直连在G0/0/0上。当一个包去往10.1.1.5时,路由器会尝试在G0/0/0上发送 ARP 请求 来询问谁是 10.1.1.5?。如果这个网段有100个IP,路由器就会为每个IP都发送ARP请求,这会产生巨大的ARP流量(ARP风暴),并极大消耗CPU性能。
- 写法三 (最佳实践):[出接口] + [下一跳IP]
ip route-static 10.1.1.0 24 GigabitEthernet 0/0/0 192.168.1.2- 工作原理: 这种写法帮助路由器省去了递归查找的步骤。它明确告诉路由器:你要去
10.1.1.0/24,请直接从G0/0/0接口,发给192.168.1.2即可。 - 优点: 效率最高,避免了递归查找,也避免了ARP风暴。这是以太网环境中的最佳实践。
我们学会了配置指向特定网段的路由。但现实中,我们要访问的特定网段太多了,比如整个互联网有上百万条路由。我们不可能一条条配置。这时,我们就需要一种万能的路由,这就是默认路由。
2. 默认路由 (Default Route)
-
概念:
默认路由是一条特殊的静态路由,它的目的网络是
0.0.0.0,掩码是0(即0.0.0.0/0)。0.0.0.0/0是一个通配符,它可以匹配任何IP地址。- 由于它的前缀长度为0,它是最不精确的路由。根据最长匹配原则,它只会在路由器找不到任何其他更精确的路由时,才会被使用。
- 因此,它被称为路由的最后手段 (Route of Last Resort)。
-
命令:
[R1] ip route-static 0.0.0.0 0 202.100.1.1(假设
202.100.1.1是运营商ISP的网关IP) -
应用场景:
- 连接互联网: 互联网上的全球网段(Public IP)有超过100万条路由。企业路由器(出口路由器)不可能(也没必要)学习所有这些路由。
- 使用默认路由指向Internet: 我们在出口路由器上配置一条默认路由,指向ISP网关。当内部PC访问一个公网地址(如
8.8.8.8)时,路由器在路由表中找不到精确匹配,就会自动使用这条默认路由,把包扔给运营商。 - 电脑上的默认路由和网关: 您的Windows电脑
ipconfig看到的默认网关 (如192.168.1.1),其实就是您电脑的路由表里0.0.0.0/0这条默认路由的下一跳地址。
我们现在有了特定路由和默认路由。接下来我们讨论可靠性。如果那条特定的静态路由链路断了怎么办?我们可以利用第一部分学到的路由优先级知识,配置一条备用路由,它平时潜伏着,主路一断就自动浮上来。
3. 浮动静态路由 (Floating Static Route)
-
场景:
公司办理了两条链路:一条高速光纤(主路),一条4G/LTE(备路)。我们希望平时只用光纤,光纤断了,自动切换到4G备路。
-
核心原理:
利用手动修改路由优先级 来实现主备备份。我们知道静态路由默认优先级是
60。我们只需要手动调高备用路由的优先级(数字越大,优先级越低),让它变得更不可信。 -
命令示例 (在R1上):
[R1] system-view # 主路:使用默认优先级 60 [R1] ip route-static 10.1.1.0 24 192.168.1.1 # 备路:手动指定优先级为 100 (100 > 60,所以更差) [R1] ip route-static 10.1.1.0 24 192.168.2.1 preference 100 -
解释:
- 正常情况下,R1的路由表中有两条去往
10.1.1.0/24的路由。 - R1比较优先级:
60vs100。 - R1选择优先级
60(主路)作为最优路由加载到FIB中。preference 100的路由处于非激活状态(Inactive),在display ip routing-table中可见,但在FIB中不可用。 - 故障发生: 当主路的下一跳
192.168.1.1不可达时(例如链路断开),主路路由变为Inactive。 - R1重新选路,发现唯一可用的路由只剩下那条优先级为
100的备路。 - 备路自动浮动 上来,成为
Active状态,流量切换到备用链路,实现自动备份。
- 正常情况下,R1的路由表中有两条去往
这种被动的浮动路由有一个致命缺陷:如果主链路(R1-R2)没断,而是R2背后的链路断了,R1的路由是不会切换的,流量会掉进黑洞。因此,我们需要一种更智能的、能主动探测的浮动路由。
3.1 进阶:与NQA/BFD联动的智能浮动路由 (Track)
-
被动切换的缺陷:
上一节的浮动路由是被动的。它依赖于下一跳路由不可达或接口
Down才能触发切换。
问题: 如果R1和主路网关192.168.1.1之间的链路是通的,但192.168.1.1这台设备死机了,或者它 背后的链路断了呢?R1的接口依然是Up的,下一跳也还在,路由不会切换,但流量实际已经出不去了(路由黑洞)。 -
主动探测与Track联动:
我们可以使用
NQA(网络质量分析) 或BFD(双向转发检测) 来主动探测 链路质量,并让路由跟踪 (track) 探测结果。 -
配置思路 (以NQA为例):
- 配置NQA: 在R1上配置一个NQA测试例,让它持续地
ping主路的关键IP(如192.168.1.1)。 - 配置Track: 创建一个
Track条目,让它跟踪 NQA测试例的成功/失败状态。 - 配置路由联动: 在配置主路静态路由时,将其与
Track条目绑定。
- 配置NQA: 在R1上配置一个NQA测试例,让它持续地
-
命令示例 (在R1上):
[R1] system-view # 1. 配置NQA (主动去ping主路网关) [R1] nqa test-instance admin icmp [R1-nqa-admin-icmp] test-type icmp [R1-nqa-admin-icmp] destination-address 192.168.1.1 [R1-nqa-admin-icmp] frequency 5 (每5秒ping一次) [R1-nqa-admin-icmp] start now # 2. 配置Track,跟踪NQA的状态 [R1] track 1 nqa test-instance admin icmp # 3. 配置路由,绑定Track # 主路:绑定 track 1。只有track 1为 "Up" (ping通) 时,此路由才生效 [R1] ip route-static 10.1.1.0 24 192.168.1.1 track 1 # 备路:配置浮动优先级 [R1] ip route-static 10.1.1.0 24 192.168.2.1 preference 100 -
解释:
- 只要R1能
ping通192.168.1.1,track 1就为Up状态,主路由(优先级60)生效。 - 一旦R1连续几次
ping不通192.168.1.1(无论是因为链路问题还是对端死机),track 1状态变为Down。 - 主路由立刻 变为
Inactive(非激活),备路(优先级100)自动浮动上来,实现智能、主动的故障切换。
- 只要R1能
第三部分:路由汇总与路由表简化
至此,我们学会了如何精细化地管理路由(特定、默认、主备)。但当网络规模变大,路由表里有成百上千条路由时,精细化就变成了繁琐。这时,我们需要反向思考:如何粗放化地管理路由,提高效率?这就是路由汇总。
1. 为什么要精简路由表?
- 性能压力: 路由表越大(几十万条),路由器CPU的计算压力越大,内存占用也越高。
- 查找效率: 表越小,查找速度越快,转发延迟越低。
- 网络稳定性: 假设你有100个小网段。如果一个小网段(如
192.168.1.0/24)抖动(flapping,即链路频繁断开和恢复),这个坏消息会被通告给所有相关路由器,导致全网路由表震荡。但如果你把这100个网段汇总成1条路由,只要这条汇总路由是稳定的,内部的小抖动就不会扩散出去。
既然汇总这么重要,我们该如何计算汇总范围?
2. 通过路由汇总精简路由表
-
计算示例:
假设一个路由器连接了四个连续的C类网段:
192.168.0.0/24192.168.1.0/24192.168.2.0/24192.168.3.0/24
-
详细推导(如何汇总为
192.168.0.0/22):- 将它们写成二进制,观察第三个八位字节(Octet):
192.168.0.0->... .00000000. ...192.168.1.0->... .00000001. ...192.168.2.0->... .00000010. ...192.168.3.0->... .00000011. ...
- 找到它们共同不变 的前缀。很明显,第三个八位字节的前6位(
000000)是共同的,最后2位(00,01,10,11)在变化。 - 共同不变的位数 = 8 (第一字节) + 8 (第二字节) + 6 (第三字节) = 22 位。
- 汇总路由的地址取最小的那个,即
192.168.0.0。 - 结果:
192.168.0.0/22。
- 将它们写成二进制,观察第三个八位字节(Octet):
-
命令:
现在,下游路由器不再需要4条路由,只需要1条汇总路由:
[R-Downstream] ip route-static 192.168.0.0 22 [Next-Hop]
我们来将汇总和默认路由这两个简化技巧结合起来,看看它们在真实场景中(如分支机构)如何发挥威力。
3. 使用默认路由和路由汇总简化路由表
-
场景:
一个分支机构Branch通过路由器连接到总部HQ。HQ内部有100个不同的网段。
-
差的方案:
在Branch路由器上,手动配置100条静态路由,全部指向HQ的网关。
ip route-static 10.1.1.0 24 [HQ_IP]ip route-static 10.1.2.0 24 [HQ_IP]- ... (共100条)
- 缺点: 配置繁琐,维护地狱。
-
好的方案:
在HQ的边界路由器上,将这100个内部网段(如果它们地址连续)汇总成几条(例如3条)汇总路由。Branch路由器只需要配置这3条汇总静态路由即可。
-
更好的方案(适用于末梢网络):
分支机构通常是一个末梢网络 (Stub Network),它除了HQ之外没有别的出口。那么,它根本不需要知道HQ内部的100个网段。
在Branch路由器上只配置一条默认路由,指向HQ即可:
[RBranch] ip route-static 0.0.0.0 0 [HQ_IP]效果: 任何去往HQ内部网段(如
10.1.1.x)的包,在Branch上都匹配不到精确路由,于是自动匹配默认路由,发往HQ。问题解决。
汇总虽好,但它是一把双刃剑。如果你汇总得太猛,把不该汇总的也汇总进去了怎么办?比如,汇总路由都指向R1,但其中一小部分流量本该指向R2。这时,我们就需要利用最长匹配原则来钻洞。
4. 路由汇总的例外 (钻洞)
-
场景:
承接第2点,我们配置了一条汇总路由
ip route-static 192.168.0.0/22 10.1.1.1,它指向R1。
例外: 但现在,192.168.3.0/24这个网段(它包含在/22汇总内)必须 指向R2 (10.1.1.2)。 -
配置:
[R-Source] ip route-static 192.168.0.0 22 10.1.1.1 (汇总路由) [R-Source] ip route-static 192.168.3.0 24 10.1.1.2 (例外路由,也叫钻洞) -
解释:
这利用了最长匹配原则:
- 当一个包去往
192.168.2.10时,它只匹配/22路由,于是发给R1。 - 当一个包去往
192.168.3.10时,它同时匹配/22和/24两条路由。 - 由于
/24(24位匹配) 比/22(22位匹配) 更长、更精确 ,路由器会优先选择/24这条路由,将包发给R2。这就实现了在汇总中打个洞的效果。
- 当一个包去往
第四部分:路由环路与网络排错
我们已经学习了如何构建、备份和优化路由表。现在是时候面对残酷的现实了:当网络出现故障时,我们该怎么办?我们先从最危险、最经典的故障------路由环路开始。
1. 默认路由造成路由环路
-
经典场景(致命错误):
- R1:
ip route-static 0.0.0.0 0 [R2的IP] - R2:
ip route-static 0.0.0.0 0 [R1的IP] - 原因: 两位管理员(或一位糊涂的管理员)互相将对方设置为默认网关。
- R1:
-
后果:
- 一个目的地址未知的包(如
8.8.8.8)到达R1。 - R1匹配默认路由,将包发给R2。
- R2也不认识
8.8.8.8,它匹配自己的默认路由,将包发回给R1。 - R1收到,又发给R2...
- 数据包在R1和R2之间无限循环,网络带宽被瞬间占满,直到包的 TTL(Time-To-Live) 值耗尽(每过一跳减1),路由器才会将其丢弃。
- 一个目的地址未知的包(如
-
排查 (如何发现):
使用
tracert(Windows) 或tracert -a [IP](VRP) 命令。你会看到数据包在两个IP之间反复跳动:Tracing route to 8.8.8.8 1 192.168.1.1 (R1) 2 192.168.1.2 (R2) 3 192.168.1.1 (R1) 4 192.168.1.2 (R2) ... 30 Request timed out.这就是典型的路由环路。
路由环路是一种很壮观的故障。但更多时候,故障是安静的------就是不通。下面,我们将利用前面学到的所有知识,进行一次系统化的排错。
2. 网络排错案例(综合应用)
- 案例: 某PC(
192.168.1.100/24)无法访问某服务器(10.1.2.200/24)。 - 排错思路 (基于本教程知识的系统化步骤):
- 查PC (查自己):
- 在PC上
ipconfig(或ifconfig)。 - 检查IP (
192.168.1.100)、掩码 (/24)、默认网关 (应为192.168.1.1,假设是R1) 是否正确配置? - 测试:
ping 192.168.1.1(ping自己的网关)。如果网关都ping不通,说明是VLAN、交换机或PC本身的问题,与路由无关。
- 在PC上
- 查网关 R1 (查去路):
- 登录R1,执行
display ip routing-table 10.1.2.200(查看去往服务器的路由)。 - 问题: R1是否有 去往
10.1.2.0/24的路由? - 如果没有:
ping失败,因为R1不知道往哪发。修复: 添加静态路由ip route-static 10.1.2.0 24 [R2的IP]。 - 如果有: 记下下一跳地址(例如是R2的IP
192.168.1.2)。
- 登录R1,执行
- 查下一跳 R2 (查通路):
- 登录R2,
display ip routing-table 10.1.2.200。 - R2是否有 去往
10.1.2.0/24的路由?(假设服务器在R2的直连网段,那么R2应该有一条Direct路由)。
- 登录R2,
- 查回程路由 (最容易忽略的致命点!):
- Ping是双向的!
ping包(ICMP Echo Request)能过去 ,ping回复包(ICMP Echo Reply)也必须能回来。 - 检查: 登录服务器的网关(R2),执行
display ip routing-table 192.168.1.100(检查R2是否知道如何回来)。 - 问题: R2是否有 去往PC所在网段
192.168.1.0/24的回程路由? - 如果没有: 这就是问题所在!服务器的回复包在R2那里被丢弃了。
- 修复: 在R2上添加回程路由
ip route-static 192.168.1.0 24 [R1的IP]。
- Ping是双向的!
- 检查高级特性 (浮动路由):
- 在R1上
display ip routing-table。 - 去往
10.1.2.0/24的路由是否Active? - 是不是因为主路(
preference 60)的下一跳不可达(或Track失败),导致流量切换到了一条错误的 备用浮动路由(如preference 100)上?
- 在R1上
- 检查高级特性 (路由汇总):
- 在R1上
display ip routing-table 10.1.2.200。 - 这个IP地址是否被一条错误的汇总路由 (例如
10.0.0.0/8指向了错误的方向)给抓走了? - 是否需要一条例外路由(钻洞)来修正它?
- 在R1上
- 查PC (查自己):
在刚才的排错中,我们都依赖 display ip routing-table。但如果有一天,这个命令显示一切正常,但流量就是不通,该怎么办?这说明问题出在了大脑(RIB)和肢体(FIB)的协调上。我们需要使用专家级工具来排错。
3. 专家级排错工具 (FIB & Verbose)
当你使用 display ip routing-table 发现路由条目看起来一切正常,但流量依然不通时,你需要更深入的工具。
- 工具一:
display ip routing-table [ip-address] verbose- 作用: 使用
verbose(详细) 参数,可以查看路由表(RIB)中关于某条路由的所有详细信息。 - 看什么:
Preference和Cost(Metric):确认它是否是最优的。Track状态:如果它绑定了Track,可以看到Track的状态是Up还是Down。Iteration-Info:显示它递归查找到的真正出接口和下一跳MAC。State:显示Active(已激活) 还是Inactive(未激活)。
- 作用: 使用
- 工具二:
display fib [ip-address]- 作用: 这是排错的最后一公里。它查看的是FIB(转发信息库) ,即转发芯片真正使用的小抄。
- 为什么用? 偶尔会出现路由在
RIB中是Active的(即display ip routing-table看起来没问题),但由于各种原因(如策略限制、硬件资源问题)未能成功下发到FIB。 - 排查:
- 如果
display fib能查到条目,并显示了正确的出接口和封装信息,说明转发层面没问题,问题在回程或其他设备上。 - 如果
display fib查不到 该条目(显示FIB entry not found),则证明问题出在 RIB -> FIB 的下发过程。这说明路由虽然被CPU选为最优,但并未被芯片采用 。这通常指向了更复杂的Track、BFD或策略配置问题。
- 如果