<轉載請註明出處>緩存
1. ND協議介紹安全
鄰居發現協議(Neighbor Discovery Protocol,如下稱ND協議)是IPv6的一個關鍵協議,能夠說,ND協議是IPv4某些協議在IPv6中綜合起來的升級和改進,如ARP、ICMP路由器發現和ICMP重定向等協議。固然,做爲IPv6的基礎性協議,ND還提供了其餘功能,如前綴發現、鄰居不可達檢測、重複地址檢測、地址自動配置等。服務器
1.1 IPv6協議格式網絡
Version(4-bit):IP版本,該字段值爲6併發
Traffic Class(8-bit):流量分類,與IPv4包頭的TOS相似ide
Flow Label(20-bit):流標籤,用來標記IPv6數據包的一個流wordpress
Payload Length(16-bit):有效載荷的長度,有效載荷爲緊跟IPv6包頭的數據包的其餘部分oop
Next Header(8-bit):處理選項字段,分段,安全,移動性,鬆散源路由,記錄路由等的新方式。該字段在承載ND報文時字段值爲58(ICMPv6)。該字段詳細字段值對應以下表學習
Value | Type of Header |
0 | Hop-by-Hop Options Header |
6 | TCP |
17 | UDP |
41 | Encapsulated IPv6 Header |
43 | Routing Header |
44 | Fragment Header |
50 | Encapsulating Security Payload |
51 | Authentication Header |
58 | ICMPv6 |
59 | No next header |
60 | Destination Options Header |
Hop Limit:(8-bit):定義IP數據包所能通過的最大跳數,每跳一次將此值減1spa
Source Address(128-bit):IP數據包的源地址
Destination Address(128-bit):IP數據包的目的地址
1.2 ND報文類型
ND協議定義的報文使用ICMP承載,其類型包括:路由器請求報文(RS)、路由器通告(RA)報文、鄰居請求報文(NS)、鄰居通告報文(NA)和重定向報文。
1.2.1 路由器請求報文RS Router Solicitation Message
主機啓動後,經過RS消息向路由器發出請求,指望路由器當即發送RA消息響應。RS報文格式以下圖
同時,IPv6報文頭中的字段要求以下:
1.2.2 路由器通告報文RA Router Advertisement Message
路由器週期性的發佈RA消息,其中包括前綴和一些標誌位的信息,或者以RA報文響應路由器請求報文RS。RA的報文格式以下圖。
表示發送該RA報文的路由器做爲缺省路由器的生命週期。Router Lifetime最長9000秒小時,缺省值30分鐘。若是該字段爲0時,表示該路由器不能做爲缺省路由器,但RA報文的其餘信息仍然有效。
發送NS報文後,在獲得鄰居可達性確認後,認爲鄰居可達的時間,0表示不指定。路由器在接口上經過發送RA報文,讓同一鏈路上的全部節點都使用相同的可達時間。若Reachable Time爲0,表示路由器不指定該字段參數。該值可配置,RA報文中缺省值爲0。
重傳NS報文的時間間隔,用於鄰居不可達檢測和地址解析。若該值爲0,表示路由器不指定該字段參數。該值可配置,RA報文缺省值爲0。
同時,IPv6報文頭中的字段要求以下:
1.2.3 鄰居請求報文NS Neighbor Solicitation Message
主機經過NS消息能夠獲得鄰居的鏈路層地址、檢查鄰居是否可達、重複地址檢測等。
請求目標的IP地址,不能是組播地址,能夠是本地鏈路、本地站點、全局地址。
同時,IPv6報文頭中字段要求以下:
須要說明,若是源地址爲未指定地址,則目的地址應爲被請求節點的組播地址,而且沒有源鏈路層地址選項。
1.2.4 鄰居通告報文NA Neighbor Advertisement Message
NA報文是主機對NS的響應報文,同時主機在鏈路層地址變化時也能夠主動發送NA消息,以通知相鄰節點本身的鏈路層地址或者角色發生改變。
表示NA報文發送者的角色。置位表示發送者是路由器,復位表示發送者爲主機。
置位表示爲響應單播NS發送的NA報文。在NUD探測中,S標記做爲鄰居可達性確認標記;在組播通告或非請求單播通告中,S標記必須清零,如DAD檢測中NS報文用的是被請求節點的組播地址,當地址衝突時,迴應的NA報文的S標記須要清零。
1-表示須要用目標鏈路層地址選項中的鏈路層地址,來更新鄰居緩存表。
0-只有在鏈路層地址未知時,才能用目標鏈路層地址選項來更新鄰居緩存表。
若是是針對NS而發送NA,該字段直接拷貝NS報文目標地址;若是不是針對NS發送的NA,該地址是鏈路層地址發生改變的網絡節點的IP地址。目標地址不能是組播地址。
同時,IPv6報文頭中字段要求以下:
1.2.5 重定向報文 Redirect Message
路由器經過重定向報文通知主機到目的地有更好的下一跳地址,或者通知主機目的地址爲本網段鄰居。
到達目的地址的下一跳地址。若是目標爲路由器(本地鏈路外的報文),必須使用路由器的本地鏈路地址;若是是主機(本地鏈路報文),目標地址和目的地址必須一致。
同時,IPv6報文頭中字段要求以下:
1.3 ND主要功能
1.3.1 路由器發現
路由器發現是指主機怎樣定位本地鏈路上路由器和肯定其配置信息的過程,主要包含如下三方面的內容:
在路由器通告報文RA中承載着路由器的相關信息,ND協議經過RS和RA的報文交互完成路由器發現、前綴發現和參數發現三大功能。協議交互主要有兩種狀況:主機請求觸發路由器通告和路由器按期發送路由器通告。
1.3.2 地址解析
地址解析是指某節點在知道目的節點IP地址的狀況下,肯定目的鏈路層地址的過程。
當一個節點須要獲得同一本地鏈路上另一個節點的鏈路層地址時,須要進行地址解析,該機制相似於IPv4中的ARP。 ND協議用NS和NA報文完成IPv6地址到鏈路層地址的解析,解析後的鏈路層地址和IP地址等信息用來創建節點的一個鄰居緩存表項。
1.3.3 鄰居不可達檢測NUD
鄰居不可達檢測是節點怎樣肯定鄰居不可達狀態的過程。ND協議用NS和NA報文來驗證鄰居節點的可達性。
1.3.4 重複地址檢測DAD
重複地址檢測是節點肯定即將使用的地址是否被另外一節點使用的過程。
在節點自動配置某個接口的IPv6單播地址以前,必須在本地鏈路範圍內驗證要使用的臨時地址是惟一的,而且未被其餘節點使用過。ND協議使用NS/NA報文完成該功能。
2. ND常見***
2.1 重複地址檢測DAD***
在結點使用無狀態協議自動配置時發送NS報文,NS報文中附帶告終點準備使用的地址target address,***者僞造NA報文,回覆稱該地址已被使用,迫使結點更換target address,如此反覆,結點將沒法完成無狀態協議自動配置。
針對DAD***,能夠採用ND snooping,DHCP snooping,ND detection技術防範。
DHCP snooping與IPv4同樣,經過監聽DHCP的交互進程,得到用戶的IP,MAC,鏈接的交換機端口號的綁定表項。ND snooping與前者很相似,監聽ND協議的DAD交互過程,獲取用戶的IP、MAC、Port的對應關係。
ND Detection是H3C在ND防***方面的創新技術,經過結合已經創建的綁定表項,這個綁定表項能夠是使用ND snooping,DHCP snooping,手工來進行配置的,經過比較已經獲取到的可信表項中的IP與MAC地址,對ND報文進行過濾,丟棄異常的報文。相比單純使用ACL進行的用戶綁定,ND Detection技術結合綁定表項對ND報文進行過濾,可以較好的防護ND***。
2.2 地址欺騙
地址欺騙相似IPv4中的ARP欺騙,***者僞造RS/NS/NA報文來修改受害主機或網關上受害主機的MAC地址,形成受害主機沒法與網絡進行正常的通訊。
防範方法與DAD***防範方法相似。
2.3 網絡配置參數***(RA僞造***)
RA可以攜帶不少網絡配置信息,包括默認路由器,網絡前綴列表,是否使用DHCP服務器進行有狀態地址分配等網絡配置的關鍵信息。若是受害者接收了虛假的RA信息,會形成網絡配置錯誤,從而引起欺騙***。
防範方法爲設置RA信任端口,未來自不信任端口的RA報文丟棄。
2.4 針對網關的泛洪***
經過發送大量的NS/RS報文,形成網關的表項溢出。
爲了不網關的ND表項被異常的ND報文打滿溢出形成DoS***,在網關上可以針對端口配置最大的ND表項學習數量,可以緩解此類***。
3. ND snooping實現機制
如下爲簡單翻譯結果,詳細請參考 IETF草案Control Packet Snooping Based Binding draft-bi-savi-cps-00.txt 8.3節
3.1 DAD交互過程
根據本文1.3.4重複地址檢測DAD的描述,主機在自動配置或手動配置IPv6地址時,會經過NS/NA報文檢測是否存在重複地址。詳細步驟以下:
3.2 ND snooping監聽過程
ND snooping則監聽DAD交互過程,產生MAC-IP對應表filter table.步驟以下:
3.3 ND snooping流程圖