
1. 静态路由到底在解决什么问题很多人学到HCIA第四天第一次接触静态路由脑子里冒出的第一个念头就是路由器不是天生就会转发包吗为什么还要我手动去告诉它往哪走这个问题不搞清楚后面配命令就是死记硬背换个拓扑立马抓瞎。先说结论路由器确实会转发但它只会转发它“认识”的目的地。什么叫认识就是路由表里有一条明确告诉它“去往某个网段从哪个口出去下一跳交给谁”的记录。没有这条记录包到了路由器手里它看一眼目的IP发现路由表里查不到直接丢掉然后回一个“网络不可达”。这就像你手里拿着一封信地址写的是某个你从来没听说过的小区你连在哪个城市都不知道这信你根本没法送。那路由表里的记录从哪来两种方式一种是动态路由协议自己学来的比如OSPF、RIP、BGP这些路由器之间互相聊天交换各自知道的路由信息自动把路由表填满另一种就是静态路由管理员手动一条一条写进去。静态路由的核心价值就三个字可控性。你让它往哪走它就往哪走不会因为协议收敛慢导致短暂断网也不会因为邻居路由器抽风把错误路由传给你。在小规模网络、末梢网络、或者需要精确控制路径的场景里静态路由就是最稳的选择。HCIA第四天安排静态路由这个内容不是随便放的。前两天你学了IP地址规划、子网划分第三天学了路由器基本操作和直连路由直连路由就是路由器接口配了IP、接口up之后自动生成的那条路由只能到达接口直连的网段。但真实网络不可能所有网段都直连在一个路由器上跨路由器通信就必须靠静态路由或者动态路由来解决。静态路由是理解路由转发逻辑的最佳入口因为它足够简单、足够透明你能清清楚楚看到每一条路由是怎么来的、往哪走的。这一天的内容适合谁如果你是刚入门的网络工程师正在备考HCIA或者工作中需要配置小型企业网络、分支机构网络静态路由是你必须吃透的基本功。哪怕你以后主要用动态路由协议静态路由的排错思路和路由表查询逻辑也是一脉相承的。我见过太多人动态路由配得飞起但一遇到路由不通就懵了根本原因就是静态路由这块底子没打牢不知道路由器到底是怎么选路的。接下来我会把静态路由的配置、原理、排错、实验拓扑完整拆一遍尽量用大白话把每个参数为什么这么写讲清楚。你看完之后至少能做到拿到一个多路由器拓扑能独立规划路由条目能配通能排错能跟人解释清楚每一跳是怎么走的。2. 静态路由的核心原理与关键参数拆解2.1 路由表的结构与查表逻辑要搞懂静态路由先得看懂路由表。在华为设备上敲display ip routing-table你会看到一堆列Destination/Mask、Proto、Pre、Cost、NextHop、Interface。每一列都有它的意义不是摆设。Destination/Mask 是目的网段和掩码这个好理解就是“我要去哪”。Proto 是协议类型直连路由显示 Direct静态路由显示 StaticOSPF学来的显示 OSPF。Pre 是优先级也叫管理距离数值越小越优先。华为设备上直连路由优先级是0静态路由默认是60OSPF是10RIP是100。这个优先级决定了当多条路由都能到达同一个目的地时路由器信谁。Cost 是开销值同一种协议内部比较用静态路由的Cost默认是0。NextHop 是下一跳地址就是“我把这个包交给谁”。Interface 是出接口就是“从哪个口出去”。查表逻辑是这样的路由器收到一个包提取目的IP然后拿目的IP去路由表里逐条匹配。匹配规则是最长掩码匹配不是先匹配谁就先选谁。举个例子路由表里有 192.168.1.0/24 和 192.168.0.0/16 两条路由目的IP是 192.168.1.100虽然两条都能匹配上但 /24 的掩码更长更精确所以选 /24 那条。只有当掩码长度一样时才比较优先级优先级一样再比较Cost。这个逻辑必须刻在脑子里排错的时候90%的问题都出在查表结果跟你预期不一样。2.2 静态路由的几种写法与适用场景静态路由不是只有一种写法根据下一跳的指定方式不同分为三种第一种指定下一跳IP。命令是ip route-static 目的网段 掩码 下一跳IP。这是最常用的写法适合以太网环境。路由器会把包发给下一跳IP对应的MAC地址通过ARP解析出来。这种写法的好处是明确下一跳是谁清清楚楚出接口由路由表递归查询决定。第二种指定出接口。命令是ip route-static 目的网段 掩码 出接口。这种写法在串口Serial环境下常见因为串口是点对点链路不需要ARP直接从接口扔出去就行。但在以太网环境下不推荐这么写因为以太网是多路访问网络你指定出接口但不指定下一跳路由器不知道把包发给哪个MAC会出问题。第三种同时指定出接口和下一跳。命令是ip route-static 目的网段 掩码 出接口 下一跳IP。这种写法最明确既告诉路由器从哪个口出去又告诉它下一跳是谁。在华为设备上以太网环境推荐这种写法避免递归查询带来的不确定性。还有一种特殊写法叫缺省路由命令是ip route-static 0.0.0.0 0.0.0.0 下一跳IP。0.0.0.0/0 表示所有目的网段当路由表里找不到更精确的匹配时就用这条。缺省路由通常用在末梢网络比如企业分支只有一条出口线路所有去往总部的流量都走这条缺省路由。但要注意缺省路由不能随便配配错了会导致路由环路。2.3 路由递归查询是怎么回事递归查询这个概念很多人第一次听觉得玄乎其实很简单。当你配置静态路由时只指定了下一跳IP没有指定出接口路由器会拿这个下一跳IP再去路由表里查一次看看这个下一跳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。递归查询的好处是配置简洁坏处是如果下一跳不可达这条静态路由就不会出现在路由表里。所以排错的时候如果静态路由配了但没生效第一件事就是查下一跳地址是否可达。我见过有人配了静态路由死活不通最后发现下一跳IP写错了或者下一跳所在的网段根本没起来。2.4 浮动静态路由与路由备份浮动静态路由是静态路由的一个高级用法核心思想是配两条去往同一目的地的静态路由一条主用一条备用备用那条的优先级调大数值变大平时不生效主路由断了它才顶上。命令是这样的主路由ip route-static 10.1.1.0 24 192.168.1.2备用路由ip route-static 10.1.1.0 24 192.168.2.2 preference 100。默认静态路由优先级是60备用改成100数值越大优先级越低。平时主路由生效备用路由藏在路由表里不显示。当主路由的下一跳不可达时主路由从路由表里消失备用路由自动顶上。这个机制在广域网备份场景里非常实用。比如企业有一条主专线和一条备用线路平时走主专线主专线断了自动切备用。配置简单不需要跑动态路由协议稳定性也够。但要注意浮动静态路由只能检测下一跳是否可达不能检测链路质量。如果主线路时通时断路由会来回切换反而影响业务。这种场景就得靠动态路由协议或者BFD联动来解决。3. 多路由器静态路由实验完整实操3.1 实验拓扑与IP规划光讲理论没意思直接上一个三路由器的实验拓扑把静态路由配通。拓扑是这样的R1的G0/0/0口连R2的G0/0/0口R2的G0/0/1口连R3的G0/0/0口。R1后面挂一个PC1网段是192.168.1.0/24R3后面挂一个PC2网段是192.168.3.0/24R1和R2之间的互联网段是10.0.12.0/24R2和R3之间的互联网段是10.0.23.0/24。IP地址规划如下R1的G0/0/0配10.0.12.1/24R2的G0/0/0配10.0.12.2/24R2的G0/0/1配10.0.23.2/24R3的G0/0/0配10.0.23.3/24。PC1的网关设为192.168.1.1R1的G0/0/1口PC2的网关设为192.168.3.1R3的G0/0/1口。R1的G0/0/1配192.168.1.1/24R3的G0/0/1配192.168.3.1/24。这个拓扑虽然简单但涵盖了静态路由的所有核心考点直连网段自动生成路由非直连网段需要手动配置双向都要配缺一不可。很多人配静态路由只配一个方向结果发现ping不通就是因为回包的路由没配。3.2 R1的配置与路由分析先配R1。进入系统视图改个名字方便识别system-view sysname R1 interface GigabitEthernet0/0/0 ip address 10.0.12.1 24 quit interface GigabitEthernet0/0/1 ip address 192.168.1.1 24 quit配完之后查路由表display ip routing-table你会看到两条直连路由10.0.12.0/24 和 192.168.1.0/24Proto都是Direct出接口分别是G0/0/0和G0/0/1。这两条是接口配了IP、接口up之后自动生成的不需要手动配。现在R1要到达PC2所在的192.168.3.0/24网段怎么走R1自己不知道得手动告诉它。下一跳是谁是R2的G0/0/0口IP是10.0.12.2。所以配置命令是ip route-static 192.168.3.0 24 10.0.12.2这条命令的意思是去往192.168.3.0/24的包下一跳交给10.0.12.2。配完之后再查路由表会多出一条Static路由目的网段192.168.3.0/24下一跳10.0.12.2出接口G0/0/0递归查询出来的。但光配这一条还不够。R1还要能到达R2和R3之间的互联网段10.0.23.0/24虽然这个网段跟PC通信没直接关系但排错的时候可能会用到。所以再加一条ip route-static 10.0.23.0 24 10.0.12.2这两条配完R1的路由表里就有四条路由了两条直连两条静态。3.3 R2的配置与双向路由R2是中间路由器它两边都直连但两边的终端网段它都不直连。R2需要知道怎么去192.168.1.0/24和192.168.3.0/24。去192.168.1.0/24的下一跳是R1的G0/0/0口10.0.12.1去192.168.3.0/24的下一跳是R3的G0/0/0口10.0.23.3。配置如下system-view sysname R2 interface GigabitEthernet0/0/0 ip address 10.0.12.2 24 quit interface GigabitEthernet0/0/1 ip address 10.0.23.2 24 quit ip route-static 192.168.1.0 24 10.0.12.1 ip route-static 192.168.3.0 24 10.0.23.3R2的路由表里会有四条路由两条直连10.0.12.0/24和10.0.23.0/24两条静态192.168.1.0/24和192.168.3.0/24。3.4 R3的配置与回程路由R3的配置跟R1对称。R3直连192.168.3.0/24和10.0.23.0/24需要手动配去192.168.1.0/24和10.0.12.0/24的静态路由下一跳都是R2的G0/0/1口10.0.23.2system-view sysname R3 interface GigabitEthernet0/0/0 ip address 10.0.23.3 24 quit interface GigabitEthernet0/0/1 ip address 192.168.3.1 24 quit ip route-static 192.168.1.0 24 10.0.23.2 ip route-static 10.0.12.0 24 10.0.23.2到这里三台路由器的静态路由都配完了。PC1 ping PC2源IP 192.168.1.x目的IP 192.168.3.x。包从PC1出来网关是R1的192.168.1.1R1查路由表匹配到192.168.3.0/24的静态路由下一跳10.0.12.2从G0/0/0发出去。R2收到包查路由表匹配到192.168.3.0/24的静态路由下一跳10.0.23.3从G0/0/1发出去。R3收到包发现192.168.3.0/24是直连网段直接发给PC2。回包的时候PC2发给网关192.168.3.1R3查路由表匹配到192.168.1.0/24的静态路由下一跳10.0.23.2发给R2。R2再查路由表匹配到192.168.1.0/24的静态路由下一跳10.0.12.1发给R1。R1发现192.168.1.0/24是直连发给PC1。整个来回路径就通了。3.5 用tracert验证路径配完之后别光ping用tracert命令看一下路径能直观看到每一跳是谁。在PC1上tracert 192.168.3.x输出会显示三跳第一跳是R1的192.168.1.1第二跳是R2的10.0.12.2第三跳是R3的10.0.23.3最后到达PC2。如果中间某一跳显示星号说明那一跳的路由有问题或者设备禁了ICMP回应。在华为路由器上也可以用tracert命令语法是tracert 目的IP。这个命令在排错的时候非常有用能快速定位是哪一跳断了。比如你发现第一跳就通了第二跳不通那问题肯定出在R2上要么R2没有回程路由要么R2的接口down了。注意tracert依赖ICMP超时报文有些设备或防火墙会禁掉ICMP导致tracert显示不全。这时候别慌用ping逐跳测试也能定位问题。4. 静态路由排错思路与常见问题实录4.1 路由不生效的排查顺序静态路由配了但没生效这是新手最常见的问题。排查顺序我总结成四步查配置、查下一跳、查接口、查路由表。第一步查配置。display current-configuration看看静态路由命令敲对了没有目的网段、掩码、下一跳有没有写错。我见过有人把24写成23或者下一跳IP少写一位这种低级错误排半天。第二步查下一跳是否可达。ping 下一跳IP如果不通说明下一跳本身就有问题可能是接口没起来或者IP配错了或者中间链路断了。下一跳不通静态路由就不会生效路由表里根本不会出现这条路由。第三步查接口状态。display ip interface brief看看相关接口是不是up状态IP地址配对了没有。接口down了直连路由会消失依赖这条直连路由递归查询的静态路由也会跟着消失。第四步查路由表。display ip routing-table看看静态路由到底在不在表里。如果在表里但ping不通那问题可能出在回程路由上或者ACL拦截了。如果不在表里回到第二步继续查。4.2 单向通与回程路由缺失单向通是静态路由实验里最经典的坑。PC1能ping通PC2但PC2 ping不通PC1或者ping的第一个包通了后面不通。原因很简单去程路由配了回程路由没配。包能过去但回包找不到路被路由器丢了。排查方法在PC2上tracert PC1的IP看第一跳通不通。如果第一跳就不通说明R3没有去192.168.1.0/24的路由。如果第一跳通了第二跳不通说明R2没有去192.168.1.0/24的路由。逐跳排查很快就能定位。还有一种情况是ping的第一个包通后面不通。这通常是因为ARP解析需要时间第一个包触发ARP路由器回一个ICMP超时后面ARP学到了就通了。这种不算故障多ping几个包就正常了。4.3 路由环路是怎么产生的静态路由配错了会导致路由环路包在两个路由器之间来回转发TTL减到0才被丢弃。路由环路的典型场景是R1配了去192.168.3.0/24的下一跳是R2R2配了去192.168.3.0/24的下一跳是R1两边互相指包就在R1和R2之间打乒乓球。避免路由环路的方法很简单静态路由的下一跳必须指向正确的方向不能互相指。配置之前先在纸上画清楚拓扑标好每一跳的方向配的时候对着图配别凭感觉。如果发现路由环路用tracert一看就明白了包在两跳之间来回显示。4.4 常见问题速查表问题现象可能原因排查命令解决方法静态路由不在路由表下一跳不可达ping 下一跳IP检查下一跳接口和IP配置ping不通但对端能ping通回程路由缺失tracert 对端IP在对端路由器补回程路由路由表有路由但ping不通ACL拦截或接口downdisplay acl all检查ACL规则和接口状态tracert显示星号ICMP被禁或路由中断ping 逐跳测试逐跳ping定位故障点路由来回切换浮动路由优先级配置不当display ip routing-table调整preference值或改用动态路由缺省路由导致环路缺省路由指向错误tracert 目的IP检查缺省路由下一跳方向4.5 我踩过的几个坑第一个坑配静态路由时只配了出接口没配下一跳。在以太网环境下这样配路由表里虽然会显示但实际转发会出问题因为路由器不知道下一跳MAC地址。后来改成同时指定出接口和下一跳问题解决。第二个坑浮动静态路由的preference值设反了。我把主路由的preference设成100备用设成60结果备用路由一直生效主路由反而藏着。后来才搞明白数值越小越优先主路由应该用默认的60备用调大。第三个坑递归查询导致路由不生效。配了一条静态路由下一跳是对方路由器的Loopback口地址但对方Loopback口没配路由或者没起来导致递归查询失败静态路由一直不生效。后来改成用互联接口的IP做下一跳问题解决。第四个坑忘了配缺省路由导致末梢网络断网。分支路由器只有一条出口我配了明细静态路由但总部新增了一个网段分支没配对应的静态路由导致访问不了。后来在分支加了一条缺省路由指向总部所有未知流量都走总部问题解决。但缺省路由要慎用如果总部那边没有回程路由照样不通。5. 静态路由的进阶用法与场景延展5.1 缺省路由在末梢网络中的实战末梢网络就是只有一个出口的网络比如企业分支、家庭宽带后面接的路由器。这种网络里所有去往外部目的地的流量都走同一个出口配明细静态路由太麻烦直接配一条缺省路由最省事。命令是ip route-static 0.0.0.0 0.0.0.0 下一跳IP。0.0.0.0/0 匹配所有目的IP当路由表里找不到更精确的匹配时就用这条。比如分支路由器配了ip route-static 0.0.0.0 0.0.0.0 10.0.1.1所有去往总部的流量都走10.0.1.1。但缺省路由有个前提总部那边必须有回程路由指向分支的网段。如果总部没有分支网段的路由分支能发出去但收不回来照样不通。所以缺省路由通常配合总部侧的静态路由或者动态路由一起用。5.2 静态路由与动态路由的取舍静态路由和动态路由不是对立的实际项目中经常混用。小规模网络、拓扑稳定的场景静态路由足够配置简单、不占资源、可控性强。大规模网络、拓扑经常变化的场景动态路由更合适能自动收敛、自动适应变化。我个人的经验是出口路由用缺省路由内部互联用动态路由特定路径用静态路由。比如企业总部和分支之间跑OSPF但有一条专线需要精确控制路径就在两端配静态路由通过preference调整优先级让特定流量走专线其他流量走OSPF。静态路由的另一个优势是安全。动态路由协议会交换路由信息如果邻居路由器被攻破可能传入错误路由。静态路由没有这个问题管理员不配路由器就不知道攻击面小很多。5.3 静态路由在HCIA考试中的考点分布HCIA考试里静态路由的考点主要集中在几个方面静态路由的配置命令、路由表的查表规则、最长掩码匹配、浮动静态路由、缺省路由、递归查询。考试题型有选择题、判断题、拖拽题还有模拟配置题。选择题常考的是给一个拓扑和路由表问某个目的IP会从哪个接口转发出去。这种题的关键是掌握最长掩码匹配和优先级比较。拖拽题常考的是把路由条目拖到正确的路由器上考察的是对拓扑的理解。模拟配置题就是让你敲命令配静态路由考察命令的熟练度。备考建议别光背命令把实验拓扑多搭几遍用模拟器反复练。每配一条路由都问自己为什么这么配下一跳为什么是那个IP出接口为什么是那个口。理解透了考试怎么变都不怕。5.4 从静态路由延伸到网络排错方法论静态路由虽然简单但它背后的排错思路可以延伸到整个网络排错。核心就三步确认现象、定位层次、逐跳排查。确认现象就是搞清楚到底什么不通是ping不通、tracert断在哪、还是时通时断。定位层次就是按OSI模型从下往上查先查物理层链路通不通再查数据链路层ARP学没学到再查网络层路由有没有最后查传输层端口通不通。逐跳排查就是从源到目的一跳一跳ping过去哪一跳断了就查哪一跳。这个方法论在静态路由实验里练熟了以后遇到OSPF邻居起不来、BGP路由不优选、VLAN间路由不通都是同样的思路。网络排错最怕的就是瞎猜有章法地逐层排查效率高得多。提示排错的时候养成习惯每改一个配置就查一次路由表确认改动生效了再继续。别一口气改一堆最后不知道是哪条配置起了作用。6. 实验后的复盘与配置备份6.1 配置保存与重启验证实验配完之后别忘了save保存配置。华为设备重启后配置会丢失不保存等于白配。保存的时候会提示确认输入y回车就行。保存之后建议重启一次设备验证配置是否真的生效。重启命令是reboot重启后查路由表看静态路由还在不在ping测试还通不通。这一步很多人省略结果考试的时候设备重启了发现配置没保存直接凉凉。6.2 配置文件的导出与对比华为设备支持把配置文件导出到TFTP服务器或者U盘。命令是tftp 服务器IP put 配置文件。导出之后可以对比不同版本的配置看看改了哪些地方。这个习惯在多人协作的项目里特别重要配置改了要有记录出问题了能回溯。如果没有TFTP服务器也可以用display current-configuration把配置显示出来复制到本地保存。虽然原始一点但应急够用。6.3 静态路由实验的扩展练习基础实验配通之后可以加一些扩展练习巩固加一台R4让拓扑变成四条路由器串联练习多跳静态路由把其中一条链路换成串口练习串口下的静态路由写法配置浮动静态路由模拟主链路断开自动切换配置缺省路由模拟末梢网络访问总部。每加一个变化都重新分析路由表看路由条目怎么变下一跳怎么走。练多了之后拿到任何拓扑都能快速规划出路由方案这才是真正掌握了静态路由。我个人在实际操作中的体会是静态路由这东西看十遍不如配一遍配十遍不如排一遍错。排错的过程才是真正理解路由转发逻辑的过程。刚开始配的时候多犯点错多查几次路由表多tracert几次把每次排错的过程记下来慢慢就形成肌肉记忆了。以后遇到再复杂的网络底层逻辑都是一样的逐跳查、逐层排没有解决不了的问题。