天天看點

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

最近有人遇到OSPF鄰居建立不起來,本期龍哥就與大家分享個人見解。如有講錯地方或有更好的見解歡迎評論區見哈~

拓撲圖

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

本期我講以此拓撲圖為基礎,來示範幾種常見OSPF鄰居建立不起來的情況,實體層面的原來暫無法示範,比如光衰問題,網線老化等。

1、接口未宣告到OSPF程序

ospf hello時間和dead_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

#

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

現象: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下。

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

檢查:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

2、接口雖然參與到OSPF程序了但被靜默了

ospf hello時間和dead_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

#

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

現象:R1的OSPF鄰接表為空,R2對應接口也宣告到OSPF程序了。

原因:R2的OSPF程序下,使用了silent-interface指令用來禁止G0/0/0接口接收和發送OSPF封包。OSPF封包都不能發,更何況是Hello包了,是以鄰居也就無法建立了。

解決辦法:删除silient-interface指令即可。

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

檢查:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

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 hello時間和dead_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。

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

檢查:這時就有鄰居了。

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

4、兩端的hello間隔和dead間隔時間不比對

R1關鍵配置不變,如例1。

R1的hello、dead間隔時間還是預設,沒有修改:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

R2關鍵配置如下,修改了G0/0/0的OSPF hello間隔時間。

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)
ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

R1和R2兩端的Hello間隔和dead間隔不一樣,會收到如下日志:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

我們有也可以抓包看看:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)
ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

很明顯可以看出兩端的封包,hello和dead間隔時間不一緻,兩邊裝置收到對端hello封包,檢查發現不一緻,丢棄,于是鄰居無法建立。

我們也可以使用display ospf error 更加快速地定位出問題:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)
ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

解決辦法:

R2的G0/0/0的Hello間隔改回預設,或者R1的G0/0/0 OSPF的Hello間隔也改為20秒。

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

檢查:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

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鄰居表為空。

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

分析:

排查錯,有時候,如果你不知道該如何入手?建議可以從Hello封包格式來,根據封包格式,檢查一下是不是哪些不比對?

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

現在我們再來抓包,看一下R1和R2的hello:

R1的hello包如下:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

R2的Hello包如下:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

很明顯可以看出,R1和R2的區域id字段不一緻,R1在區域1,R2在區域0,兩邊區域ID不一緻,雙方收到對端hello包,發現不一緻,握手失敗,是以鄰居也就無法建立了。

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

ospf hello時間和dead_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

#

檢查:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

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鄰居建立不起來。

分析:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)
ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

抓包的話,由于是明文,很容易看出密碼不一樣:

R1:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

R2:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

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鄰居,可以使用如下指令快速定位。

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)
ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)
ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)
ospf hello時間和dead_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鄰居關系。

分析:

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

可知,Hello包裡面的option字段不比對,應該是一邊可以支援外部路由,一邊不支援外部路由。

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

咱們,也可以抓個包看看,到底什麼情況呢?

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

再看看R3,

ospf hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

到這來,你應該知道配特殊區域,是需要兩端都要配了吧。

解決辦法:

将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 hello時間和dead_OSPF鄰居關系建立失敗的幾種常見情況(太實用了!)

好了,本期就與大家分享到這,當然還有很多原因導緻OSPF鄰居建立不起來,大家還遇到過什麼情況?歡迎在評論區留下,一起交流。