首页 / 资讯中心 / 文章详情

网络路由入门:从路由表到OSPF动态路由实战

网络路由入门:从路由表到OSPF动态路由实战 ★ FEATURED ARTICLE
1. 路由到底在干什么从一次跨城寄快递说起很多人第一次接触“网络路由”这个词脑子里浮现的是机房、机柜、一堆闪着绿灯的黑盒子。其实你每天都在用路由只是没意识到。你点一份外卖骑手从商家到你家中间要经过好几个路口每个路口他都要判断“往左还是往右”。网络路由干的就是骑手干的活只不过它送的是数据包路口换成了路由器地图换成了路由表。我习惯把路由拆成三个问题来看数据包从哪来、要到哪去、下一跳交给谁。这三个问题回答清楚了路由这件事就通了八成。剩下的两成是当有多条路都能走的时候选哪条当某条路断了的时候怎么绕。前者叫路由选路后者叫路由收敛。你把这五个词吃透——路由表、下一跳、度量值、收敛、默认路由——基本就能看懂绝大多数网络拓扑了。这篇文章适合谁看如果你是刚入行的运维、刚考完网络基础课的学生、或者自己在家折腾软路由的爱好者那这篇内容就是给你写的。我会从路由表的结构讲起一路讲到静态路由和动态路由的取舍、常见协议的脾气、以及我在实际排障中踩过的坑。不堆术语尽量用你能听懂的话把原理讲透再给你可以直接抄的配置思路。2. 路由表路由器的“导航地图”长什么样2.1 一条路由条目里藏着哪些信息路由器的核心就是一张表叫路由表。你可以把它理解成手机导航里的“路线列表”。每一条路由条目至少包含这几个字段字段含义生活类比目的网络这个数据包要去哪个网段你要去的那个小区子网掩码这个网段有多大小区占地范围下一跳交给哪个邻居转发下一个路口往哪拐出接口从哪个网卡发出去走哪条车道度量值这条路“好不好走”红绿灯多不多、堵不堵优先级多条路时先信谁导航推荐路线 vs 备选路线我见过不少新手排障时只盯着“能不能通”却不去看路由表里到底有没有那条路。排障第一步永远是看路由表就像导航失灵时你第一反应是看地图有没有加载出来而不是猛踩油门。2.2 最长前缀匹配为什么“更具体”的路优先路由表里可能同时存在好几条都能匹配同一个目的地址的条目。比如10.0.0.0/8走网关A10.1.0.0/16走网关B10.1.2.0/24走网关C现在有个数据包要去10.1.2.5三条都“沾边”选哪条答案是最长前缀匹配也就是掩码最长、最具体的那条走网关C。这个规则背后的逻辑很朴素越具体的描述越可信。10.0.0.0/8说的是“整个10开头的大区域”10.1.2.0/24说的是“就这一栋楼”。导航当然优先听“就这一栋楼”的。提示很多人配了明细路由却发现不生效八成是被一条更长的前缀“截胡”了。查路由表时一定要看掩码长度别只看网段。2.3 默认路由那条“其他都走这里”的兜底默认路由写作0.0.0.0/0意思是“所有我没明确写过的目的地都从这条走”。它通常指向你的上游网关。家用路由器里那条“默认网关”本质就是一条默认路由。默认路由的价值在于缩小路由表规模。你不可能把互联网上每一个网段都写进本地路由表所以只需要写“本地网段走内网其余全丢给上游”。这是分层思想的体现我只管我这一层上面的事交给上面。但默认路由也是把双刃剑。配错了方向流量就会像走错高速匝道一样绕一大圈。我踩过一次坑两条默认路由指向不同上游结果因为优先级没设好流量全走了慢的那条排查了半天才发现是度量值的问题。3. 静态路由与动态路由手动挡和自动挡的取舍3.1 静态路由简单、可控但怕变静态路由就是管理员手动写死的路由条目。它的优点是不占CPU、不占带宽、行为完全可预测。小网络里比如两个办公室之间拉一条专线两边各写一条静态路由清清楚楚谁也不用跟谁“商量”。配置静态路由的典型命令长这样以常见网络设备语法为例ip route 192.168.2.0 255.255.255.0 10.0.0.2意思是去192.168.2.0/24的包交给下一跳10.0.0.2。静态路由的软肋也很明显网络一变它不会自己适应。上游断了、链路切换了静态路由还傻乎乎地往老路指直到你手动改。所以它适合拓扑稳定、规模小的场景。3.2 动态路由让路由器自己“商量”出路线动态路由是路由器之间通过协议交换信息自动算出最优路径。常见的动态路由协议有这几类协议类型典型场景特点RIP距离矢量小型网络、教学简单但跳数限制15收敛慢OSPF链路状态企业内网收敛快分层设计最常用IS-IS链路状态大型运营商网络扩展性强配置偏底层BGP路径矢量跨域、互联网边界策略灵活规模巨大选哪个取决于你的网络规模和需求。我一般这么建议小网络静态路由够用中型企业内网上OSPF跨多个大区域或对接外部网络才考虑BGP。别一上来就上BGP那是杀鸡用牛刀配置复杂度和排障难度都会陡增。3.3 度量值多条路都能走时凭什么选它动态路由协议算出多条可达路径时靠度量值来比大小。不同协议的度量值算法不一样RIP 用跳数经过的路由器越少越好。OSPF 用开销通常和带宽挂钩带宽越高开销越小。BGP 用一堆路径属性比如AS路径长度、本地优先级等。这里有个容易混淆的点不同协议之间的度量值不能直接比较。OSPF算出来的开销是10RIP算出来的跳数是2这俩没法比大小。所以路由器引入了管理距离这个概念用来决定“当多个协议都提供了去同一目的地的路由时先信哪个协议”。路由来源默认管理距离直连0静态路由1OSPF110RIP120BGP外部20管理距离越小越优先。所以直连永远最可信静态次之动态协议再次。这个顺序符合直觉自己亲眼看到的直连 自己手动写的静态 别人告诉你的动态。4. 动态路由协议的核心机制邻居、泛洪、收敛4.1 邻居建立先交朋友再交换情报动态路由协议的第一步是建立邻居关系。两台路由器要先“握手”确认对方是自己的同类才能交换路由信息。以OSPF为例邻居建立要经过几个状态Down、Init、2-Way、ExStart、Exchange、Loading、Full。只有到了Full状态才说明双方数据库同步完成。我排障时最常看的也是邻居状态。邻居起不来后面全是空谈。邻居起不来的常见原因有接口没启用该协议双方区域号不一致认证密码不匹配网络类型不匹配比如一边广播一边点对点MTU不一致导致卡在ExStart提示邻居卡在ExStart或Exchange十有八九是MTU问题。这个坑我踩过不止一次抓包看半天最后发现两边接口MTU差了4个字节。4.2 泛洪与数据库同步把地图发给所有人链路状态协议如OSPF、IS-IS的核心思想是每台路由器都掌握全网的完整地图。怎么做到靠泛洪。每台路由器把自己周围的链路状态打包成LSA链路状态通告发给所有邻居邻居再转发给它们的邻居直到全网每台路由器都收到。这个过程叫数据库同步。同步完成后每台路由器手里都有一份相同的“全网地图”然后各自用最短路径算法Dijkstra算出到各个目的地的最优路径。这就像一群人要一起画一张地图每个人负责画自己家门口那一段然后把画好的部分传给所有人最后每个人手里都有一张完整地图。好处是每个人都能独立算路不依赖某个“中心大脑”。4.3 收敛网络变了多久能重新算好收敛指的是网络拓扑发生变化后所有路由器重新达成一致、路由表更新完成的过程。收敛速度是衡量动态路由协议好坏的关键指标。RIP收敛慢是出了名的因为它靠定时广播默认30秒发一次加上抑制、失效计时器一次收敛可能要几分钟。OSPF快得多链路一断LSA立刻泛洪几秒内就能重新算路。但收敛快也有代价泛洪会消耗带宽和CPU。所以大型网络里要做区域划分把泛洪限制在区域内部区域之间只交换汇总路由。这就是OSPF的分层设计骨干区域Area 0负责中转其他区域挂在骨干区域上。5. 实操从零搭一个能跑OSPF的小网络5.1 拓扑设计与地址规划假设有三台路由器R1、R2、R3串成一条线各自还挂一个业务网段。地址规划如下设备接口地址说明R1G0/010.0.12.1/30连R2R1G0/1192.168.1.1/24业务网段AR2G0/010.0.12.2/30连R1R2G0/110.0.23.1/30连R3R3G0/010.0.23.2/30连R2R3G0/1192.168.3.1/24业务网段C规划原则互联链路用/30省地址业务网段用/24够用且好记。所有设备都划进Area 0先跑通单区域再考虑多区域。5.2 逐台配置与关键参数说明以R1为例配置思路是先配接口地址再启用OSPF把网段宣告进去。interface G0/0 ip address 10.0.12.1 255.255.255.252 ! interface G0/1 ip address 192.168.1.1 255.255.255.0 ! router ospf 1 router-id 1.1.1.1 network 10.0.12.0 0.0.0.3 area 0 network 192.168.1.0 0.0.0.255 area 0几个关键点router-id必须唯一通常用环回口地址或手动指定。不指定的话路由器会自己选一个可能导致意外。network命令里的掩码是反掩码不是子网掩码。0.0.0.3对应/300.0.0.255对应/24。这个反掩码是新手最容易写错的地方。宣告的网段要精确别图省事宣告个大网段容易把不该跑OSPF的接口也拉进来。R2和R3照葫芦画瓢注意router-id各不相同互联网段两边都要宣告。5.3 验证邻居起来了吗路由学到了吗配完先别急着ping业务地址按顺序验证看邻居状态show ip ospf neighbor应该看到对方是Full。看路由表show ip route ospf应该看到从对方学来的业务网段前面标着O。再ping从R1的192.168.1.1 ping R3的192.168.3.1应该通。如果邻居没起来回到4.1节列的那几个原因逐个排查。如果邻居起来了但路由没学到检查network宣告是否覆盖了对应网段。提示验证时养成“从下往上”的习惯——先看接口up没up再看邻居再看路由表最后才ping。跳步排查容易绕远路。6. 常见问题与排查技巧实录6.1 路由环路数据包在打转路由环路是路由领域最经典的问题。现象是ping一个地址TTL超时抓包看到包在两个接口之间来回跳。原因通常是双向路由不一致A认为去某网段要走BB认为要走A于是包在两者之间弹乒乓球。排查方法看两边的路由表确认去同一目的地的下一跳是否互相指向对方。检查是否有错误的静态路由或汇总路由。动态协议里检查是否配置了正确的水平分割或毒性逆转。防环机制里水平分割从某接口学来的路由不再从该接口发回去和毒性逆转把学来的路由标记为不可达再发回去是最常用的。OSPF靠区域结构和SPF算法天然防环RIP则主要靠这两招。6.2 次优路径能通但绕远了次优路径比环路隐蔽因为网络是通的只是走得不对。比如明明有直连链路流量却绕了一圈。常见原因是管理距离或度量值配置不当导致路由器选了次优的那条。排查时对比“实际走的路径”和“理论最优路径”。用traceroute看实际跳数再对照路由表算理论跳数。如果对不上就去查度量值和管理距离。我遇到过一次两条去同一目的地的静态路由一条指向专线一条指向备用链路结果因为两条管理距离都是默认的1路由器按先来后到选选了备用链路。解决办法是给备用链路的管理距离调大比如设成5让它只在专线失效时才生效。6.3 常见问题速查表现象可能原因排查动作邻居起不来区域号/认证/MTU不匹配逐项对比两端配置路由学不到network宣告遗漏检查宣告网段和反掩码能通但绕远度量值/管理距离不当对比实际与理论路径时通时不通路由震荡看日志查链路稳定性部分网段不通汇总路由黑洞检查汇总范围是否过大6.4 几条我踩坑换来的经验第一改配置前先备份。路由配置改错一行可能整个网段失联。我习惯改之前先导出当前配置改完对比差异。第二变更选在低峰期。动态路由协议收敛时会有短暂中断业务高峰期做变更风险大。第三别迷信“默认配置”。很多协议的默认计时器、默认度量值在特定场景下并不合适该调就得调。第四文档要跟上。拓扑图、地址表、路由策略改完就更新。三个月后你自己都记不清当时为什么那么配。7. 路由策略与进阶方向让流量按你的意思走7.1 策略路由不只看目的地还看来源传统路由只看目的地址策略路由PBR可以基于源地址、协议、端口等条件来决定怎么转发。比如“研发网段的流量走专线办公网段的流量走普通宽带”这就是策略路由的典型用法。配置思路是定义匹配条件ACL或前缀列表再定义动作下一跳或出接口最后应用到接口的入方向。注意策略路由优先于普通路由表匹配上了就按策略走匹配不上才查路由表。7.2 路由重分发让不同协议“互通有无”当一个网络里同时跑多种路由协议时需要重分发来让它们交换路由。比如核心跑OSPF边缘跑RIP就得在边界路由器上把RIP的路由重分发进OSPF反之亦然。重分发最容易出问题的地方是度量值转换。不同协议的度量值算法不同重分发时必须手动指定一个种子度量值否则路由可能被丢弃或形成次优路径。我的经验是重分发时配合路由过滤只放行需要的网段别一股脑全倒进去。7.3 后续可以怎么深入路由这个领域往深了走有几个方向一是大型网络的分层设计怎么划区域、怎么做汇总、怎么设计骨干二是路由安全比如认证、防欺骗三是自动化运维用脚本批量下发和校验路由配置。我个人的建议是先把单区域OSPF和静态路由玩熟再逐步扩展到多区域、重分发、策略路由。每上一个新特性都在实验环境里先跑通别直接上生产。路由这东西理论看十遍不如动手配一遍配一遍不如排一次障。真正的经验都是在“怎么又不通了”的深夜里攒出来的。最后分享一个小习惯我会给每条关键静态路由写注释标明用途和变更日期。设备配置里加注释不占资源但排障时能救命。这个习惯坚持几年下来帮我省下的时间难以计算。
阅读完成 · 觉得有帮助?
咨询建站