【华为HCIA路由交换认证指南】第五章 静态路由

文章目录

    • 第一部分:路由的基石------路由表是如何工作的?
      • [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)
    在高性能路由器中,存在两张表:
    1. 路由表 (RIB, Routing Information Base): 这是由路由器CPU维护的大脑总地图 。它包含了所有路由来源(直连、静态、动态)学到的所有路由。您使用 display ip routing-table 命令查看的就是它。
    2. 转发信息库 (FIB, Forwarding Information Base): 这是CPU从RIB中挑选出最优 路由后,下发给高速转发芯片的小抄快速反应列表 。数据包真正被转发时,芯片查的是FIB,因为FIB查找速度极快(硬件转发)。
      总结: RIB负责决策(选出最优路由),FIB负责执行(高速转发)。

我们知道了路由器靠路由表工作。那么路由表里的条目(例如 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. 路由信息来源(路由从哪里来?)

路由表里的条目不是凭空出现的,它们主要有三种来源:

  1. 直连路由 (Direct):
    • 如何产生: 当您给路由器的某个接口(如 GigabitEthernet 0/0/0)配置了IP地址(如 192.168.1.1 24)并执行 undo shutdown 激活该接口后,路由器立刻就知道了它屁股底下直接连着 192.168.1.0/24 这个网段。
    • 特征: 这是最可信的路由,优先级最高。
  2. 静态路由 (Static):
    • 如何产生: 由网络管理员手动配置的路由。
    • 命令: ip route-static 192.168.2.0 24 192.168.1.2
    • 含义: 我(管理员)明确地告诉你(路由器),要去 192.168.2.0/24 网段,请把包发给 192.168.1.2
  3. 动态路由 (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中指导转发),必须满足两个条件:它必须是最优的 ,并且它是可激活的

  1. 选路(如何成为最优路由?):
    路由器按照以下严格顺序来挑选最优路由:
    1. 第一原则:最长匹配原则 (Longest Match Rule)
      • 含义: 越精确的路由,越优先
      • 举例: 路由表同时有两条路由:
        • A: 192.168.1.0/24 (匹配 192.168.1.x 所有地址)
        • B: 192.168.1.0/25 (匹配 192.168.1.01.127)
      • 当一个去往 192.168.1.10 的数据包抵达时,它同时匹配A和B。但 B (/25) 的网络前缀更长(更具体),因此路由器选择B路由display ip routing-table 192.168.1.10 会显示匹配了B。
    2. 第二原则:优先级 (Preference)
      • 含义: 当最长匹配相同时(如两条都是去往 192.168.1.0/24 的),路由器比较它们的优先级
      • 举例:
        • A: ip route-static 192.168.1.0 24 ... (优先级 60)
        • B: (通过OSPF学到的) 192.168.1.0/24 ... (优先级 10)
      • 路由器选择优先级数字更小即优先级更高B (OSPF) 路由
    3. 第三原则:度量值 (Metric)
      • 含义: 当最长匹配和优先级都相同时(例如两条都是OSPF路由),路由器会比较它们的度量值 (Metric 或 Cost) 。在OSPF协议中,它被称为开销(Cost) 。它是路由协议内部 用来衡量一条路径"好坏"的数值。这个数值越小,代表路径越好(开销越低)。Cost是根据链路的带宽 自动计算出来的。带宽越高(如1000M),Cost值越低(越好)。带宽越低(如10M),Cost值越高(越差)。一条路由的总Cost,是数据包沿途经过的所有出接口Cost的总和
      • 举例:
        • A: OSPF路由,Metric=20
        • B: OSPF路由,Metric=30
      • 路由器选择Metric更低的 A路由(路径开销更小)。
  2. 激活 (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上配置):

    复制代码
    [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.10ping 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 命令的下一跳部分有三种写法,它们有天壤之别:

  1. 写法一 (推荐):指定 [下一跳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地址。
    • 优点: 逻辑清晰,适用所有场景。
  2. 写法二 (危险):仅指定 [出接口] (以太网环境)
    • 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性能。
  3. 写法三 (最佳实践):[出接口] + [下一跳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)

  • 应用场景:

    1. 连接互联网: 互联网上的全球网段(Public IP)有超过100万条路由。企业路由器(出口路由器)不可能(也没必要)学习所有这些路由。
    2. 使用默认路由指向Internet: 我们在出口路由器上配置一条默认路由,指向ISP网关。当内部PC访问一个公网地址(如 8.8.8.8)时,路由器在路由表中找不到精确匹配,就会自动使用这条默认路由,把包扔给运营商。
    3. 电脑上的默认路由和网关: 您的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
  • 解释:

    1. 正常情况下,R1的路由表中有两条去往 10.1.1.0/24 的路由。
    2. R1比较优先级:60 vs 100
    3. R1选择优先级 60(主路)作为最优路由加载到FIB中。preference 100 的路由处于非激活状态(Inactive),在 display ip routing-table 中可见,但在FIB中不可用。
    4. 故障发生: 当主路的下一跳 192.168.1.1 不可达时(例如链路断开),主路路由变为 Inactive
    5. R1重新选路,发现唯一可用的路由只剩下那条优先级为 100 的备路。
    6. 备路自动浮动 上来,成为 Active 状态,流量切换到备用链路,实现自动备份。

这种被动的浮动路由有一个致命缺陷:如果主链路(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为例):

    1. 配置NQA: 在R1上配置一个NQA测试例,让它持续地 ping 主路的关键IP(如 192.168.1.1)。
    2. 配置Track: 创建一个 Track 条目,让它跟踪 NQA测试例的成功/失败状态。
    3. 配置路由联动: 在配置主路静态路由时,将其与 Track 条目绑定。
  • 命令示例 (在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能 ping192.168.1.1track 1 就为 Up 状态,主路由(优先级60)生效。
    • 一旦R1连续几次 ping 不通 192.168.1.1(无论是因为链路问题还是对端死机),track 1 状态变为 Down
    • 主路由立刻 变为 Inactive (非激活),备路(优先级100)自动浮动上来,实现智能、主动的故障切换。

第三部分:路由汇总与路由表简化

至此,我们学会了如何精细化地管理路由(特定、默认、主备)。但当网络规模变大,路由表里有成百上千条路由时,精细化就变成了繁琐。这时,我们需要反向思考:如何粗放化地管理路由,提高效率?这就是路由汇总。

1. 为什么要精简路由表?

  • 性能压力: 路由表越大(几十万条),路由器CPU的计算压力越大,内存占用也越高。
  • 查找效率: 表越小,查找速度越快,转发延迟越低。
  • 网络稳定性: 假设你有100个小网段。如果一个小网段(如 192.168.1.0/24)抖动(flapping,即链路频繁断开和恢复),这个坏消息会被通告给所有相关路由器,导致全网路由表震荡。但如果你把这100个网段汇总成1条路由,只要这条汇总路由是稳定的,内部的小抖动就不会扩散出去。

既然汇总这么重要,我们该如何计算汇总范围?

2. 通过路由汇总精简路由表

  • 计算示例:

    假设一个路由器连接了四个连续的C类网段:

    • 192.168.0.0/24
    • 192.168.1.0/24
    • 192.168.2.0/24
    • 192.168.3.0/24
  • 详细推导(如何汇总为 192.168.0.0/22):

    1. 将它们写成二进制,观察第三个八位字节(Octet):
      • 192.168.0.0 -> ... .00000000. ...
      • 192.168.1.0 -> ... .00000001. ...
      • 192.168.2.0 -> ... .00000010. ...
      • 192.168.3.0 -> ... .00000011. ...
    2. 找到它们共同不变 的前缀。很明显,第三个八位字节的前6位(000000)是共同的,最后2位(00, 01, 10, 11)在变化。
    3. 共同不变的位数 = 8 (第一字节) + 8 (第二字节) + 6 (第三字节) = 22 位。
    4. 汇总路由的地址取最小的那个,即 192.168.0.0
    5. 结果: 192.168.0.0/22
  • 命令:

    现在,下游路由器不再需要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]
    • 原因: 两位管理员(或一位糊涂的管理员)互相将对方设置为默认网关。
  • 后果:

    1. 一个目的地址未知的包(如 8.8.8.8)到达R1。
    2. R1匹配默认路由,将包发给R2。
    3. R2也不认识 8.8.8.8,它匹配自己的默认路由,将包发回给R1
    4. R1收到,又发给R2...
    5. 数据包在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)。
  • 排错思路 (基于本教程知识的系统化步骤):
    1. 查PC (查自己):
      • 在PC上 ipconfig (或 ifconfig)。
      • 检查IP (192.168.1.100)、掩码 (/24)、默认网关 (应为 192.168.1.1,假设是R1) 是否正确配置?
      • 测试: ping 192.168.1.1 (ping自己的网关)。如果网关都ping不通,说明是VLAN、交换机或PC本身的问题,与路由无关。
    2. 查网关 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)。
    3. 查下一跳 R2 (查通路):
      • 登录R2,display ip routing-table 10.1.2.200
      • R2是否 去往 10.1.2.0/24 的路由?(假设服务器在R2的直连网段,那么R2应该有一条 Direct 路由)。
    4. 查回程路由 (最容易忽略的致命点!):
      • 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]
    5. 检查高级特性 (浮动路由):
      • 在R1上 display ip routing-table
      • 去往 10.1.2.0/24 的路由是否 Active
      • 是不是因为主路(preference 60)的下一跳不可达(或 Track 失败),导致流量切换到了一条错误的 备用浮动路由(如 preference 100)上?
    6. 检查高级特性 (路由汇总):
      • 在R1上 display ip routing-table 10.1.2.200
      • 这个IP地址是否被一条错误的汇总路由 (例如 10.0.0.0/8 指向了错误的方向)给抓走了?
      • 是否需要一条例外路由(钻洞)来修正它?

在刚才的排错中,我们都依赖 display ip routing-table。但如果有一天,这个命令显示一切正常,但流量就是不通,该怎么办?这说明问题出在了大脑(RIB)和肢体(FIB)的协调上。我们需要使用专家级工具来排错。

3. 专家级排错工具 (FIB & Verbose)

当你使用 display ip routing-table 发现路由条目看起来一切正常,但流量依然不通时,你需要更深入的工具。

  • 工具一:display ip routing-table [ip-address] verbose
    • 作用: 使用 verbose (详细) 参数,可以查看路由表(RIB)中关于某条路由的所有详细信息。
    • 看什么:
      • PreferenceCost(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选为最优,但并未被芯片采用 。这通常指向了更复杂的TrackBFD或策略配置问题。
相关推荐
ZeroNews内网穿透2 小时前
本地搭建 Clawdbot + ZeroNews 访问
网络·安全·web安全·clawdbot
石去皿2 小时前
一款轻量级桌面级图片批量压缩工具,专为高效减小图片文件体积而设计,面向latex编译速度优化
网络·人工智能·工具·压缩图片
weixin_443290692 小时前
【华为HCIA路由交换认证指南】第六章 动态路由
网络·华为·智能路由器
有味道的男人2 小时前
接入MIC(中国制造)接口的帮助
网络·数据库·制造
马猴烧酒.2 小时前
【协同编辑|第十二天】通过WebSocket,Disruptor 无锁队列实现协同编辑
网络·websocket·网络协议
2501_941652772 小时前
高速公路车辆检测与识别——基于YOLOv8与RFPN网络的智能监控系统_3
网络·yolo
智算菩萨2 小时前
【网络工程师入门】网络技术全解析:从家庭组网到DNS域名系统的实践指南
网络·系统架构
新时代牛马2 小时前
CANopenNode 接口及 CANopenLinux 完整实现
网络·学习
一起养小猫2 小时前
Flutter for OpenHarmony 进阶:Socket通信与网络编程深度解析
网络·flutter·harmonyos