📡 第三章 路由器和它庞大的功能
📄 一句话概括

静态路由的全部优点是「可控」,全部缺点是「不会变」。 浮动静态靠管理距离做备份,但它只认接口状态,不认路径通不通。

📝 本节和前面几节的关系

03.05.04 讲完怎么查表,从这一节开始讲「表里的行是怎么来的」。 来源只有两类:人写的(静态)与协议学的(动态)。先看人写的。

一、一条静态路由要写三个东西

目的前缀(去哪儿)、下一跳地址或出接口(交给谁)、可选的管理距离(多可信)。

下一跳与出接口二选一,但含义不同:写出接口是「从这个口发出去」,写下一跳是「交给这个地址」。 在以太网这种多路访问链路上,写下一跳更安全——写出接口会让设备对每个目的地址都发一次 ARP, 表会迅速膨胀。

点对点链路上两者等价,因为对端只有一个,写哪个都行。

二、浮动静态:用管理距离做备份

做法极简:主路由用默认管理距离(静态是 1),备份路由写一个更大的值(比如 200)。 值小的先生效,主路由消失后备份才浮上来。

路由 管理距离 状态


直连 0 永远最优 主静态路由 1 生效中 浮动静态(备份) 200 藏在表里,不转发 OSPF 110 生效中,但输给静态 RIP 120 生效中,输给 OSPF

注意 OSPF 110 与静态 1 的关系:静态比 OSPF 可信。 所以「配了一条静态默认路由,OSPF 学到的默认路由就不管用了」——现场常见的「OSPF 邻居起来了但流量不走它」多半是这个原因。

三、切换时间取决于「怎么发现主路由死了」

浮动静态是被「主路由消失」触发的,而主路由消失只有两种途径:

一、接口 down:物理断了或协议断了,毫秒级,立刻切。 二、下一跳不可达:要等 ARP 超时或探测失败,几秒到几十秒。

还有第三种情况:设备活着,但转发坏了。接口不 down、下一跳也 ping 得通,但包就是过不去。 这时候浮动静态永远不切——因为它只认「接口状态」,不认「路径通不通」。

所以「静态路由不能做真正的高可用」。 要做路径探测得上 BFD、IP SLA 这类机制,或者干脆换动态路由。

四、静态路由仍然有它的位置

末梢网络:只有一条出口的分支,写一条默认路由就够,跑协议纯属浪费。 默认路由:全网往往只在出口设备上写一条,其余靠协议分发。 临时调试与引流:加一条 /32 把某个地址引到指定设备,比改协议快得多。

一条经验:路由条目少于 10 条、拓扑半年不变,就用静态。超过这个量级,人会写错, 而写错的路由比没有路由更难查。

五、动手 Demo:静态路由与浮动静态路由,主备怎么切

这段对比直连、主静态、浮动静态、OSPF、RIP 五种来源的管理距离与状态, 再按「接口 down」与「下一跳不可达」两种触发算切换时间。

for name, ad, note in routes:
    T([name, u"%d" % ad, note], [0, 0, 0])
P(u"  接口 down 切换:毫秒级;下一跳不可达:%d 秒以上。" % 30)

实跑输出:

--------------------------------------------------------------------
静态路由与浮动静态路由,主备怎么切
--------------------------------------------------------------------
**静态路由是「手写的路线」**:不会自己变,但也不会自己错。
**浮动静态路由是它的高可用版本**:平时不生效,主路由一断就顶上。

**做法是靠管理距离**:主路由用默认值(静态是 1),备份路由写一个更大的值(比如 200)。
**值小的先生效,主路由消失后备用的才浮上来。**

  路由                 管理距离     状态                   什么时候生效
  -------------------------------------------------------------------------
  直连                 0            永远最优               接口起来就有
  主静态路由           1            生效中                 默认
  浮动静态(备份)     200          不生效(藏在表里)     主路由消失时
  OSPF                 110          生效中                 比静态差
  RIP                  120          生效中                 比 OSPF 差

**注意 OSPF 110 与静态 1 的关系**:静态路由比 OSPF 更可信。
**所以「配了一条静态默认路由,OSPF 学到的东西就不管用了」**
这是现场常见的「明明 OSPF 邻居起来了但流量不走」的原因。

**算一下切换的代价**:浮动静态靠「主路由消失」触发,
而主路由消失靠「接口 down」或者「下一跳不可达」。

  · 接口 down:**毫秒级**,接口一断立刻切。
  · 下一跳不可达:要等 ARP 超时或探测失败,**几秒到几十秒**。

**所以浮动静态的实际切换时间取决于「怎么发现主路由死了」。**如果对端是「设备还活着但转发坏了」,
接口不会 down——**这时候静态路由永远不切。**

**这就是为什么「静态路由不能做真正的高可用」**:它只认「接口状态」,不认「路径通不通」。
**要做路径探测得用 BFD、IP SLA 这些机制,或者干脆上动态路由。**

「200 藏在表里」这一行的意思:它确实在路由表里,但不参与转发。 所以 show 命令能看到它,ping 却不通——这是正常的,不是故障。

「OSPF 输给静态」这一行是现场高频坑:很多人以为「动态路由更聪明,应该它说了算」, 但管理距离的规则是「静态更可信」,因为静态是人明确指定的。

最后那段「设备活着但转发坏了」是静态路由的死穴:它没有探测能力。要做探测得另外配 BFD, 这也解释了为什么运营商的备用链路上几乎都能看到 BFD。

30 秒实验

  1. 在你电脑上加一条到某网段的静态路由,看它出现在表里哪一行。
  2. 用 route print 或 ip route 看管理距离与度量值两列。
  3. 想一想:如果出口有两条宽带,你会怎么配备份?

常见误区

  1. 以为静态路由不如动态路由。它更可控,末梢网络首选。
  2. 以为浮动静态能检测路径故障。它只看接口状态。
  3. 以为备份路由「没生效就是没配上」。它藏在表里,这是设计如此。
自测三问(点开对答案) 1. 浮动静态路由靠什么机制实现主备切换? —— 给备份路由设更大的管理距离,主路由消失后它才浮上来。 2. 为什么静态路由做不了真正的高可用? —— 它只认接口状态,设备活着但转发坏了时不会切换。 3. 什么时候该用静态路由而不是动态? —— 条目少于 10 条、拓扑长期不变、末梢网络或临时引流。

下一节:规模一大,静态就写不过来了——看动态路由。

相关笔记