会写静态路由只是入门,会用黑洞路由才算会玩



一、开场:一条静态路由,把回包“送进了死胡同”

那次给一个小分支调网络,去程通了,回程却怎么都回不来。我 traceroute 一看,包到了分支路由器,回来的时候被一条静态路由指向了一个根本没人的方向,一头扎进去就没影了。

写这条路由的同事还挺委屈:“我就写了条静态路由,命令没报错啊?”

问题就在这——静态路由是个“老实人”,你怎么写它就怎么走,它不会自己判断对错,也不会告诉你下一跳是不是个死胡同。 你给它指个悬崖,它也照走。

很多人觉得静态路由简单,一条命令的事。但真正用起来,下一跳写地址还是写接口、默认路由怎么发、怎么做一条“平时不露面、断了才顶替”的浮动备份、以及那条听起来很玄的“黑洞路由”,里面全是门道。

这一课把静态路由一次讲透,从“会写”练到“会用”。


二、静态路由:你手动告诉设备“去哪、发给谁”

1. 类比:给新司机手写一张路线条

  • 新来的司机不认识路,你递张纸条:“去 A 仓库,就把货交给门口的老王”;
  • 司机不操心别的,照纸条走;
  • 静态路由就是你写给设备的“路线条”:去某个网段,就把包发给指定的下一跳。

2. 静态路由怎么写

图1:静态路由原理,R1 去 192.168.10.0/24,下一跳指向 R2

<R1> system-view
[R1] ip route-static 192.168.10.0 24 10.0.0.2
  • 拆开看:ip route-static + 目的网段 + 掩码 + 下一跳;
  • 这条命令的意思是:去 192.168.10.0/24,就发给 10.0.0.2(R2);
  • 掩码可以写长度(24),也可以写点分(255.255.255.0)。

3. 下一跳,还是出接口?

  • 类比:指路时,说“交给门口老王”(下一跳),和说“走东边那条路”(出接口),都能到,但靠谱程度不同;
  • 写下一跳(IP):最常用,设备知道“交给谁”,还能解析出该从哪个口出;
  • 写出接口:在点到点链路上可以,但在以太网这类“多路访问”的口上,设备还得靠 ARP 去解析,容易出问题;
  • 经验:除非很清楚,否则一律写下一跳地址,稳。

静态路由也能做负载分担

同一个目的,写两条下一跳不同、优先级相同的静态路由,设备会把它们当成等价路由,流量在两条路上分担:

[R1] ip route-static 192.168.10.0 24 10.0.0.2
[R1] ip route-static 192.168.10.0 24 10.0.2.2
  • 两条优先级都是 60,形成等价双路径;
  • 一条断了另一条继续,带宽也能叠加;
  • 这种“静态等价”在小网络里很常见,比上动态协议简单。

但对端设备也得有回来的路由,否则单方向通,照样白搭。


三、默认路由:那条“兜底”的路由

1. 类比:大门口的“其他方向”指示牌

  • 一个岔路口,牌子写着“去 A 楼往左、去 B 楼往右,其他方向直走”;
  • 这个“其他方向直走”,就是默认路由;
  • 设备查遍了表都没匹配上,就按默认路由走。

2. 默认路由怎么写

图2:默认路由,所有不认识的网段都走出口

[R1] ip route-static 0.0.0.0 0 172.16.0.1
  • 0.0.0.0/0 表示“任意地址”,掩码最短、谁都能匹配;
  • 所以它是最后兜底,只有别的路由都不匹配才走它;
  • 内网设备的默认路由一般指向出口(防火墙/路由器),让它带大家上网。

四、浮动静态:一条“平时不露面”的备胎

1. 类比:车上的备胎

  • 正常开车用四个主胎,备胎放后备箱,主胎没坏它不露面;
  • 一旦主胎爆了,备胎才顶上;
  • 浮动静态就是这样:主路由在的时候,它藏在后面;主路由一失效,它自动顶替。

2. 怎么做:把备份路由的优先级“设大”

图3:浮动静态做主链路备份,黑洞路由把匹配的丢弃

# 主路由:默认优先级 60
[R1] ip route-static 192.168.10.0 24 10.0.0.2
# 备份路由:优先级设成 80,比主路由大,平时不进表
[R1] ip route-static 192.168.10.0 24 10.0.1.2 preference 80
  • 静态路由默认优先级 60;
  • 把备份路由的优先级设成 80(比 60 大),主路由在时,备份因为不够优,不进路由表;
  • 主路由一断,备份立刻“浮上来”进表,接替转发;
  • 这就是“浮动”两个字的来历。

3. 优先级为什么不建议写 1?

  • 静态默认是 60,如果你把备份设成 1,它比主路由(60)还优,结果“备份”反而抢了主路由,主次颠倒;
  • 备份的正确思路是“比主路由更不优”,即数值要更大,而不是更小;
  • 所以做浮动,备份的优先级一定要比主路由大(比如 70、80),别随手写个 1。

让浮动切换更快:静态路由配 BFD

靠设备自己发现主路由断了,可能要等一段时间(接口没及时 Down、下一跳还“活着”)。要求快速切换的场景,可以让静态路由和 BFD 联动:

  • BFD 像一个“毫秒级心跳”,实时探测下一跳还在不在;
  • 一旦检测到故障,立刻通知静态路由撤销,让备份瞬间顶上;
  • 专线、营业网点这类对中断敏感的场景,常用它把切换时间压到秒级以内。

注意 BFD 要本端和对端都支持、一起配置,具体命令随设备版本而定,这里先理解原理,配置时以设备手册为准。


五、黑洞路由:把匹配的包“直接丢进黑洞”

1. 类比:邮筒上写“查无此地址,直接处理”

  • 一个邮件,地址查不到、又不能让它在站点之间来回弹;
  • 就在某个环节写“这种地址,直接收下、不再转发”;
  • 黑洞路由就是:匹配这条路由的包,设备直接丢弃,不发给任何人。

2. 黑洞路由怎么写

[R1] ip route-static 192.168.0.0 16 NULL0
  • 出接口写成 NULL0,这是个“虚拟的空接口”,包进去就被丢;
  • 这条路由的意思:去 192.168.0.0/16 的包,直接丢;
  • 它看起来“浪费”,其实有两个很实用的用途。

3. 黑洞路由的两个用途

  • 防止路由环路:当你汇总了一段大网段,但其中有些小网段实际并不存在,回包可能在设备之间反复弹;这时把汇总网段指向 NULL0,不存在的地址直接丢,不会绕圈;
  • 配合汇总“兜底”:发布一条汇总路由的同时,本地配一条指向 NULL0 的黑洞,保证未使用的地址被干净丢弃,而不是被默认路由带得乱跑;
  • 这就是为什么说“会用黑洞路由,才算真的会玩静态”。

讲个黑洞排障的小事

有个网点,汇总网段是 192.168.0.0/16,核心配了指向 NULL0 的黑洞。后来新增了 192.168.30.0/24,路由还没加,结果这个网段的人全上不了网——包一查,命中了 /16 黑洞,被直接丢了。

同事一开始以为是链路问题,折腾半天。我让他查具体地址,命中的是 NULL0,立刻定位:不是没路,是被黑洞“提前拦下”了。 补上 /24 的精确路由,最长匹配优先,立刻恢复。

这个案例说明:黑洞是“宁可错杀”,新增网段时一定先加精确路由,否则会被自己的汇总黑洞挡在门外。

静态路由的选择与兜底

有

没有

有

没有

在

断了

是

否

要去一个网段

有明确路由吗

主路由还在吗

有默认路由吗

走默认路由

丢包

走主路由

浮动备份顶替

命中黑洞吗

丢弃

发给下一跳


六、验证与排查(华为 VRP)

配置验证无误后,记得保存,否则设备一重启就没了:

<R1> save

很多人命令写完、验证通过却忘了保存,结果第二天设备重启,路由全丢,又得重来。这是个低级但高频的坑。

1. 看静态路由有没有进表

<R1> display ip routing-table protocol static
Static Routing Table Summary:
 192.168.10.0/24 [Preference 60] NextHop 10.0.0.2

关键看 Preference 和 NextHop。备份路由在主路由生效时不会出现在这里。

2. 看某地址走哪条

<R1> display ip routing-table 192.168.10.30

3. 异常与排查

现象命令看到什么判断动作
静态路由不生效看路由表没有该条目下一跳不可达查下一跳、接口
主备颠倒比优先级备份更优备份优先级设小了改大备份优先级
回包丢失traceroute断在某设备指错方向/黑洞核对路由方向
地址不通看黑洞命中 NULL0被黑洞丢弃核对汇总范围
主断了没切看备份备份没进表备份配置有误查下一跳和优先级

思科对照

动作华为思科
静态路由ip route-static 网 掩码 下一跳ip route 网 掩码 下一跳
默认路由ip route-static 0.0.0.0 0 下一跳ip route 0.0.0.0 0.0.0.0 下一跳
浮动备份... preference 80... 80(末尾跟 AD)
黑洞出接口 NULL0出接口 Null0
看路由display ip routing-tableshow ip route

静态路由的优缺点,什么时候用

  • 优点:不占带宽、不发协议报文、设备开销小、配置简单、行为完全可控;
  • 缺点:不能自动适应变化,拓扑一改就得手工改,网络一大就维护不过来;
  • 适用:拓扑简单、相对固定的小网络,或做出口默认、特定目的的指向和备份;
  • 网络规模上去、链路经常变动,就该上动态路由(OSPF 等),这是后面的内容。

七、🔧 运维视角 & 📐 设计视角

🔧 运维视角:

  • 静态路由不生效,先查下一跳是不是可达,设备不会替你判断对错;
  • 做备份,备份优先级要比主路由大,否则备胎反而抢正位;
  • 莫名丢包,记得查有没有命中 NULL0 黑洞路由。

📐 设计视角:

  • 小网络、拓扑稳定,用静态 + 默认最省事,开销小、好维护;
  • 出口或关键链路用浮动静态做低成本备份,配合 BFD 能更快检测;
  • 发布汇总路由时,同步配黑洞路由,避免未使用地址引发环路。

八、小结与命令速查表

  • 静态路由:手动指定“去哪个网、发给谁”,下一跳优先写 IP;
  • 默认路由:0.0.0.0/0,最后兜底;
  • 浮动静态:备份优先级设大,主路由断了才顶替;
  • 黑洞路由:指向 NULL0,匹配即丢,防环路、配汇总。

本篇命令速查表:

目的华为命令思科对照
静态路由ip route-static 192.168.10.0 24 10.0.0.2ip route 192.168.10.0 255.255.255.0 10.0.0.2
默认路由ip route-static 0.0.0.0 0 172.16.0.1ip route 0.0.0.0 0.0.0.0 172.16.0.1
浮动备份ip route-static 网 掩码 下一跳 preference 80ip route 网 掩码 下一跳 80
黑洞路由ip route-static 192.168.0.0 16 NULL0ip route 192.168.0.0 255.255.0.0 Null0
看静态display ip routing-table protocol staticshow ip route static

九、思考题 & 评论区接招

💬 互动题(评论区接招):

浮动静态的优先级设多少?为什么不建议写 1?

假设主链路是默认优先级 60 的静态路由,现在要加一条备份:
1)备份路由的优先级应该比 60 大,还是小?为什么?
2)如果不小心写成 1,会发生什么?
3)再说说,黑洞路由为什么通常和“汇总路由”一起出现?

把你的答案写在评论区,我会逐条看,帮你把静态路由的“主次、备份、兜底”彻底理顺。


系列导航:

我是你们的老网工。静态路由这一课,把“会写”和“会用”的差距补上了。下一课我们聊一个每天都在用、出问题却最容易被忽略的东西——DHCP。设备连上网络,地址是谁发的、地址池怎么规划、跨 VLAN 怎么靠中继发地址、租期和 Option 43 又是怎么回事,还有私接 DHCP 怎么防。下一课《DHCP 地址分配》,我们把“自动发地址”这一关彻底讲明白。下一课见。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐