刚接手网络课设二那会儿,我以为就是把四个实验拼一块:先给接口敲个IP,再开PPP,然后写两条静态路由,最后开RIP收工。真正在模拟器里把八台路由器串成一条链,才发现这四个任务不是并列关系,而是层层叠上去的依赖链——IP配错一个掩码,后面静态路由白写;PPP两边封装不一致,接口协议状态卡在down,你连路由表的门都摸不到;RIP的network语句少写一个主类网段,隔两跳的网段就在路由表里凭空消失。这篇文章就把IP地址配置、PPP协议配置、静态路由配置、RIP动态路由配置这四块串成一条完整的施工流程,从拓扑设计、地址规划,到每条命令敲下去背后的意图,再到我踩过的那些"看起来配了但就是不通"的坑,全部摊开讲。刚接触命令行网络设备的新手能照着一路做下来,已经配过一两次但总是排错排不明白的同学,也能从故障速查表里找到对应的病灶。
1. 课设任务拆解:四个配置到底在解决什么问题
1.1 从"一条链路不通"说起
网络配置这件事,最怕的就是把它当成四个互相独立的填空题。很多同学的做法是:打开实验指导书,翻到第一部分,照着敲;敲完ping一下通了,翻到第二部分,再照着敲。结果一到综合验收,拓扑稍微复杂一点,就彻底懵了——因为他从头到尾没有建立过"数据包从A走到B要经过哪些判断"这个模型。
我习惯把整个课设看作一次"修路工程"。IP地址配置相当于给每个路口编号并划定辖区,你得先知道哪条街属于哪个区,包裹才知道往哪送;PPP协议配置相当于两段路之间那座独木桥的通行规则,桥两头必须用同一套规则握手,否则车根本开不上桥;静态路由相当于你在每个路口立一块手写路牌,明确写着"去某某区请走这条路";RIP动态路由则是让路口之间自己喊话,互相通报"我这边能到哪些区、要几站",喊话喊够了,路牌就自动生成。
这四件事的先后顺序不能乱。IP地址是一切的基础,地址错了、掩码错了、网段重叠了,后面的路由协议再正确也是垃圾进垃圾出。PPP是链路层的事,它决定这条串行链路能不能up,链路不up,接口上的IP地址就是死的,路由表里那条直连路由根本不会出现。静态路由和RIP是两种不同的路径获取方式,静态是人工指定,RIP是自动学习,课设把它们放在一起,本质上是让你对比"可控但繁琐"和"自动但收敛慢"这两种思路的取舍。
所以我的建议很直接:动手之前先在纸上画拓扑,标清楚每一段链路用什么介质、哪个网段、哪台设备当认证方。纸上有数了,命令行里才不会乱。
1.2 四个任务的依赖关系与执行顺序
把这四个任务的依赖关系理清楚,能省掉大量返工。下面这张表是我自己整理的执行顺序,也是我后来带同学做课设时反复强调的清单:
| 阶段 | 任务 | 前置条件 | 验收标准 |
|---|---|---|---|
| 第一阶段 | 拓扑搭建与地址规划 | 无 | 纸上拓扑与地址表完成 |
| 第二阶段 | 接口IP配置 | 拓扑完成 | 直连ping通,接口双up |
| 第三阶段 | PPP封装与认证 | 串行链路物理up | LCP、IPCP均为open |
| 第四阶段 | 静态路由 | 全网直连可达 | 路由表出现S条目,端到端通 |
| 第五阶段 | RIP动态路由 | 静态路由已验证 | 路由表出现R条目,断开静态仍通 |
这里有个很容易被忽略的点:第三阶段必须在第二阶段之后,但严格来说,串行链路的PPP配置和接口IP配置谁先谁后都行,只要都在同一个接口下完成即可。真正有强制顺序的是——你必须先确认链路层up,再去检查网络层。我见过太多人在接口协议状态还是down的时候,疯狂地去查路由表为什么是空的,这完全是方向错了。
另外一个容易踩的坑是:静态路由和RIP不要同时在一张拓扑里抢同一批网段。课设里常见的做法是分两轮做,第一轮只用静态路由跑通全网,第二轮清掉静态路由改RIP。如果你想偷懒两个一起开,一定要清楚管理距离的优先级——静态路由默认管理距离是1,RIP是120,同一个目的网段两者都在时,静态永远赢,RIP学来的条目根本进不了路由表。这不是配错了,是设计如此。
1.3 拓扑怎么设计才不返工
课设常见的拓扑是"三到四台路由器串联,两侧各挂一个模拟局域网"。我在实际做的时候会刻意多加一个细节:让中间那台路由器成为"汇聚点",两边分别接不同的链路类型——一边用以太网口接局域网,一边用串行口做PPP。这样做的好处是,一个拓扑里同时出现了以太网接口和串行接口、同时出现了直连网段和跨网段转发,静态路由和RIP的效果都能被清楚地观察到。
如果你用的是纯串行链路的三角形拓扑,也可以,但要注意串行链路的时钟问题。在真实设备上,DCE端必须配置时钟频率,DTE端不用;在模拟器里,有些版本会自动处理,有些需要你手动在链路的某一端敲 clock rate 64000。如果两端都没配时钟,接口状态可能一直是down,这时候你去查IP、查PPP封装,全是白费功夫。我的做法是:链路一连上,先看接口的物理状态和协议状态,两个都是up了,再往下走。
地址规划上,我强烈建议用一张表把每个网段、每个接口地址、每个环回口地址全列出来。特别是环回口——很多人只配物理接口,结果RIP实验里学不到任何路由,因为RIP只通告它知道的网段,环回口是你用来模拟"路由器背后的局域网"最方便的手段。地址规划表长这样:
| 设备 | 接口 | 地址/掩码 | 说明 |
|---|---|---|---|
| R1 | G0/0 | 192.168.10.1/24 | 左侧局域网网关 |
| R1 | S0/0/0 | 10.1.12.1/30 | 与R2互联 |
| R1 | Lo0 | 172.16.1.1/24 | 模拟R1背后业务网 |
| R2 | S0/0/0 | 10.1.12.2/30 | 与R1互联 |
| R2 | S0/0/1 | 10.1.23.2/30 | 与R3互联 |
互联链路用/30而不是/24,这是个好习惯,两个地址刚好够用,不会浪费也不会让广播域里塞进一堆用不上的地址。课设里用/24也没人扣分,但从职业习惯角度,点到点链路就该用/30。
2. IP地址配置:先把地基打平
2.1 地址规划的思路:先划网段再碰设备
我见过最常见的翻车方式,是打开模拟器就开始敲命令,敲到哪算哪。结果两台路由器互联的接口配成了不同网段,比如一边是10.1.12.1/30,另一边手滑敲成10.1.13.2/30,然后开始怀疑人生:为什么接口都是up,就是ping不通?
地址规划的核心原则只有一条:同一段链路的两端必须在同一个网段内。这句话听起来像废话,但实操里出错的概率高得惊人,尤其是在连续配置多个互联链路时,序号很容易记混。我的做法是给每段链路定一个命名规则,比如"10.1.XY.0/30,其中X和Y分别是两端路由器的编号",10.1.12.0就是R1和R2之间,10.1.23.0就是R2和R3之间。规则定下来,配的时候几乎不会错。
局域网侧网段则建议用192.168.x.0/24这种一眼能看出归属的规划,x对应路由器编号。环回口用172.16.x.1/24,专门用来模拟"这台路由器背后的业务网络",这样在后面的路由实验里,你可以直接观察"其它路由器能不能学到172.16.x.0这个网段",比只看互联网段直观得多。
还有一点:地址规划时就要想好哪些网段需要被路由协议通告出去。互联的/30网段通常要通告,环回口的/24也要通告,而某些纯本地的管理网段可能不需要。这个判断在做静态路由时体现为"要写几条route",在做RIP时体现为"要写几条network",提前想清楚,后面就不用反复改。
2.2 接口地址配置的实操与三个隐蔽坑
接口配置的命令本身极其简单,进入接口视图,敲地址和掩码,然后确认接口是开启状态:
Router> enable Router# configure terminal Router(config)# interface GigabitEthernet0/0 Router(config-if)# ip address 192.168.10.1 255.255.255.0 Router(config-if)# no shutdown Router(config-if)# exit串行口同理,把接口名换成 Serial0/0/0,地址换成互联网段的地址即可。看着简单,但这里有三个坑,我几乎每次做课设都能看到有人掉进去。
第一个坑:接口默认是关闭的。路由器的物理接口出厂或初始化状态下往往是 administratively down,你必须显式地 no shutdown。很多人敲完IP地址就去看路由表,发现直连路由没有出现,就是因为接口还关着。判断方法很直接,看接口状态那一行:如果是 administratively down,就是没开;如果是 down,那是物理层或对端的问题;只有出现 up/up,才说明链路层和物理层都正常。
第二个坑:掩码写法。有的设备接受点分十进制掩码,有的接受前缀长度,两种写法混用容易出错。255.255.255.252对应/30,255.255.255.0对应/24,这个换算要熟。我建议统一用一种写法,别一半用前缀一半用点分,改起来容易看花眼。
第三个坑:串行口的时钟。前面提过,DCE端要配时钟频率,命令是 clock rate 64000。忘记配的症状是接口物理层up但协议层down,或者两端都down。这个坑特别隐蔽,因为你在接口下看不到任何报错,只能靠状态判断。
提示:每配完一台设备的所有接口,立刻用 show ip interface brief 检查一遍。这张表会把所有接口的IP、状态、协议状态一次性列出来,比逐个接口进去看快得多,也是排错时第一个该敲的命令。
2.3 验证的三件套:ping、状态表、路径追踪
配置完不等于配置对,验证这一步千万别省。我习惯按"由近及远"的顺序验证:先ping自己接口的地址(确认协议栈正常),再ping直连对端(确认链路和地址都对),最后ping环回口(确认整条路径)。
第一个命令是 show ip interface brief,看的是"配置状态"。所有应该up的接口都必须是up/up,IP地址必须和规划表一致。这一步不做,后面所有排错都是在流沙上盖楼。
第二个命令是 ping,看的是"连通性"。直连ping不通,原因基本就跑不出三个:地址不在同网段、接口没开、串行链路时钟或封装问题。这时候不要急着去查路由,路由根本不参与直连通信。
第三个命令是 traceroute,看的是"路径"。在静态路由和RIP配置完成后,traceroute能看到数据包一跳一跳经过了哪些路由器。如果路径和预期不符——比如本该走R2却绕到了R3——那就是路由配置里出现了次优路径或者路由环路,这是后面两章要重点解决的问题。
我个人的习惯是,每完成一个阶段的配置,就在纸上把验证结果记一笔:哪些网段通了、哪些没通、路由表里有几条条目。等到最后一个阶段出问题,回头一对比,就能立刻判断是"新配置引入的问题"还是"老配置本来就漏了"。
3. PPP协议配置:串行链路的封装与认证
3.1 PPP到底比HDLC多了什么
很多同学做完PPP实验,唯一的感受就是"多敲了两条命令",并不清楚它为什么存在。这里必须说清楚,否则认证部分的配置你只能死记硬背。
串行链路的默认封装在多数设备上是HDLC的一个厂商私有版本。它能干活,但有两个明显的短板:一是不同厂商的实现不兼容,两边设备如果不是同一家,链路根本起不来;二是它只做最基础的帧定界,没有认证、没有协商、没有多协议支持。
PPP就是来解决这些问题的。它把一条物理链路拆成三层来看:最底下是物理层,中间是LCP(链路控制协议),负责链路的建立、配置、测试和拆除;上面是NCP(网络控制协议族),其中IPCP负责协商IP地址等参数。你在接口下敲 encapsulation ppp 之后,链路会经历"链路建立→认证(可选)→网络层协商→打开"四个阶段,用 show interfaces serial 0/0/0 能看到 LCP Open、IPCP Open 这样的状态。只要有一个阶段没过,接口协议状态就不会是up。
理解了这套分层,排错就有了方向:链路卡在LCP,说明两端封装不一致或者底层不通;卡在认证,说明用户名密码或者认证方式对不上;卡在IPCP,说明IP地址协商有问题,通常是两端地址冲突或没配地址。这三类问题在课设里都会出现,症状各不相同,但如果你只知道"敲了encapsulation ppp就该通",那就只能瞎试。
3.2 封装配置与链路状态确认
PPP配置的第一步就是把两端接口的封装都改成ppp:
Router(config)# interface Serial0/0/0 Router(config-if)# encapsulation ppp Router(config-if)# exit关键在于两端必须同时改。如果只改了一端,另一端还是默认封装,链路的LCP协商就会失败,接口状态会反复在up和down之间跳,或者干脆协议状态一直down。这个现象在模拟器里特别常见,因为很多人习惯只在一台设备上敲命令,敲完发现不通,再去看对端,才发现漏了。
配置完成后,用 show interfaces serial 0/0/0 看详细状态。重点看几行:第一行是 Serial0/0/0 is up, line protocol is up,两个up缺一不可;往下找 LCP 状态,应该是 Open;再找 IPCP 状态,也应该是 Open。如果 LCP 显示的是 Listen 或者 Closed,那就是协商没成功。
注意:在只配了 encapsulation ppp 而没有配认证的情况下,链路应该能直接进入 IPCP Open。如果这时候就起不来,先别怀疑认证配置,先怀疑两端封装不一致、时钟没配、或者串口线缆类型不匹配。
还有个小细节值得说:PPP的协商过程是有超时重传的,配置改完之后链路可能需要几秒到十几秒才能稳定。新手容易犯的错是改完立刻看状态,看到没up就继续改,越改越乱。我的习惯是改完等十秒,敲一次 show interfaces,不行再等,最多等三十秒,超过这个时间还没起来,才说明是真有问题。
3.3 PAP与CHAP认证:配置差异与踩坑记录
认证是PPP最有价值的部分,也是课设里最容易丢分的部分。两种认证方式,PAP和CHAP,配置思路相似但对端要求不同,这个差异必须搞清楚。
PAP是明文两次握手。被认证方直接把用户名密码发过去,认证方比对本地数据库。配置上,认证方要做两件事:在接口下指定认证方式和认证用的数据库,以及在本机建立对端的用户名密码条目。
认证方 R1: R1(config)# username R2 password lab123 R1(config)# interface Serial0/0/0 R1(config-if)# ppp authentication pap R1(config-if)# exit 被认证方 R2: R2(config)# interface Serial0/0/0 R2(config-if)# ppp pap sent-username R2 password lab123CHAP是三次握手的挑战应答,认证方发随机挑战,被认证方用密码做哈希后回传,全程密码不在链路上传输。配置差异在于被认证方不需要发送用户名密码明文,而是需要让本机的hostname和密码与认证方数据库里的条目对应:
认证方 R1: R1(config)# username R2 password lab123 R1(config)# interface Serial0/0/0 R1(config-if)# ppp authentication chap R1(config-if)# exit 被认证方 R2: R2(config)# hostname R2 R2(config)# username R1 password lab123 R2(config)# interface Serial0/0/0 R2(config-if)# ppp chap hostname R2 R2(config-if)# ppp chap password lab123这里有三个坑,我几乎每次做课设都能遇到有人栽进去。
坑一:认证是单向的,默认谁配了 ppp authentication 谁就是认证方。很多同学在两台设备上都配了 ppp authentication chap,结果两边互相认证,只要有一边的数据库不完整就双向失败。课设通常只要求单向认证,先看清楚要求,别自作聪明配成双向。
坑二:CHAP的hostname必须和认证方数据库里的用户名严格一致。包括大小写。设备默认hostname可能是 Router,你数据库里写的是 R2,那认证必然失败。稳妥的做法是显式敲 ppp chap hostname 指定,别依赖默认值。
坑三:密码两端的写法必须对称。认证方写 username R2 password lab123,被认证方写 ppp chap password lab123,密码一个字都不能差。看起来是常识,但实际排错时,密码打错一个字符导致的认证失败占了相当大的比例,而且现象和"没配认证"完全一样,接口协议就是down。
排错用 debug ppp authentication 最直接,它会打印出认证的每一步,成功失败一目了然。用完记得 no debug all 关掉,否则日志会刷屏,把其它有用信息全冲走。
4. 静态路由配置:手写路径的艺术
4.1 静态路由的语法拆解与下一跳选择
静态路由的命令格式看起来简单,但每个参数都有讲究:
Router(config)# ip route 目标网络 子网掩码 下一跳地址比如R1要到达R3背后的172.16.3.0/24,下一跳是R2的10.1.12.2,命令就是 ip route 172.16.3.0 255.255.255.0 10.1.12.2。
第一个要理解的概念是"下一跳"和"出接口"的区别。写下一跳地址,路由器会通过递归查找知道该从哪个接口发出去;写出接口,路由器直接把包从那个接口扔出去。在点到点链路上,两种写法效果一样;但在以太网这种多路访问链路上,写出接口会导致路由器对每个目的地址都做ARP,效率低还有隐患。所以除非是点到点串行口,否则一律写下一跳,这是行业里的通用做法。
第二个概念是"路由是逐跳的"。R1只需要知道"去172.16.3.0要找10.1.12.2",不需要知道R2之后怎么走,那是R2的事。这个设计让路由表可以很小,但也意味着路径上的每一台路由器都必须有去往目的地的路由,缺一台就断。课设里最常见的错误就是只在R1上写了去R3的路由,忘了在R3上写回程路由,结果ping包去得来回不来。
第三个概念是"末梢网络用默认路由"。如果一台路由器只有一个出口,那它根本不需要知道具体有哪些远端网段,一条 ip route 0.0.0.0 0.0.0.0 下一跳 就够了。这在小网络里非常实用,能大幅精简配置。
4.2 浮动静态路由与备份路径的实战价值
静态路由有个天然缺陷:它不会感知链路故障。你写了走R2的路由,R2那边断了,路由表里那条条目还在,包照样往那边送,然后被丢掉。解决办法是浮动静态路由——配一条备份路径,管理距离设得比主路径大,主路径失效时备份自动顶上。
主路径(管理距离默认1): ip route 172.16.3.0 255.255.255.0 10.1.12.2 备份路径(管理距离设成50): ip route 172.16.3.0 255.255.255.0 10.1.13.2 50管理距离这个数值的含义是"可信度",越小越可信。静态路由默认是1,RIP是120,所以同一个目的网段上,静态永远优先于RIP。浮动静态路由的本质就是把备份路径的可信度调低,让它平时躺在路由表外面待命,主路径消失后才被激活。
课设里如果你的拓扑有冗余链路,加上一对浮动静态路由是很好的加分项,因为它证明了你不只会照着配,还考虑了可靠性。但要注意,浮动生效的前提是主路径对应的接口真的down掉,如果只是对端设备断电但本端接口还up(比如中间隔了台交换机),浮动是不会触发的,这时候需要配合BFD之类的机制,那就超出课设范围了。
4.3 静态路由的排错逻辑:从路由表往回推
静态路由不通,排查顺序我总结成"三步往回推"。
第一步,看目的网段在不在路由表里。用 show ip route 看,如果连条目都没有,说明命令没敲对或者被更优的路由覆盖了。注意静态路由在路由表里显示为 S,默认路由是 S*,看到这两个标记才说明配进去了。
第二步,看下一跳能不能到达。如果路由表里有条目,但显示的是"递归查找失败"或者下一跳不可达,说明你写的下一跳地址本身不在任何直连网段里。这是很低级但很常见的错误——下一跳地址必须是你直连能到的地址,不能是隔了一台路由器的地址。
第三步,看回程路径。去程通了回程不通,是最典型的"半通"现象。判断方法是分别在两端做traceroute,看包走到哪一跳断掉。如果去程能到终点,回程在中间断,那就是中间某台设备缺少回程路由。
这三步做完,绝大多数的静态路由问题都能定位。剩下的一小部分,多半是掩码写错或者网段重叠,那就要回到地址规划表去核对。
5. RIP动态路由配置:让小网络自己找路
5.1 RIP的工作机制与版本选择
RIP是最经典的距离矢量协议,它的逻辑非常朴素:每隔30秒,把自己知道的全部路由信息发给邻居,邻居收到后如果发现有更短的路径就更新自己的表。衡量路径长短的指标是跳数,直连是0跳,每经过一台路由器加1,最大15跳,16跳就认为不可达。
这个设计决定了RIP的两个特点。第一是收敛慢,网络拓扑变了,得等好几个30秒周期才能传遍全网;第二是不适合大网络,15跳的上限在现代网络里几乎是玩具级别的。但课设用它恰恰合适——逻辑简单、现象明显、调试方便,你能亲眼看到路由表从只有直连条目,慢慢长出RIP学来的条目。
版本选择上,务必用version 2。RIP v1是有类路由协议,通告路由时不带子网掩码,只认A、B、C类主网段。这意味着你精心规划的/30互联网段和/24局域网,在v1眼里全都归并成主类网络,子网信息全丢。v2支持无类路由,通告时带掩码,还支持组播更新(224.0.0.9)和认证。现在还在用v1的唯一理由,是极老的设备不支持v2。
配置骨架大概是这样:
Router(config)# router rip Router(config-router)# version 2 Router(config-router)# no auto-summary Router(config-router)# network 10.0.0.0 Router(config-router)# network 192.168.10.0 Router(config-router)# passive-interface GigabitEthernet0/05.2 network语句的深坑:宣告的是接口不是网段
RIP配置里最容易出错的地方,就是 network 语句的理解。很多人以为 network 后面写的是"我要让别学到这个网段",于是想把10.1.12.0/30和10.1.23.0/30分开写两条。
错了。RIP的 network 语句作用对象是"接口",含义是"把属于这个主类网段的接口激活,让它们参与RIP收发"。它不关心你写的掩码(v1时代根本不写掩码),只认主类网络号。
所以如果你写 network 10.0.0.0,那么所有IP地址落在10.0.0.0/8范围内的接口都会被激活,一次性把10.1.12.1、10.1.23.2这些串行口全拉进来,同时它们所在的/30网段也会被通告出去。这就是为什么课设里通常一条 network 10.0.0.0 就能覆盖所有互联链路。
至于局域网侧的192.168.x.0,因为分属不同主类(192.168.10.0是C类、192.168.20.0也是C类),必须一条条写清楚。这也是个常见错误:只写了 network 192.168.10.0,忘了写 192.168.20.0,结果另一侧的局域网在所有路由器的表里都查不到。
还有一个必须敲的 no auto-summary。自动汇总的行为是把子网路由汇总成主类网络后再通告,在有类边界上会造成严重的路由黑洞。举个具体的例子:R1有172.16.1.0/24,R2有172.16.2.0/24,开启自动汇总后,R1会向R2通告"我能到172.16.0.0/16",R2信了,把所有172.16.x.x的包都发给R1,结果172.16.2.x的包绕一圈又回来了,直接形成环路。关掉自动汇总,各自老老实实通告自己的/24,问题消失。
提示:no auto-summary 这条命令在RIPv2环境下几乎是必选项,别管拓扑简单不简单,先关上再说。我见过有人因为这个开关的区别,在同样的拓扑下路由表条目数从3条变成1条。
5.3 计时器、水平分割与收敛过程观察
RIP的四个计时器值得了解一下:更新计时器30秒,每隔这么久发一次全表;失效计时器180秒,180秒没收到某条路由的更新就标记为不可用;抑制计时器180秒,不可用状态下继续压制;刷新计时器240秒,到点直接从表里删除。你可以在配置里改这些值,但课设环境下没必要,保持默认反而更容易观察。
真正有意思的是观察收敛过程。我的做法是:配好RIP后,先在R1上连续敲几次 show ip route,看路由表从只有C(直连)条目,到逐渐出现R(RIP学来)条目,中间大概需要几十秒。这个等待过程对新手很有教育意义——它会让你真切地感受到"动态路由不是瞬间生效的"。
然后做一次故障演练:把R2和R3之间的链路断开,再观察R1的路由表。你会发现RIP不会立刻删掉那条路由,而是先等180秒失效计时器,这期间包还是会往断掉的方向送。这就是距离矢量协议收敛慢的具体表现。如果在等待期间用 debug ip rip 看,能看到它不停地发更新、等更新、超时、标记、最后删除的完整过程。
水平分割是个默认开启的防环机制,规则是"从某个接口学来的路由,不再从这个接口发回去"。它的作用是防止两台路由器互相把对方教给的知识又教回去,形成计数到无穷。在点到点链路上它没什么副作用,但在帧中继这类多路访问环境里可能导致路由传不全,那时候才需要关掉。课设环境里保持默认即可。
被动接口 passive-interface 也值得提一句。它的作用是把某个接口设成"只发不收"——实际上对于局域网接口,更准确的理解是"不向这个接口发送RIP更新,但该接口所在的网段仍然会被通告"。这样做的好处是避免把RIP广播(v2是组播)发到不需要听广播的终端网段去,既节省带宽也减少安全隐患。课设里给所有面向局域网的接口加上被动,是个很专业的小细节。
6. 常见问题与排查实录
6.1 故障速查表:从现象直接定位病灶
排错这件事,最怕没有方向。下面这张表是我根据自己做课设和帮别人排错的经验整理的,按现象归类,基本覆盖了90%以上的问题:
| 现象 | 最可能的原因 | 验证命令 | 处理方式 |
|---|---|---|---|
| 接口显示 administratively down | 接口没开启 | show ip interface brief | 接口下 no shutdown |
| 接口 up,协议 down(串行口) | 时钟未配、封装不一致 | show interfaces serial | 配 clock rate 或统一 PPP 封装 |
| 直连 ping 不通 | 两端不在同网段、掩码错 | show ip interface brief | 核对地址规划表 |
| PPP 卡在 LCP 阶段 | 两端封装不一致 | show interfaces serial | 两端都改 encapsulation ppp |
| PPP 卡在认证阶段 | 用户名密码不匹配 | debug ppp authentication | 核对 hostname 与密码 |
| 静态路由条目不出现 | 下一跳不可达、命令写错 | show ip route | 检查下一跳是否直连可达 |
| 去程通回程不通 | 对端缺回程路由 | traceroute 两端对比 | 补齐反向静态路由 |
| RIP 学不到远端网段 | network 未宣告、auto-summary 开启 | show ip protocols | 补 network,关 auto-summary |
| RIP 学到主类网段而非子网 | 协议版本为 v1 | show ip protocols | 改 version 2 |
| 路由表条目反复抖动 | 存在环路或链路不稳定 | debug ip rip | 检查水平分割与冗余路径 |
用好这张表的关键,是先判断问题在"哪一层"。接口状态是物理层和链路层的事,ping直连是网络层地址的事,路由表是路径选择的事。层次判断对了,再查具体原因,效率能提高一大截。
6.2 那些文档里不写的经验
第一条经验:每次改配置前,先 show running-config 存个底。课设做到后期,拓扑复杂了,改一处经常会影响另一处。有备份的话,出了问题能快速对比差异,看看是不是自己刚才手滑改了什么。我吃过一次亏,调RIP调了半天不通,最后发现是前面配PPP时误进了一个接口,把地址改掉了。
第二条经验:串行链路的问题,八成出在两端不对称。封装不对称、认证配置不对称、时钟只配了一端、密码大小写不一致。凡是链路层起不来,第一步就是把两端接口的配置逐行对比,别猜。
第三条经验:RIP实验里一定要用环回口。只用物理互联网段做RIP,路由表里就那么两三条,看不出什么门道。每台路由器上加一个环回口模拟业务网,路由表立刻丰富起来,收敛过程、路由更新的传播路径都能看得清清楚楚。而且环回口永远up,不会因为链路抖动干扰判断。
第四条经验:清配置比重配更省时间。模拟器里做实验,做废了别硬改,直接 erase startup-config 或者 reload 不保存,从头来。硬改的代价是你永远不知道残留了哪条旧配置在捣乱。我现在的习惯是每完成一个大阶段就存一次配置,出问题就回滚到上一个存档点。
第五条经验:debug 命令是双刃剑。debug ip rip、debug ppp authentication 这些命令在排错时极其有用,但开着不管会刷屏甚至拖慢设备。养成习惯:敲debug之前先想好要看什么,看完立刻 no debug all。在模拟器里刷屏还只是烦人,在真实设备上刷屏可能直接把控制台卡死。
最后分享一个我做课设时总结的小技巧:把整个配置过程写成一份"施工清单",每一步后面留一个勾选框,配完一步打一个勾,同时记录验证结果。这份清单做完,你手里就有了一个可复现的模板,下次遇到类似拓扑,直接照着改地址就行,效率至少翻倍。更重要的是,验收答辩的时候被问到"你为什么这么配",你可以顺着清单一步步讲清楚每个决策的依据,而不是只能说"指导书上这么写的"。