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查看到的掩码错误: