ospf协议的疑难解析

ospf协议疑难解析

ospf相对于rip和eigrp而言,是一个更复杂的协议,那么对于ospf协议的排错也就相对复杂一些,问题有时候很简单,有时候也很复杂,那么当排错失败又找不到其他办法时,应该电话咨询设备厂家技术支持工程师获取更多有用信息

排错时重要步骤

不要随便打开debug命令

不要随便在运行中的路由器上使用no命令

应该把配置show run到记事本,然后修改

先备份原来配置,然后把新配置copy进去

排错时应该按照osi模型由下到上逐层排查

问题1:ospf邻居列表为空

邻居问题是ospf最常见的问题,也是排错第一步,因为如果没有邻居关系的建立,ospf就不会发送lsa,不发送lsa,spf算法就不能根据lsdb计算路由表

常见问题:

在接口没有启用ospf协议

网络第1层或第2层故障

接口配置了被动接口

acl阻止了ospf hello包

在广播多路环境中子网号/掩码不匹配

hello间隔/死亡间隔不匹配

认证类型不匹配

认证密钥不匹配

区域不匹配

一个ospf邻接存在有第二ip地质

一个ospf邻接存在于一个异步接口上

在nbma上没有定义网络类型和指定邻居

第1/2层故障

ospf运行于ip层,协议号为89,如果物理层或链路层故障,

则ospf不能发送hello包,在出现一个问题时,首先要检查的就是物理层是否有问题,然后再检查上层,这是好的思路,也符合osi参考模型的标准。

可以用show cdp neighbor确定下层是否建立

可以用show ip int s1/0检查接口线路是否为down

解决方法:

网线没有插入

网线损坏或水晶头损坏

光纤收发器损坏

室外光纤意外断裂

电信一端的wan链路出现问题,打电话咨询运营商

在背对背的连接中缺少clock语句

ospf邻居为空原因:没有在这里接口启用osppf

错误的network了网络号和配置错误的反掩码,

反掩码的配置必需是连续的。

ospf邻居表为空原因接口被定义为被动接口

当一个接口在ospf中被定义为被动接口的时候,它就禁止发送hello包,被动接口只收不发。

配置命令:进程下passive-interface1/0

确定一个接口是否被定义为被动接口:

解决方法:在ospf配置中去掉passive-interface

ospf邻居表为空-原因:acl在两边阻止了ospf组播

ospf邻居表

为空-原因:acl在两边阻止了ospf组播

ospf以组播地址224.0.0.5发送它的hello包,所有启动了ospf接口都监听这个地址,如果acl在两边路由器阻止了hello播的时候,邻居表为空。

ospf邻居表为空-原因:hello间隔/死亡间隔不匹配

2台路由器要建立邻接关系,必须匹配hello包中的间隔,

下面是用debug ip ospf hello查看的错误

字母"r"表示邻居配置,字母"c"表示我自己

可以看到邻居之前hello间隔和死亡间隔不一至

修改hello间隔,死亡间隔自动改变

修改死亡间隔,hello间隔不会改变

ospf邻居表为空-原因:认证类型不匹配

ospf使用2种认证类型,纯文本(类型1)和md5(类型2),如果一边使用明文,另一边使用md5,那么ospf将不能形成一个邻接关系。debug ip ospf adj

有时候认证类型配置正确了,但是有可能2台邻居路由器配置的密钥不一致,ospf协议规定:区域内的路由器不一定要配置相同的密钥,但是2台邻居路由器密钥要一致。

还有一种可能,就是在配置的时候错误的多输入了一个空格,而这个空格又无法显示在配置中,所以很多人会忽略这个小细节,这也成了很多开始攻击的题目,

ospf邻居为空-原因:广播环境下子网/掩码不匹配

ospf邻居为空-原因:广播环境下子网/掩码不匹配

ospf除了点到点和虚链路之外的所有网络环境中都要检查子网号和掩码。

用debug ip ospf adj查看到的掩码错误: