ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

图文并茂解释OSPF邻居关系建立失败的几种常见情况

2021-04-12 16:05:14  阅读:563  来源: 互联网

标签:图文并茂 R2 area 0.0 R1 邻居 OSPF network


最近有人遇到OSPF邻居建立不起来,本期龙哥就与大家分享个人见解。如有讲错地方或有更好的见解欢迎评论区见哈~ 


                                                 

拓扑图

图片


本期我讲以此拓扑图为基础,来演示几种常见OSPF邻居建立不起来的情况,物理层面的原来暂无法演示,比如光衰问题,网线老化等。


1

接口未宣告到OSPF进程


图片


R1关键配置如下:

#

interface GigabitEthernet0/0/0

 ip address 12.1.1.1 255.255.255.0 

#

ospf 1 

 area 0.0.0.1 

  network 1.1.1.1 0.0.0.0 

  network 12.1.1.1 0.0.0.0 

#

return

[R1-ospf-1]


R2关键配置如下:


#

interface GigabitEthernet0/0/0

 ip address 12.1.1.2 255.255.255.0 

#

#

ospf 1 

 area 0.0.0.0 

  network 2.2.2.2 0.0.0.0 

  network 24.1.1.2 0.0.0.0 

 area 0.0.0.1 

  network 12.1.1.2 0.0.0.0 

 area 0.0.0.2 

  network 23.1.1.2 0.0.0.0 

#



图片


现象:R1的OSPF邻居表为空。

原因:大家回顾一下,我们学OSPF时,有提到报文类型,是不是有个Hello包,那回顾一下,Hello是干嘛用的?  不管你学到什么P,什么E,不管你是不是大神级别,初心一定不能忘!忘了就没法玩了。Hello是用于建立和维护邻接关系。 本实例中,R2没有把G0/0/0的接口IP宣告到OSPF进程中的区域中,那么意思就是该接口也没有参与到OSPF进程,就不会去发Hello包。R2的G0/0/0不发hello包,R1就不会收到,没有收,怎么握手,怎么建立OSPF邻居呢 是吧~

解决办法:R2的接口宣告到OSPF进程中的区域1下。

图片


检查:

图片




2

接口虽然参与到OSPF进程了但被静默了



图片



R1关键配置不变,如上。


R2关键配置如下:



#

interface GigabitEthernet0/0/0

 ip address 12.1.1.2 255.255.255.0 

#

#

ospf 1 

  silent-interface GigabitEthernet0/0/0

 area 0.0.0.0 

  network 2.2.2.2 0.0.0.0 

  network 24.1.1.2 0.0.0.0 

 area 0.0.0.1 

  network 12.1.1.2 0.0.0.0 

 area 0.0.0.2 

  network 23.1.1.2 0.0.0.0 

#


图片

现象:R1的OSPF邻接表为空,R2对应接口也宣告到OSPF进程了。

原因:R2的OSPF进程下,使用了silent-interface命令用来禁止G0/0/0接口接收和发送OSPF报文。OSPF报文都不能发,更何况是Hello包了,所以邻居也就无法建立了。

解决办法:删除silient-interface命令即可。



检查:

图片




3

广播网络中,OSPF进程反掩码写错了。

  

  R1关键配置不变,如例1。

R2关键配置如下:



#

interface GigabitEthernet0/0/0

 ip address 12.1.1.2 255.255.255.0 

#

#

ospf 1 

 area 0.0.0.0 

  network 2.2.2.2 0.0.0.0 

  network 24.1.1.2 0.0.0.0 

 area 0.0.0.1 

  network 12.1.0.0 0.0.0.255 

 area 0.0.0.2 

  network 23.1.1.2 0.0.0.0 

#



现象:R1的OSPF邻接表为空

图片


原因:OSPF进程area1宣告的网络掩码写错了,宣告OSPF时,反掩码的0表示精确匹配,255表示不检查。从配置可以看出,OSPF进程精确去查找,将这个12.1.0.x宣告到进程中,但是R2没有哪一个接口属于这个网段的,所以等同于G0/0/0没有宣告到OSPF进程中。

解决办法:要么精确匹配,写4个0,即0.0.0.0,要么修改反掩码为0.0.255.255。

图片


检查:这时就有邻居了。

图片




4

两端的hello间隔和dead间隔时间不匹配


  R1关键配置不变,如例1。

 R1的hello、dead间隔时间还是默认,没有修改:

图片



  R2关键配置如下,修改了G0/0/0的OSPF hello间隔时间。

 

图片

 


R1和R2两端的Hello间隔和dead间隔不一样,会收到如下日志:

图片


我们有也可以抓包看看:

图片


图片


很明显可以看出两端的报文,hello和dead间隔时间不一致,两边设备收到对端hello报文,检查发现不一致,丢弃,于是邻居无法建立。


我们也可以使用display ospf error 更加快速地定位出问题:


图片


图片


 解决办法:

 R2的G0/0/0的Hello间隔改回默认,或者R1的G0/0/0 OSPF的Hello间隔也改为20秒。

图片


  检查:

图片


5

区域ID不一致


  R1关键配置不变,如例1。


  R2关键配置如下:

  

#

ospf 1 

 area 0.0.0.0 

  network 2.2.2.2 0.0.0.0 

  network 12.1.1.2 0.0.0.0 

  network 24.1.1.2 0.0.0.0 

 area 0.0.0.2 

  network 23.1.1.2 0.0.0.0 

#

return

[R2-ospf-1]


现象也是:R1的OSPF邻居表为空。

  

图片

分析:

排查错,有时候,如果你不知道该如何入手?建议可以从Hello报文格式来,根据报文格式,检查一下是不是哪些不匹配?

图片


现在我们再来抓包,看一下R1和R2的hello:

R1的hello包如下:

图片


R2的Hello包如下:

图片


很明显可以看出,R1和R2的区域id字段不一致,R1在区域1,R2在区域0,两边区域ID不一致,双方收到对端hello包,发现不一致,握手失败,所以邻居也就无法建立了。


当然,你也可以使用display ospf error来得快一些:

图片


解决办法:

ospf 1 

 area 0.0.0.0 

  network 2.2.2.2 0.0.0.0 

  network 24.1.1.2 0.0.0.0 

 area 0.0.0.1 

  network 12.1.1.2 0.0.0.0 

 area 0.0.0.2 

  network 23.1.1.2 0.0.0.0 

#



检查:

图片



6

认证类型活密码不一致


  R1关键配置如下:

  

interface GigabitEthernet0/0/0

[R1-GigabitEthernet0/0/0]ospf authentication-mode simple along123



  R2关键配置如下:


[R2]int g0/0/0

[R2-GigabitEthernet0/0/0]ospf authentication-mode simple along456



现象:R1的OSPF 邻居列表为空,与R2OSPF邻居建立不起来。

分析:

图片


图片


抓包的话,由于是明文,很容易看出密码不一样:

R1:

图片


R2:

图片



7

广播网络中,接口IP掩码写错了


  R1的接口IP如下:

  

#

interface GigabitEthernet0/0/0

 ip address 12.1.1.1 255.255.255.0 



  R2的接口IP如下:

  

#

interface GigabitEthernet0/0/0

 ip address 12.1.1.2 255.255.255.128 



OSPF配置均没变化。


现象:R1的OSPF邻居列表为空,建立失败。

分析:

从报文的字段去分析,广播网络中会检查掩码,发现不一致,就无法成功建立OSPF邻居,可以使用如下命令快速定位。


图片


图片


图片



图片


解决办法:修改正确的掩码即可。



8

特殊区域类型不匹配,比如stub区域


  R2的OSPF配置如下:

 

#

ospf 1 

 area 0.0.0.0 

  network 2.2.2.2 0.0.0.0 

  network 24.1.1.2 0.0.0.0 

 area 0.0.0.1 

  network 12.1.1.2 0.0.0.0 

 area 0.0.0.2 

  network 23.1.1.2 0.0.0.0 

  stub 

#

return

[R2-ospf-1]




  R3的OSPF配置如下:



#

ospf 1 

 area 0.0.0.2 

  network 3.3.3.3 0.0.0.0 

  network 23.1.1.3 0.0.0.0 

#

return

[R3-ospf-1]



现象:R2和R3无法建立OSPF邻居关系。

分析:


图片

 

可知,Hello包里面的option字段不匹配,应该是一边可以支持外部路由,一边不支持外部路由。

图片


咱们,也可以抓个包看看,到底什么情况呢?


图片



再看看R3,


图片


到这来,你应该知道配特殊区域,是需要两端都要配了吧。


解决办法:

将R3也配置为stub

[R3-ospf-1]area 2

[R3-ospf-1-area-0.0.0.2]stub 

[R3-ospf-1-area-0.0.0.2]


验证:

图片


好了,本期就与大家分享到这,当然还有很多原因导致OSPF邻居建立不起来,大家还遇到过什么情况?欢迎在评论区留下,一起交流。


标签:图文并茂,R2,area,0.0,R1,邻居,OSPF,network
来源: https://blog.51cto.com/u_15127557/2701556

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有