概述
動態主機配置協定 (DHCP) 曾設計用來處理向計算機分配IP地址和其他網路信息,以便計算機可以在網路上自動通信。通過使用 IPv6 網路,實際上不需要 DHCP 來配置地址,但是有充分的理由來使用它。DHCP for IPv6(DHCPv6) 可以(本文還包含指向英文網頁的連結。)
向 IPv6 主機提供有狀態的地址配置或無狀態的配置設定。IPv6 主機可以使用多種方法來配置地址:
無狀態地址自動配置 用於對連結本地地址和其他非連結本地地址兩者進行配置,方法是與相鄰路由器交換路由器請求和路由器公告訊息。
有狀態地址自動配置 通過使用如 DHCP 的配置協定,用來配置非連結本地地址。
IPv6 主機自動執行無狀態地址自動配置,並在相鄰路由器傳送的路由器公告訊息中使用基於以下標記的配置協定(如 DHCPv6):
託管地址配置標記,也稱為 M 標記。設定為 1 時,此標記指示主機使用配置協定來獲取有狀態地址。
其他有狀態配置標記 ,也稱為 O 標記。設定為 1 時,此標記指示主機使用配置協定來獲取其他配置設定。
結合 M 和 O 標記的值可以產生以下組合:
M 和 O 標記均設定為 0。此組合對應不具有 DHCPv6 基礎結構的網路。主機使用非連結本地地址的路由器公告以及其他方法(如手動配置)來配置其他設定。
M 和 O 標記均設定為 1。 DHCPv6 用於這兩種地址(連結本地地址和其他非連結本地地址)和其他配置設定。該組合稱為 DHCPv6 有狀態,其中 DHCPv6 將有狀態地址分配給 IPv6 主機。
M 標記設定為 0,O 標記設定為 1。DHCPv6 不用於分配地址,僅用來分配其他配置設定。相鄰路由器配置為通告非連結本地地址前綴,IPv6 主機從中派生出無狀態地址。此組合稱為 DHCPv6 無狀態:DHCPv6 不為 IPv6 主機分配有狀態地址,但分配無狀態配置設定。
M 標記設定為 1,O 標記設定為 0。在此組合中,DHCPv6 用於地址配置,但不用於其他設定。因為 IPv6 主機通常需要使用其他設定(如域名系統 (DNS) 伺服器的 IPv6 地址)進行配置,所以這是一種不太可能的組合。
類似於 DHCP for IPv4,DHCPv6 基礎結構的組件由下列各項構成:請求配置的 DHCPv6 客戶端、提供配置的 DHCPv6 伺服器、以及 DHCPv6 中繼代理(當客戶端位於不具備 DHCPv6 伺服器的子網上時,它在客戶端和伺服器之間傳遞信息)。
DHCPv6 訊息
如同 DHCP for IPv4 一樣,DHCPv6 也使用用戶數據報協定 (UDP) 訊息。DHCPv6 客戶端在 UDP 連線埠 546 上偵聽 DHCP 訊息。DHCPv6 伺服器和中繼代理在 UDP 連線埠 547 上偵聽 DHCPv6 訊息。DHCPv6 訊息的結構比 DHCP for IPv4 的結構簡單得多,DHCP for IPv4 在 BOOTP 協定中包含原始數據以支持無盤工作站。圖 1 顯示了客戶端和伺服器之間傳送的 DHCPv6 訊息的結構。
Figure 1 DHCPv6 messages between client and server (單擊該圖像獲得較小視圖)
Figure 1 DHCPv6 messages between client and server (單擊該圖像獲得較大視圖) 1 位位元組的“訊息類型”欄位指明 DHCPv6 訊息的類型。3 位位元組的“事務 ID”欄位由客戶端確定並用於對 DHCPv6 訊息一起交換的訊息進行分組。“事務 ID”欄位之後的 DHCPv6 選項用於指明客戶端和伺服器的標識、地址以及其他配置設定。有關定義的 DHCPv6 選項的列表,請參閱“DHCPv6 RFC 資源”邊欄中引用的 RFC 3315。
DHCPv6 選項的格式為類型長度值 (TLV) 格式。圖 2 顯示了 DHCPv6 選項的結構。
2 位位元組的“選項代碼”欄位指明了特定的選項。2 位位元組的“選項長度”欄位指明了“選項數據”欄位的長度,以位元組為單位。“選項數據”欄位包含選項的數據。
為中繼代理和伺服器之間交換的各種訊息提供了單獨的訊息結構,以記錄其他信息。圖 3 顯示了各種類型的訊息的結構。
Figure 2 Structure of DHCPv6 options (單擊該圖像獲得較小視圖)
Figure 2 Structure of DHCPv6 options (單擊該圖像獲得較大視圖) 1 位位元組的“躍點計數”欄位指明了已接收訊息的中繼代理數。如果其超過了配置的最大躍點計數,正在接收的中繼代理可以放棄該訊息。16 位位元組的“連結地址”欄位包含分配給連線到客戶端所在子網的接口的非連結本地地址。在“連結地址”欄位中,伺服器可以確定從中分配地址的合適的地址範圍。16 位位元組的“對等方地址”欄位包含最初傳送訊息的客戶端或之前中繼該訊息的中繼代理的 IPv6 地址。“對等方地址”欄位之外是包括“中繼訊息”選項的 DHCPv6 選項,“中繼訊息”選項包含將被中繼的訊息和其他選項。“中繼訊息”選項提供了將在客戶端和伺服器之間進行交換的訊息的封裝。
沒有為 IPv6 定義的廣播地址。因此,用於某些 DHCPv4 訊息的受限廣播地址已替換為使用 FF02::1:2 for DHCPv6 的 All_DHCP_Relay_Agents_and_Servers 地址。例如,嘗試發現網路上 DHCPv6 伺服器位置的 DHCPv6 客戶端從其連結本地地址傳送一個“要求”訊息給 FF02::1:2。如果主機子網上存在 DHCPv6 伺服器,它會接收此“要求”訊息並傳送合適的應答。更為典型的情況是,主機子網上的 DHCPv6 中繼代理接收此“要求”訊息並將其轉發給 DHCPv6 伺服器。
Figure 3 Structure of messages between relay and server (單擊該圖像獲得較小視圖)
Figure 3 Structure of messages between relay and server (單擊該圖像獲得較大視圖)
有狀態訊息交換
要獲取 IPv6 地址和配置設定的 DHCPv6 有狀態訊息交換(接收路由器公告中的 M 和 O 標記均設定為 1 時)通常由以下訊息組成:
由客戶端傳送以定位伺服器的“要求”訊息。
由伺服器傳送用以指明其可以提供地址和配置設定的“公告”訊息。
由客戶端傳送以請求特定伺服器中的地址和配置設定的“請求”訊息。
由包含地址和配置設定的請求伺服器傳送的“應答”訊息。
如果客戶端和伺服器之間存在中繼代理,該中繼代理會傳送包含來自客戶端的封裝“要求”和“請求”訊息的伺服器“中繼轉發”訊息。伺服器傳送包含為客戶端封裝的“公告”和“應答”訊息的中繼代理“中繼應答”訊息。有關 DHCPv6 訊息的完整列表,請參閱圖 4。
無狀態訊息交換
要僅獲取配置設定的 DHCPv6 無狀態訊息交換(接收路由器公告中的 M 標記設定為 0,O 標記設定為 1 時)通常由以下訊息組成:由 DHCPv6 客戶端傳送以請求來自伺服器的配置設定的“信息請求”訊息,以及由包含請求的配置設定的伺服器傳送的“應答”訊息。
對於具有配置為向 IPv6 主機分配無狀態地址前綴的路由器的 IPv6 網路,兩訊息 DHCPv6 交換可用於分配 DNS 伺服器、DNS 域名以及其他未包括在路由器公告訊息中的配置設定。
Windows 中的 DHCPv6 支持
Windows Vista™ 以及下一版本的 Windows Server®(代碼名為“Longhorn”)包括 DHCPv6 客戶端。依據接收的路由器公告訊息中的 M 和 O 標記的值,DHCPv6 客戶端嘗試基於 DHCPv6 的配置。因此,要使用 DHCPv6,必須將 DHCPv6 伺服器和中繼代理配置為維護每個 IPv6 子網,然後將您的 IPv6 路由器配置為設定這兩個標記為合適的值。如果某個給定子網存在多個公告路由器,應將它們配置為公告相同的無狀態地址前綴和 M 與 O 標記的值。運行 Windows® XP 或 Windows Server 2003 的 IPv6 主機不包括 DHCPv6 客戶端,因此會忽略接收的路由器公告中的 M 和 O 標記的值。
通過使用“netsh interface ipv6 set interface InterfaceName managedaddress=enabled”命令,可以將正在運行 Windows Vista 或 Windows Server“Longhorn”的 IPv6 路由器配置為在路由器公告中設定 M 標記為 1。類似地,通過使用“netsh interface ipv6 set interface InterfaceName otherstateful=enabled”命令可以在路由器公告中設定 O 標記為 1。
Beta 2 版本的 Windows Server“Longhorn”通過 DHCP 伺服器服務來支持 DHCPv6 中繼代理和 DHCPv6 無狀態配置。可以將用於 DHCPv6 選項的 DHCP 伺服器服務配置為分發到之前所述的兩訊息 DHCPv6 訊息交換中的所有 DHCPv6 客戶端。Microsoft 已計畫在 Beta 3 版本的 Windows Server“Longhorn”中支持 DHCPv6 有狀態操作(包括在 DHCP 管理單元中創建 IPv6 地址範圍的功能)。