eNSP静态路由与默认路由配置验证与排错实战
静态路由和默认路由这两个词,只要在 eNSP 里搭过拓扑的人基本都听过,但真正能把它们配通、配对,并且在出问题的时候靠几条 display 命令自己定位出来的,其实没那么多。很多人卡在这么几个地方:路由表里明明有这条路由,ping 却不通;只配了一边的静态路由,认为"能去就能回";默认路由随手一写,结果两台路由器互相指,包在链路上来回打转直到 TTL 耗尽。这些坑我自己都踩过,而且不止一次。这篇东西想做的事很直接:把静态路由和默认路由的原理讲到能自己推演,再把 eNSP 里的完整配置流程一步步摊开,包括地址规划、命令参数含义、验证方法、排错表格。不管你是刚接触网络实验的新手,还是准备做网络方向认证、要临时把实验环境跑起来的人,都可以直接照着做,也可以把文中的排查表存下来当检查清单用。
1. 原理先落地:路由表到底是怎么选路的
动手之前必须把一件事想明白,不然配置就是抄命令,抄完也不知道为什么通、为什么不通报。路由器的转发决策不是"猜到哪走到哪",它做的是一个非常机械的查表动作:拿到一个目的 IP,在路由表里找前缀匹配最长的那一行,然后用那一行给出的下一跳和出接口把包扔出去。静态路由和默认路由,本质上都是人手工往这张表里塞的一行条目,区别只在于前缀写得多具体。
1.1 路由表的四要素与匹配规则
一条路由条目里,最需要盯住的是四个字段:目的网络/掩码、协议类型(Proto)、优先级(Pre)、下一跳与出接口。协议类型告诉你这条路由是直连产生的、手工写的还是路由协议算出来的;优先级决定当多条不同来源的路由指向同一目的网段时谁被选中;下一跳告诉设备"包该交给谁";出接口告诉设备"从哪个口送出去"。
匹配规则只有一条,但它是所有选路问题的根:最长前缀匹配优先。比如路由表里同时存在0.0.0.0/0和192.168.20.0/24,一个目的地址是192.168.20.10的包会命中/24这一条,因为它的前缀更长、更精确,跟优先级数值高低无关。优先级只在"前缀长度相同"这个前提下才参与比较。很多人把这两个概念混在一起,以为默认路由优先级调低一点就会被明细路由压住,其实明细路由压倒默认路由靠的是长度,不是优先级。
提示:优先级(Preference)在 eNSP 的路由表里显示为 Pre 字段,直连路由是 0,静态路由默认 60,OSPF 内部路由是 10,RIP 是 100。数值越小越优先。这个值的意义是"同前缀长度下的备选排序",不要拿它去跟最长匹配混着理解。
1.2 静态路由的本质:把"下一跳"三个字手工写进表
静态路由是管理员手动配置的、不会自己变化的条目。它的优点和缺点其实是同一件事:完全可控。你写什么它就是什么,不会因为链路抖动自己算出别的路径,也不会因为邻居设备重启而消失;但同时它也没有任何自适应能力,链路断了它不会自己切走,网络结构变了它不会自己更新,规模一大就是纯手工活。
正因为这样,静态路由最合适的场景是网络边缘和结构稳定的小型网络。典型位置有两个:一是末梢网络连接上游的那一跳,二是企业出口设备指向运营商的那一跳。这两处都有共同特点——只有一个出口或者出口选择非常固定,不需要动态协议去算路径。
配置静态路由之前,脑子里必须先有一张完整的地图:源网段在哪、目的网段在哪、中间要经过哪些设备、每一跳的接口地址是什么。少画一段,配置就会缺一段,而且缺的那段往往表现为"去得来回不来"这种很迷惑的现象。
1.3 默认路由:一条"其他都归我管"的兜底规则
默认路由是静态路由的一个特例,目的网络写成0.0.0.0,掩码写成0,意思是"目的地址的 32 位我一个都不关心"。因为它的前缀长度是 0,是所有可能路由里最短的,所以它永远排在最后被匹配——只有当路由表里找不到任何更精确的条目时,才会用上它。
这个特性决定了默认路由的定位:它是兜底,不是主力。一个网络里如果有大量明细网段需要精确选路,靠默认路由是解决不了的,因为它会把所有"未知目的"都指向同一个出口,一旦这个出口不是正确的路径,包就被送错地方了。默认路由真正有价值的地方在于简化配置——末梢路由器上本来可能要写十几条指向外部的静态路由,用一条默认路由就能全部替代,维护成本立刻降下来。
一个常见的认知误区是把默认路由理解成"万能路由"。它不万能,它只是"最低优先级的猜测"。而且默认路由有一个很危险的副作用:如果两台路由器互相把默认路由指向对方,又没有其他更精确的路由存在,去往未知目的的包就会在两者之间来回弹,直到 TTL 减到 0 被丢弃,这就是最典型的静态路由环路。
2. 实验拓扑与地址规划
原理讲完就该动手了。eNSP 里搭拓扑的好处是可以随便折腾,配错了删掉重来就行。我这次的实验目标设成三层结构:左侧一个用户网段,中间一台转发路由器,右侧一台出口路由器并挂一个模拟的外部网络段,另外再加一条备份链路用来演示浮动静态路由。这样静态路由、默认路由、备份路由三件事可以在一个拓扑里全跑一遍。
2.1 拓扑结构与设备角色分配
具体结构是这样:PC1 接在 R1 的 GE0/0/0 上,属于192.168.10.0/24网段;R1 的 GE0/0/1 和 R2 的 GE0/0/1 之间用10.0.12.0/30互联;R2 的 GE0/0/0 和 R3 的 GE0/0/0 之间用10.0.23.0/30互联;R3 上用 LoopBack0 接口模拟一个外部网络172.16.1.0/24。备份链路走 R1 的 GE0/0/2 直连 R3 的 GE0/0/1,网段10.0.13.0/30。
设备角色上,R1 是靠近用户的接入路由器,它的路由需求很单纯:知道怎么出去就行,适合用默认路由。R2 是中间的转发设备,两边都要精确知道,适合用明细静态路由。R3 是出口设备,需要知道回程怎么走,同时也需要一个默认路由把未知流量丢给"外部"。这种角色划分在实际网络里非常常见,也是理解"为什么这台设备用默认路由、那台用明细路由"的最好例子。
互联地址用/30是为了省地址,两个可用地址刚好一头一个,这也是点到点链路的标准做法。如果你不确定掩码怎么写,记住一条:两台设备直连的互联段用/30(255.255.255.252),可用地址只有两个,刚好够用,不会浪费。
2.2 完整地址规划表
先把地址钉死,后面所有配置都按这张表来,避免配到一半发现网段冲突。
| 设备 | 接口 | IP 地址/掩码 | 说明 |
|---|---|---|---|
| PC1 | 以太网口 | 192.168.10.10/24 | 网关 192.168.10.254 |
| R1 | GE0/0/0 | 192.168.10.254/24 | 用户侧网关 |
| R1 | GE0/0/1 | 10.0.12.1/30 | 主链路,连 R2 |
| R1 | GE0/0/2 | 10.0.13.1/30 | 备份链路,连 R3 |
| R2 | GE0/0/1 | 10.0.12.2/30 | 连 R1 |
| R2 | GE0/0/0 | 10.0.23.1/30 | 连 R3 |
| R3 | GE0/0/0 | 10.0.23.2/30 | 连 R2 |
| R3 | GE0/0/1 | 10.0.13.2/30 | 备份链路,连 R1 |
| R3 | LoopBack0 | 172.16.1.1/24 | 模拟外部网络 |
LoopBack 接口在 eNSP 里可以直接创建,它永远处于 up 状态,非常适合用来模拟一个稳定的外部网段。比起在 R3 后面再挂一台服务器,LoopBack 更省资源,也不会因为网卡没启动导致 ping 不通,排查时少一个变量。
2.3 eNSP 中的基础配置与常见启动问题
eNSP 里最容易浪费时间的不是配置,是设备起不来。启动路由器后要等设备图标变成绿色再双击进入命令行,中途点进去可能只看到一个空白的启动日志。如果长时间起不来,一般是虚拟化组件的问题,重启模拟器或者重新注册设备包通常能解决,这个不属于配置范畴,但确实会卡住很多人。
进入命令行后,第一步永远是改设备名,不然四台设备界面来回切,很容易在错误的设备上敲命令。基础配置流程如下:
<Huawei> system-view [Huawei] sysname R1 [R1] interface GigabitEthernet 0/0/0 [R1-GigabitEthernet0/0/0] ip address 192.168.10.254 24 [R1-GigabitEthernet0/0/0] quit [R1] interface GigabitEthernet 0/0/1 [R1-GigabitEthernet0/0/1] ip address 10.0.12.1 30 [R1-GigabitEthernet0/0/1] quit [R1] interface GigabitEthernet 0/0/2 [R1-GigabitEthernet0/0/2] ip address 10.0.13.1 30 [R1-GigabitEthernet0/0/2] quit接口地址的掩码可以直接写位数(24、30),也可以写点分十进制(255.255.255.0),VRP 两种都认。位数写法更短,出错概率低,我习惯用位数。配置完成后用display ip interface brief检查,重点看两个字段:Physical 是不是 up,Protocol 是不是 up,IP 地址有没有敲错。这一步很多人跳过,结果后面 ping 不通,回头一查发现接口地址少打了一位。
R2 和 R3 的接口配置同理,按地址表逐个配完。PC1 的配置在 eNSP 的图形界面里做,双击 PC 打开配置页,填 IP、掩码、网关三样,网关必须填192.168.10.254,填错了后面所有测试都会失败,而且现象和路由没配一模一样。
3. 静态路由配置:从两条命令到全网互通
地址配完,直连网段会自动进入路由表,此时 R1 只能看到192.168.10.0/24、10.0.12.0/30、10.0.13.0/30这三条直连路由,R2 只能看到两条互联段,R3 只能看到互联段加 LoopBack。跨设备访问全部不通,这是正常状态。接下来要做的就是把缺失的路径手工补上。
3.1 ip route-static 命令的参数拆解
命令格式是ip route-static 目的网络 掩码 下一跳 [优先级]。三个必填参数分别对应"去哪""这个网络多大""交给谁"。掩码既可以写位数也可以写点分,下一跳必须是本设备能直接到达的地址,也就是必须在某个直连接口的网段里,否则这条路由会因为递归查找失败而无法生效,路由表里根本看不到它。
这里有个细节值得多说一句:写下一跳和写出接口的区别。在以太网链路上,标准做法是写下一跳地址,因为设备需要知道下一跳的 MAC,才能封装二层帧;如果只写出接口不写下一跳,设备会认为目的地址就在这个接口直连的网段上,从而对目的 IP 发 ARP 请求,结果当然没人应答。在点到点链路上(比如串口)可以只写出接口,因为对端只有一个。eNSP 里用 GE 口互连,所以老老实实写下一跳,不要图省事。
还有个可选参数是优先级,默认 60。这个参数在配浮动静态路由时会用到,后面单独讲。另外还有一个description参数可以给路由加备注,规模稍微大一点的环境我建议养成加备注的习惯,几个月后回头看还能知道这条路由是干嘛的。
3.2 三台设备的逐台配置记录
先配 R1。R1 需要知道用户网段怎么出去,以及怎么到达外部网络。中间经过了 R2,所以下一跳全部指向 R2 的互联地址10.0.12.2。
[R1] ip route-static 0.0.0.0 0 10.0.12.2这里我直接用了默认路由,因为 R1 是末梢路由器,除了直连的三个网段,其余所有目的地址都只能从 R2 出去,没有第二个选择。用一条默认路由替代"写一条 192.168.20.0/24、再写一条 172.16.1.0/24"这种做法,维护起来省事很多,将来外部网段增加也不用改 R1。
再配 R2。R2 在中间,两边都得精确知道,所以用明细静态路由,不用默认路由。原因很直接:R2 有两个方向,如果它也用默认路由指向某一侧,另一侧的流量就会被送错。
[R2] ip route-static 192.168.10.0 24 10.0.12.1 [R2] ip route-static 172.16.1.0 24 10.0.23.2第一条告诉 R2:去用户网段,往 R1 送。第二条告诉 R2:去外部网络,往 R3 送。两条路由的下一跳都在直连网段里,递归查找没问题。
最后配 R3。R3 需要回程路由,知道用户网段在左边:
[R3] ip route-static 192.168.10.0 24 10.0.23.1到这一步,主链路方向的路由就齐了。注意 R3 上还缺一条去 R1 备份链路网段的路由,但那个网段是直连的,不需要配。R1 上也不需要额外配去10.0.23.0/30的路由,因为默认路由已经覆盖了。
3.3 用三条命令把配置结果验证到底
配完不要急着 ping,先看路由表。display ip routing-table是核心命令,重点看目的网段、Proto 是不是 Static、Pre 是不是 60、NextHop 对不对、Interface 是不是期望的那个口。
[R1] display ip routing-table如果路由表里没有你刚配的那条,八成是下一跳不可达,或者命令敲错了参数顺序。VRP 对参数顺序比较敏感,掩码写成了下一跳的位置,命令会报错或者生成一条莫名其妙的路由。
路由表确认无误后再 ping。这里有个容易被忽略的点:从路由器上 ping 远端地址,源地址默认是出接口地址,而不是你期望的那个业务网段地址。要验证"用户网段能不能访问外部",应该用-a参数指定源地址:
[R1] ping -a 192.168.10.254 172.16.1.1-a后面的地址是本设备的某个接口地址,这样回程包的目的地就是192.168.10.0/24网段,能真实检验回程路由是否存在。很多人不加-a,ping 通了就以为配好了,结果 PC 上还是不通,原因就是源地址不同导致走了不同的回程路径。
第三个验证工具是tracert,它能看到包经过的每一跳,定位断点非常直观:
[R1] tracert -a 192.168.10.254 172.16.1.1正常情况下应该看到10.0.12.2、10.0.23.2、172.16.1.1三个地址依次出现。如果只看到第一跳就断了,问题在 R2;如果第二跳之后没有响应,问题在 R3 的回程路由或者 LoopBack 状态。
注意:eNSP 里 PC 的 ping 有时候会因为 ARP 表没及时更新而失败,尤其是刚改完 IP 的时候。遇到这种情况在 PC 的命令行里执行
arp -d清一下缓存,或者在路由器上reset arp all,再试一次。这不是路由配错了,别一头扎进路由表里找问题。
4. 默认路由:看着简单,坑都在细节里
默认路由的配置只有一行命令,写起来比明细路由还短,但它背后的选路逻辑和潜在风险值得单独拎出来讲。我见过太多实验环境里"两台路由器互指默认路由导致环路"的情况,也见过"默认路由把本该走专线的流量全吸走了"的案例。
4.1 末梢网络为什么最适合默认路由
判断一台设备该不该用默认路由,标准很简单:它是不是只有一个出口。如果一台路由器除了直连网段之外,所有流量的下一跳都是同一台设备,那它就该用默认路由;如果它有两条以上出口,且不同目的网段要走不同出口,那它必须用明细路由或者动态路由协议。
R1 就是典型的单出口设备。用户网段的所有外部访问都必须经过 R2,没有第二条路。这种情况下,一条ip route-static 0.0.0.0 0 10.0.12.2就等价于"除了我自己直连的,其他全交给 R2"。这样做的直接收益是可维护性:将来外部网络从172.16.1.0/24扩展成十几个网段,R1 一个字都不用改。
反过来说,R2 就不能用默认路由。因为 R2 左边是用户网段,右边是外部网络,如果它写一条默认路由指向 R1,那么去往外部网络的流量也会被送到 R1,R1 又根据它自己的默认路由送回 R2,包就在两台设备之间来回弹。这个现象在实验里非常典型,也是最好用的环路教学案例。
4.2 最长匹配原则的实际验证
光讲理论不够直观,最好在拓扑里亲手验证一次。做法是在 R1 上同时保留默认路由和一条明细路由,然后观察去往不同目的地址时分别命中了哪一条。
假设在 R1 上再加一条:
[R1] ip route-static 172.16.1.0 24 10.0.13.2这条明细路由指向备份链路,和默认路由同时存在于路由表中。此时display ip routing-table会显示两条:0.0.0.0/0和172.16.1.0/24。然后用display ip routing-table 172.16.1.1查具体目的地址的匹配结果,会看到它命中/24那条,而不是默认路由。换成display ip routing-table 172.16.2.1(一个不存在于任何明细路由里的地址),就会命中默认路由。
这个验证做一遍,最长匹配原则就不再是纸面上的概念了。它的实际意义在于:当网络里既有默认路由又有明细路由时,明细路由永远优先,不用担心默认路由"抢走"精确流量。所以默认路由和明细路由是可以共存的,这也是真实网络里最常见的组合方式。
4.3 双向默认路由为什么危险
前面提到的环路,具体过程是这样的:R1 上配0.0.0.0/0 → 10.0.12.2,R2 上配0.0.0.0/0 → 10.0.12.1。此时从 R1 发出一个目的地址为172.16.1.1的包,R1 查表命中默认路由,交给 R2;R2 查表也命中默认路由,交回 R1;R1 再交给 R2……每经过一次 TTL 减 1,直到 TTL 归零被丢弃。
从现象上看,ping 会显示请求超时,或者在某些设备上返回 TTL 超时的 ICMP 报文;用tracert看得更清楚,地址会在10.0.12.1和10.0.12.2之间反复出现几十次。看到这个现象,基本可以断定是双向默认路由互指。解决办法是至少一侧改成明细路由,或者引入动态路由协议让它自己算出正确路径。
提示:判断环路有个小技巧,看
tracert输出里跳数是不是异常多,或者同一组地址反复出现。正常的静态路由环境跳数是固定的,出现重复基本就是环路。
5. 浮动静态路由:给静态路由加一条退路
静态路由最大的短板是不会自适应。主链路一断,路由条目还在,但下一跳不可达,流量直接黑洞。要解决这个问题有两个选择:上动态路由协议,或者用浮动静态路由做手工备份。规模不大的环境里,后者更轻量,配置量也小得多。
5.1 用 preference 参数控制主备关系
浮动静态路由的原理是给同一条目的网段配两条静态路由,下一跳不同,优先级不同。优先级数值小的主用,数值大的备用,但备用那条在主用有效时不会出现在路由表里,只在主用路由失效时才顶上来。
在 R1 上加一条走备份链路去往外部网络的明细路由,优先级设成 100:
[R1] ip route-static 172.16.1.0 24 10.0.13.2 preference 100因为 R1 原本有一条默认路由,去往172.16.1.0/24的流量会先匹配这条明细(长度 24 大于 0),所以这条备份路由实际上成了去往外部网络的主路径。为了让场景更清晰,可以改成这样设计:主路径走 R2,优先级默认 60;备份路径走 R3,优先级 100。
[R1] ip route-static 172.16.1.0 24 10.0.12.2 [R1] ip route-static 172.16.1.0 24 10.0.13.2 preference 100配完后display ip routing-table只会看到一条172.16.1.0/24,下一跳是10.0.12.2。想看到那条备用的,用:
[R1] display ip routing-table protocol static或者进到具体视图里查更详细的信息。备用路由不显示在活动路由表里,但它确实存在于配置中,这是浮动路由的正常表现,不是配置没生效。
5.2 主备切换的验证方式
验证方法很直接:把 R1 的 GE0/0/1 接口关掉,模拟主链路故障,然后立刻看路由表。
[R1] interface GigabitEthernet 0/0/1 [R1-GigabitEthernet0/0/1] shutdown [R1-GigabitEthernet0/0/1] quit [R1] display ip routing-table此时172.16.1.0/24那条路由的下一跳应该变成10.0.13.2,出接口变成 GE0/0/2。再 ping 一次外部地址,如果通了,说明备份路径生效。恢复的时候执行undo shutdown,等几秒再看路由表,应该自动切回主路径。
这个过程中有个细节要注意:切换不是瞬时的,路由表更新需要一点时间,ping 会丢几个包,这是正常现象,不要以为配错了。另外备份链路两端的设备都要有回程路由,R3 上需要知道192.168.10.0/24可以从10.0.13.1过来,否则主链路断了以后,去程通、回程不通,表现还是 ping 不通。这一点特别容易漏,我见过好几次都是只配了单向。
6. 常见故障与排查实录
静态路由的排错其实有很强的规律性,因为它的行为完全确定,不存在"协议收敛慢""邻居关系抖动"这类变量。问题基本集中在几个固定位置:接口没 up、地址写错、下一跳不可达、回程缺失、掩码不匹配。下面这张表是我自己常用的速查清单,按现象查原因,能省掉大量瞎猜的时间。
6.1 故障现象与原因速查表
| 现象 | 最可能的原因 | 排查命令与动作 |
|---|---|---|
| 路由表里看不到配的路由 | 下一跳不可达或接口未 up | display ip interface brief,确认接口双 up |
| 命令报错 | 参数顺序错或掩码格式不对 | 检查是否为目的网络 掩码 下一跳顺序 |
| 路由表有但 ping 不通 | 回程路由缺失 | 在对端设备查路由表,确认有没有回程条目 |
| ping 通但 tracert 中途断 | 中间设备缺路由 | 逐跳检查每台设备的路由表 |
| tracert 地址反复出现 | 双向默认路由形成环路 | 至少一侧改为明细路由 |
| PC 不通但路由器 ping 通 | PC 网关配错或 ARP 缓存旧 | 检查 PC 网关,清 ARP 缓存 |
| 主链路断开后完全不通 | 备份路由未配或对端缺回程 | 检查浮动路由配置和对端路由表 |
| 部分网段通、部分不通 | 掩码长度写错,网段范围不对 | 逐条核对路由的目的网段与掩码 |
这张表不是万能的,但它覆盖了九成以上的静态路由实验故障。用的时候有个顺序建议:先看接口,再看路由表,最后看回程。接口不通,后面全是白搭;路由表没有,说明配置没生效;路由表有但业务不通,八成是回程问题。按这个顺序走,比东一榔头西一棒子效率高得多。
6.2 几个我自己踩过的坑
第一个坑是"只看去程不看回程"。早期配静态路由,配完 R1 指向 R2,ping 不通,就一直在 R1 上找问题,折腾半小时才发现 R2 上压根没配回程路由。静态路由是双向的,一去一回两条路径都要有,这是最基本的要求,但刚上手时特别容易忽略。养成习惯:每配完一台设备的出向路由,立刻问自己一句"对端知道我这条网段怎么回来吗"。
第二个坑是掩码写错。比如目的网段是192.168.10.0/24,手一抖写成192.168.10.0 16,看起来只差一个数字,实际覆盖范围从 256 个地址变成了 65536 个地址,会把你不想包括的网段也吸进来,导致其他方向的路由失效。这种错误最难查,因为路由表里条目是存在的,ping 也能通一部分地址,只有特定地址不通。排查方法是用display ip routing-table 目的地址精确看某个地址命中了哪条路由,一眼就能看出是不是被错误掩码覆盖了。
第三个坑是 eNSP 里改完配置没保存就关了模拟器,重新打开发现配置全没了。VRP 的命令是即时生效的,但只在运行配置里,不落盘重启就丢。养成save的习惯,或者至少在做完关键节点后保存一次。同理,删除路由用undo ip route-static 目的网络 掩码 下一跳,三个参数要写全,只写一部分是删不掉的。
第四个坑是关于验证源地址的。前面提过ping -a,这里再强调一次:从路由器发起的 ping,如果不指定源地址,用的是出接口地址,这个地址在远端设备看来可能属于某个互联网段,回程路径和真实业务流量完全不同。所以"路由器 ping 通了"不等于"业务通了",验证业务连通性一定要带-a,或者直接在 PC 上 ping,那才是最真实的测试。
第五个坑是接口状态。eNSP 里连线后接口不一定立刻 up,尤其是先启动设备后连线的情况。display ip interface brief里 Physical 显示 down,说明链路层没起来,这时候配什么路由都没意义。解决方法是检查连线是否接在了正确的端口上,或者删掉重连一次。这个看起来很低级,但排查时如果跳过这一步,后面所有分析都建立在错误前提上。
6.3 让实验环境更接近真实网络的两个小习惯
第一个习惯是给每条静态路由加 description。命令是ip route-static 目的网络 掩码 下一跳 description 备注文字,备注写清楚这条路由的用途和关联链路,比如"to-external-via-R2"。单机实验里感觉多余,但只要设备超过三台、路由超过十条,回头看配置时就会感谢自己。
第二个习惯是每配完一台设备就做一次完整验证,而不是全部配完再统一测。静态路由的问题会叠加,一次性配完再测,出问题时你不知道是哪一台、哪一步引入的。逐台验证虽然慢一点,但定位问题的成本低得多,整体上反而更快。
7. 一点延伸:静态路由还能怎么用
静态路由看着原始,但在很多场景里它仍然是首选。除了前面讲的末梢网络和出口指向,还有一个常见用法是黑洞路由:把某个不期望被访问的网段指向NULL0接口,命令是ip route-static 目的网络 掩码 NULL0,这样发往该网段的包会被直接丢弃,不会在网络上乱窜。这个技巧在抑制异常流量、做访问控制的第一道过滤时很有用。
另一个延伸是路由汇总。静态路由可以手工写成一条汇总条目覆盖多个明细网段,比如192.168.0.0/22覆盖192.168.0.0/24到192.168.3.0/24四个网段。汇总能减少路由表条目,但要注意汇总范围不能包含实际不存在的网段,否则会形成黑洞。判断方法很简单:把汇总掩码展开算一遍地址范围,确认它精确覆盖了所有需要包含的网段,且没有多余。
我自己在实际操作中的体会是,静态路由这部分内容看起来简单,但它其实是理解整个路由体系的入口。把最长匹配、优先级、下一跳递归、去程回程这几个概念在静态路由里彻底搞明白,后面学动态路由协议时,很多行为都能直接类比过来,不用重新建立认知。所以哪怕是做实验赶进度,我也建议在这部分多花点时间,把每一条 display 命令的输出看透,而不是配通了就往下走。