鄰居發現協議
出自 MBA智库百科(https://wiki.mbalib.com/)
鄰居發現協議(Neighbor Discovery Protocol,NDP)
目錄 |
鄰居發現協議是IPv6的一個關鍵協議,它組合了IPv4中的ARP、ICMP路由器發現和ICMP重定向等協議,並對它們作了改進。作為IPv6的基礎性協議,NDP還提供了首碼發現、鄰居不可達檢測、重覆地址監測、地址自動配置等功能。鄰居發現協議主要包括兩種格式的ICMP6報文:鄰居請求NS(NeighborSolicitation)和鄰居宣告NA(NeighborAdvertisement)。
當區域網中的兩台主機A與B之問通信前,A必須首先獲取B的MAC地址,主要步驟如下:
(1)A以廣播的方式向FE02::1發送一個ICMPv6NS消息,詢問B的MAC地址。f21區域網中每個節點都能接收到該Ns請求,當一個節點接收到該Ns請求後,將目標MAC地址與自身MAC地址進行比較,如果不一致,則不應答;反之,如果所請求的MAC地址與自身MAC地址相等,則回應一個鄰居宣告消息NA,表明自己就是所要請求的節點。本例中,在正常情況下,只有B回應NS請求,應答包中包含B的MAC地址。
2.鄰居宣告報文的選項
需要特別註意的是NA有3個特殊的標誌位,R表示是否是路由,s表示是否是target本機做出的宣告,O表示是否覆蓋原有的緩仔。設旨這幾個標誌位的主要目的原本是為了提高提高區域網節點1二作的效率。
通過以上的分析我們吖以看出,IPv6下的鄰居發現協議與IPv4下的ARP協議相比,在安全方面,並沒有改進。主要體現在以下幾個方面:
第一,對於NS的ICMP6報文,區域網中的任意節點,只要在區域網中監聽到,就能回覆,缺乏認證過程。所以IPv4下的ARP欺騙,在IPv6下可以利用NA欺騙代替,其原理是一樣的,此處不再重覆。
第二,相對於IPv4下的ARP應答包,NA作為IPv6下的應答包多了上述所說的3個標誌位,不可否認,在所有區域網內節點部正常工作的情況下,這3個標誌位無疑可以提高區域網節點工作的效率,但是一旦存在某個惡意節點,這3個標誌位,無疑將成為惡意節點的有力丁具首先通過R標誌位,惡意節點可以偽裝成路由,通過s標誌位,惡意節點可以偽裝成本機,對惡意攻擊最有利的要數O標誌位,惡意節點可以向被攻擊者路由表中植入虛假路由信息。因為在IPv4下,鄰居緩存表足每隔一定的時間刷新一次,惡意節點要覆蓋正確地緩存可能要發送大量的虛假應答,容易被檢測出,而在IPv6下利用0標誌覆蓋正確的緩存則只需要發送少量的虛假NA包,非常難檢測。