天天看點

DHCPv6原理與實驗(華為裝置)

定義:

IPv6動态主機配置協定DHCPv6(Dynamic Host Configuration Protocol for IPv6)是針對IPv6編址方案設計,為主機配置設定IPv6位址/字首和其他網絡配置參數。

DHCPv6是一種運作在用戶端和伺服器之間的協定,與IPv4中的DHCP一樣,所有的協定封包都是基于UDP的。但是由于在IPv6中沒有廣播封包,是以DHCPv6使用多點傳播封包,用戶端也無需配置伺服器的IPv6位址。

IPV6位址配置設定類型:

IPv6協定具有位址空間巨大的特點,但同時長達128比特的IPv6位址又要求高效合理的位址自動配置設定和管理政策。

目前IPv6位址的配置設定方法有以下幾種:

• 手動配置。手動配置IPv6位址/字首及其他網絡配置參數(DNS、NIS、SNTP伺服器位址等參數)。

• 無狀态自動位址配置設定。由接口ID生成鍊路本地位址,再根據路由通告封包RA(Router Advertisement)包含的字首資訊自動配置本機位址。

• 有狀态自動位址配置設定,即DHCPv6方式。DHCPv6又分為如下兩種:

  1. DHCPv6有狀态自動配置設定。DHCPv6伺服器自動配置設定IPv6位址/PD字首及其他網絡配置參數(DNS、NIS、SNTP伺服器位址等參數)。
  2. DHCPv6無狀态自動配置設定。主機IPv6位址仍然通過路由通告方式自動生成,DHCPv6伺服器隻配置設定除IPv6位址以外的配置參數,包括DNS、NIS、SNTP伺服器等參數。

DHCPv6基本架構:

DHCPv6原理與實驗(華為裝置)

DHCPv6基本協定架構中,主要包括以下三種角色:

  1. DHCPv6 Client:

    DHCPv6用戶端,通過與DHCPv6伺服器進行互動,擷取IPv6位址/字首和網絡配置資訊,完成自身的位址配置功能。

  2. DHCPv6 Relay:

    DHCPv6中繼代理,負責轉發來自用戶端方向或伺服器方向的DHCPv6封包,協助DHCPv6用戶端和DHCPv6伺服器完成位址配置功能。一般情況下,DHCPv6用戶端通過本地鍊路範圍的多點傳播位址與DHCPv6伺服器通信,以擷取IPv6位址/字首和其他網絡配置參數。如果伺服器和用戶端不在同一個鍊路範圍内,則需要通過DHCPv6中繼代理來轉發封包,這樣可以避免在每個鍊路範圍内都部署DHCPv6伺服器,既節省了成本,又便于進行集中管理。

    隻有當DHCPv6用戶端和DHCPv6伺服器不在同一鍊路範圍内,或DHCPv6用戶端和DHCPv6伺服器無法單點傳播互動的情況下,才需要DHCPv6中繼代理的參與。

  3. DHCPv6 Server:

    DHCPv6伺服器,負責處理來自用戶端或中繼代理的位址配置設定、位址續租、位址釋放等請求,為用戶端配置設定IPv6位址/字首和其他網絡配置資訊。

DHCPv6基本概念:

一、多點傳播位址

• 在DHCPv6協定中,用戶端不用配置DHCPv6 Server的IPv6位址,而是發送目的位址為多點傳播位址的Solicit封包來定位DHCPv6伺服器。

• 在DHCPv4協定中,用戶端發送廣播封包來定位伺服器。為避免廣播風暴,在IPv6中,已經沒有了廣播類型的封包,而是采用多點傳播封包。DHCPv6用到的多點傳播位址有兩個:

  1. FF02::1:2(All DHCP Relay Agents and Servers):所有DHCPv6伺服器和中繼代理的多點傳播位址,這個位址是鍊路範圍的,用于用戶端和相鄰的伺服器及中繼代理之間通信。所有DHCPv6伺服器和中繼代理都是該組的成員。
  2. FF05::1:3(All DHCP Servers):所有DHCPv6伺服器多點傳播位址,這個位址是站點範圍的,用于中繼代理和伺服器之間的通信,站點内的所有DHCPv6伺服器都是此組的成員。

二、UDP端口号

• DHCPv6封包承載在UDPv6上。

• 用戶端偵聽的UDP目的端口号是546。

• 伺服器、中繼代理偵聽的UDP端口号是547。

三、DHCP唯一辨別符(DUID)

• DHCP裝置唯一辨別符DUID(DHCPv6 Unique Identifier),每個伺服器或用戶端有且隻有一個唯一辨別符,伺服器使用DUID來識别不同的用戶端,用戶端則使用DUID來識别伺服器。

• 用戶端和伺服器DUID的内容分别通過DHCPv6封包中的Client Identifier和Server Identifier選項來攜帶。兩種選項的格式一樣,通過option-code字段的取值來區分是Client Identifier還是Server Identifier選項。

四、身份聯盟(IA)

• 身份聯盟IA(Identity Association)是使得伺服器和用戶端能夠識别、分組和管理一系列相關IPv6位址的結構。每個IA包括一個IAID和相關聯的配置資訊。

• 用戶端必須為它的每一個要通過伺服器擷取IPv6位址的接口關聯至少一個IA。用戶端用給接口關聯的IA來從伺服器擷取配置資訊。每個IA必須明确關聯到一個接口。

• IA的身份由IAID唯一确定,同一個用戶端的IAID不能出現重複。IAID不應因為裝置的重新開機等因素發生丢失或改變。

• IA中的配置資訊由一個或多個IPv6位址以及T1和T2生存期組成。IA中的每個位址都有首選生存期和有效生存期。

• 一個接口至少關聯一個IA,一個IA可以包含一個或多個位址資訊。

DHCP封包結構:

DHCPv6原理與實驗(華為裝置)
  1. msg-type:1位元組,表示封包的類型,取值為1~13。
  2. transaction-ID:3位元組,DHCPv6互動ID,也叫事務ID,用來辨別一個來回的DHCPv6封包互動。例如Solicit/Advertise封包為一個互動。Request/Reply封包為另外一個互動,兩者有不同的事務ID。 互動ID特點如下:

    • 互動ID是DHCPv6用戶端生成的一個随機值,DHCPv6用戶端應當保證互動ID具有一定的随機性。

    • 對于DHCPv6伺服器響應封包和相應的請求封包,兩者互動ID保持一緻。

    • 如果是DHCPv6伺服器主動發起的會話封包,則互動ID為0。

  3. Options:可變長度,表示DHCPv6的選項字段。此字段包含了DHCPv6伺服器配置設定給IPv6主機的配置資訊,如DNS伺服器的IPv6位址等資訊。

封包類型:

DHCPv6原理與實驗(華為裝置)

DHCPv6工作流程:

DHCPv6伺服器為用戶端配置設定位址/字首的過程分為兩類:

  1. 互動兩個消息的快速配置設定過程
  2. 互動四個消息的配置設定過程

互動2個消息快速配置設定過程:DHCP上的改進,提高效率。

DHCPv6原理與實驗(華為裝置)
  1. DHCPv6用戶端在發送的Solicit消息中攜帶Rapid Commit選項,辨別用戶端希望伺服器能夠快速為其配置設定位址/字首和網絡配置參數;(多點傳播)
  2. 如果DHCPv6伺服器支援快速配置設定過程,則直接傳回Reply消息,為用戶端配置設定IPv6位址/字首和其他網絡配置參數。如果DHCPv6伺服器不支援快速配置設定過程,則采用互動四個消息的配置設定過程為用戶端配置設定IPv6位址/字首和其他網絡配置參數。(單點傳播)

互動四個消息的配置設定過程(和普通DHCP相似,,這裡就不重複描述了):

DHCPv6原理與實驗(華為裝置)

Solicit 封包中沒有攜帶 Rapid Commit 選項,或 Solicit 封包中攜帶 Rapid Commit 選項,但伺服器不支援快速配置設定過程,則 DHCPv6 伺服器回複 Advertise 封包,進行4個消息互動。

租約更新:

通過Renew更新位址/字首租約,DHCP中使用的是request封包,這裡單獨分出來Renew封包進行更新。

DHCPv6原理與實驗(華為裝置)

如果在T1時(0.5倍生命值)發送的Renew請求更新租約,但是沒有收到DHCPv6伺服器的回應封包,則DHCPv6用戶端會在T2(推薦值為首選生命期的0.875倍)時,向所有DHCPv6伺服器多點傳播發送Rebind封包請求更新租約。如果用戶端可以繼續使用該位址/字首,則DHCPv6伺服器回應續約成功的Reply封包,通知DHCPv6用戶端已經成功更新位址/字首租約;如果該位址/字首不可以再配置設定給該用戶端,則DHCPv6伺服器回應續約失敗的Reply封包,通知用戶端不能獲得新的租約;如果DHCPv6用戶端沒有收到伺服器的應答封包,則到達有效生命期後,用戶端停止使用該位址/字首。

快速配置設定實驗:

DHCPv6原理與實驗(華為裝置)

Sever:

全局配置:

ipv6 //開啟IPv6

dhcp enable //配置DHCP

interface GigabitEthernet0/0/0 //進入接口

ipv6 enable

ipv6 address 2002::1/64

dhcpv6 server client rapid-commit //開啟快速配置設定

dhcpv6 pool client //配置位址池

address prefix 2002::/64

excluded-address 2002::1

dns-server 3000::1

Client:(隻有路由器能夠模拟,PC不能模拟)

ipv6 //開啟IPv6

dhcp enable //配置DHCP

interface GigabitEthernet0/0/0

ipv6 enable

ipv6 address auto link-local //先必須配置本地鍊路位址才能讓接口打開

ipv6 address auto dhcp rapid-commit //開啟快速配置設定接收

抓包:單點傳播位址為鍊路本地位址

DHCPv6原理與實驗(華為裝置)

Solicit封包:

DHCPv6原理與實驗(華為裝置)

我們可以看到Rapid Commit字段存在,表示快速擷取。Transaction ID和Reply封包的相同。

Reply封包:

DHCPv6原理與實驗(華為裝置)

Transaction封包 ID和Solicit封包的相同,然後有配置設定的IPv6位址,Rapid Commit字段依然存在。

DHCPv6有/無狀态配置過程:

原理:

這是在IPv6中IPv4中DHCP很大的差别,主要是因為IPv6中不僅僅是可以通過DHCPv6或者IP位址,還可以通過RA/RD封包從自己最近的路由器擷取IP位址。 DHCPv6可以向IPv6主機提供有狀态的位址配置或無狀态的配置設定:

無狀态位址自動配置用于對連結本地位址和其他非連結本地位址兩者進行配置,方法是與相鄰路由器交換路由器請求和路由器公告消息。

有狀态位址自動配置通過使用如DHCP的配置協定,用來配置非連結本地位址。

IPv6主機自動執行無狀态位址自動配置,并在相鄰路由器發送的路由器公告消息中使用基于以下标記的配置協定(如DHCPv6):

托管位址配置标記,也稱為M标記。設定為1時,此标記訓示主機使用配置協定來擷取有狀态位址。其他有狀态配置标記,也稱為O标記。設定為1時,此标記訓示主機使用配置協定來擷取其他配置設定。結合M和O标記的值可以産生以下組合:

  1. MO=00(無DHCPv6)

    此組合對應不具有DHCPv6基礎結構的網絡。主機使用非連結本地位址的路由器公告以及其他方法(如手動配置)來配置其他設定。

  2. MO=11

    DHCPv6用于這兩種位址(連結本地位址和其他非連結本地位址)和其他配置設定。該組合稱為DHCPv6有狀态,其中DHCPv6将有狀态位址配置設定給IPv6主機。

  3. MO=01

    DHCPv6不用于配置設定位址,僅用來配置設定其他配置設定。相鄰路由器配置為通告非連結本地位址字首,IPv6主機從中派生出無狀态位址。此組合稱為DHCPv6無狀态:DHCPv6不為IPv6主機配置設定有狀态位址,但配置設定無狀态配置設定。

  4. MO=10(X,沒有這樣使用)

    在此組合中,DHCPv6用于位址配置,但不用于其他設定。因為IPv6主機通常需要使用其他設定(如域名系統(DNS)伺服器的IPv6位址)進行配置,是以這是一種不太可能的組合。

DHCPv6無狀态過程如下:

DHCPv6原理與實驗(華為裝置)
  1. 用戶端以多點傳播的方式向DHCPv6伺服器發送information-request封包,該封包中攜帶Option request選項,指定用戶端要從伺服器擷取的配置參數。
  2. 伺服器收到information-Request封包後,為用戶端配置設定網絡配置參數,并單點傳播發送Reply封包将網絡配置參數傳回給用戶端。
  3. 用戶端檢查Reply封包中提供的資訊,如果與information-Request封包中請求的配置參數相符,則按照Reply封包中提供的參數進行網絡配置;否則,忽略該參數。如果接收到多個Reply封包,用戶端将選擇最先收到的Reply封包,并根據該封包中提供的參數完成用戶端無狀态配置。

DHCPv6中繼工作原理:

DHCPv6原理與實驗(華為裝置)
  1. DHCPv6用戶端向所有DHCPv6伺服器和中繼的多點傳播位址FF02::1:2發送請求;
  2. DHCPv6中繼接收到請求後,将其封裝在Reply-forward封包的中繼消息選項(Relay Message Option)中,并将Relay-forward封包發送給DHCPv6伺服器;
  3. DHCPv6伺服器從Relay-forward封包中解析出用戶端的請求,為用戶端選取IPv6位址和其他參數,構造應答消息,将應答消息封裝在Relay-reply封包的中繼消息選項中,并将Relay-reply封包發送給DHCPv6中繼;
  4. DHCPv6中繼從Relay-Reply封包中解析出伺服器的應答,轉發給DHCPv6用戶端;

    DHCPv6用戶端根據DHCPv6伺服器配置設定的IPv6位址/字首和其他參數進行網絡配置。

中繼+有狀态位址配置實驗:

DHCPv6原理與實驗(華為裝置)

前提:

保證Relay與使用者相連網段能和Sever互通,因為他們是用這兩個IP位址進行通信的,是以需要配置對應的全球單點傳播位址和動态路由,這裡省略。

Sever上主要配置:

dhcpv6 pool guest //配置位址池,與中繼g0/0/1接口在同一網段

address prefix 2001::/64

excluded-address 2001::1

dns-server 3000::1

interface GigabitEthernet0/0/0 //進入接口下使用位址池

ipv6 enable

ipv6 address 2002::1/64

dhcpv6 server guest

中繼上主要配置:

interface GigabitEthernet0/0/0

ipv6 enable

ipv6 address 2002::2/64

interface GigabitEthernet0/0/1

ipv6 enable

ipv6 address 2001::1/64

ipv6 nd autoconfig managed-address-flag //設定M位,表示位址和字首由DHCP伺服器配置設定

ipv6 nd autoconfig other-flag //設定O位,表示DNS等參數由自己配置設定

dhcpv6 relay destination 2002::1 //設定伺服器位址

最後在伺服器上檢視是否得到了相應的IP位址:成功擷取。

DHCPv6原理與實驗(華為裝置)

因為模拟器原因DNS伺服器的位址沒有顯示,可以成功ping通伺服器:

DHCPv6原理與實驗(華為裝置)

這裡需要注意的是,DHCPv6不能配置網關,因為網關會根據中繼發送的封包的本地鍊路位址作為自己的網關。

封包抓包:

客戶與中繼之間:使用的單點傳播位址都是鍊路本地位址,因為中繼和用戶端必須在同一網段。

DHCPv6原理與實驗(華為裝置)

中繼與伺服器之間:因為在不同的網段是以使用全球單點傳播位址通信。

DHCPv6原理與實驗(華為裝置)

參考資料:華為hedex文檔

繼續閱讀