DHCPv6與SLAAC的差異:IPv6位址的決定方式、狀態管理、閘道與DNS及使用時機比較

IPv6終端自動取得位址的方法有DHCPv6與SLAAC。在SLAAC(無狀態位址自動設定,RFC 4862)中,終端從路由器送出的路由器通告(RA)得知鏈路的前綴,自行產生介面識別碼來組成位址。由於沒有伺服器管理哪個終端使用哪個位址,因此稱為「無狀態」。在DHCPv6(RFC 8415)中,與IPv4的DHCP相同,由伺服器決定位址並附期限出租,同時管理其記錄。不論哪種方法,預設閘道都從RA得知。此外,也有以SLAAC產生位址、只從DHCPv6接收DNS伺服器位址等資訊的「無狀態DHCPv6」組合。

項目DHCPv6SLAAC
決定位址者DHCPv6伺服器。從伺服器管理的範圍中選出並附期限出租終端自己。把從RA得知的前綴與自己產生的介面識別碼組合
狀態的管理有狀態。伺服器記錄把哪個位址租給了哪個終端無狀態。沒有記錄位址分配的伺服器
所需條件DHCPv6伺服器(位於其他鏈路時需中繼代理),以及通知終端使用DHCPv6的RA送出RA通告前綴的路由器
使用的訊息UDP(用戶端為546號,伺服器與中繼代理為547號)。基本為Solicit、Advertise、Request、Reply四次交換ICMPv6鄰居探索(NDP)的路由器請求(RS)與路由器通告(RA)
預設閘道DHCPv6不提供。使用送出RA之路由器的鏈路本地位址使用送出RA之路由器的鏈路本地位址
DNS伺服器的位址以DHCPv6的選項通知以RA的選項(RDNSS)或無狀態DHCPv6通知
介面識別碼(低64位元)由伺服器選擇由MAC位址產生的EUI-64格式,或以亂數為基礎的值。為了隱私,許多作業系統使用以亂數為基礎的值
前綴長度與委派逐一分配位址,因此/64以外的前綴也能使用。也能把整個前綴交給路由器(前綴委派,DHCPv6-PD)一般以/64前綴為前提。無法委派前綴
掌握位址的難易度可從伺服器的記錄得知哪個終端使用哪個位址。用戶端以稱為DUID的識別碼區分沒有伺服器的記錄,要得知終端的位址需查看路由器的鄰居快取等

數值為具代表性的大致參考值,會因世代或產品而異。

適用於什麼情況

DHCPv6
想管理並記錄把哪個位址分配給哪個終端的企業網路,或要把前綴分配給路由器的供應商線路(DHCPv6-PD)。不過有些終端的作業系統不具備以DHCPv6取得位址的功能,需確認是否支援。
SLAAC
像家庭或許多LAN那樣,不設伺服器、想簡單分配位址時。DNS伺服器的資訊以RA的RDNSS選項或無狀態DHCPv6補充。

常見問題

使用DHCPv6時,還需要路由器通告(RA)嗎?

需要。DHCPv6沒有通知預設閘道的機制,終端會以送出RA之路由器的鏈路本地位址作為預設閘道。此外,RA以M旗標(Managed)通知終端從DHCPv6取得位址,以O旗標(Other)通知終端從DHCPv6取得DNS伺服器等其他資訊。

什麼是無狀態DHCPv6?

位址由終端以SLAAC自行產生,只從DHCPv6伺服器接收DNS伺服器位址等位址以外之資訊的用法。伺服器不記錄把哪個位址租給哪個終端,因此稱為無狀態。以RA的M旗標為0、O旗標為1通知終端。

SLAAC如何防止位址重複?

終端在使用產生的位址之前,會以鄰居探索的機制確認沒有設備使用相同位址。這稱為重複位址偵測(DAD)。發現重複的位址不會使用。以DHCPv6取得的位址也同樣會確認。

終端會因SLAAC的位址而被追蹤嗎?

以MAC位址產生的EUI-64格式介面識別碼,不論連接哪個網路,低64位元都相同,終端容易被追蹤。因此會使用每個網路不同、看似亂數的介面識別碼(RFC 7217),以及每隔一段時間就改變的暫時位址(RFC 8981)。

理解度檢測

在IPv6中,只在同一鏈路內使用、且必定會自動設定在每個使用IPv6之介面上的鏈路本地位址,其範圍是下列何者?

  1. A2001:db8::/32
  2. Bff00::/8
  3. Cfe80::/10
查看答案與解析

正確答案:C. fe80::/10

鏈路本地位址的範圍是 fe80::/10,不會越過路由器轉送,只用於同一鏈路內的通訊。用於鄰居探索(NDP)與路由器通告的交換等,終端的預設閘道通常也是路由器的鏈路本地位址。2001:db8::/32 是為了說明與文件中的範例而保留的範圍(文件用位址)。ff00::/8 是多播位址,IPv6以多播取代廣播。

在IPv6的SLAAC(無狀態位址自動設定)中,終端產生全球單播位址的方法,下列何者正確?

  1. A向DHCPv6伺服器查詢,有期限地借用伺服器所管理的128位元位址
  2. B把路由器送出之路由器通告(RA)中所含的 /64 前綴,與自己產生的介面識別碼(低64位元)組合,確認沒有其他設備使用相同位址後再使用
  3. C把自己的IPv4位址直接放入低32位元,高位則以 fe80 開頭的值填滿
查看答案與解析

正確答案:B. 把路由器送出之路由器通告(RA)中所含的 /64 前綴,與自己產生的介面識別碼(低64位元)組合,確認沒有其他設備使用相同位址後再使用

在SLAAC中,終端從路由器定期或應要求送出的路由器通告(RA)得知該鏈路的前綴(通常為 /64)。再把它與由MAC位址產生的EUI-64格式,或以亂數為基礎之值的介面識別碼組合,產生位址。使用前,會以鄰居探索的機制確認沒有設備使用相同位址(重複位址偵測,DAD)。送出RA之路由器的鏈路本地位址成為預設閘道,而且沒有伺服器管理位址的分配,因此稱為「無狀態」。DNS伺服器的位址以RA的選項或無狀態DHCPv6通知。

MAC位址為 00-1A-2B-3C-4D-5E 的介面,由前綴 2001:db8:1:1::/64 與EUI-64格式的介面識別碼,以SLAAC產生位址。產生的位址是下列何者?

  1. A2001:db8:1:1:21a:2bff:fe3c:4d5e
  2. B2001:db8:1:1:1a:2bff:fe3c:4d5e
  3. C2001:db8:1:1:21a:2bfe:ff3c:4d5e
查看答案與解析

正確答案:A. 2001:db8:1:1:21a:2bff:fe3c:4d5e

在EUI-64格式中,把48位元的MAC位址分成高24位元與低24位元,在中間插入 FF-FE 成為64位元。插入 00-1A-2B 與 3C-4D-5E 之間後為 00-1A-2B-FF-FE-3C-4D-5E。再把第一個位元組從低位數來第2個位元(U/L位元)反轉,00 變成 02,得到 02-1A-2B-FF-FE-3C-4D-5E。以每16位元一組區分並省略各組開頭的0,為 21a:2bff:fe3c:4d5e,與前綴合併後為 2001:db8:1:1:21a:2bff:fe3c:4d5e。MAC位址出現在位址中會使終端容易被追蹤,因此現在多數作業系統使用以亂數為基礎的介面識別碼。

  1. 要從位於另一個網路的DHCP伺服器 10.0.0.5,為VLAN 20(192.168.20.0/24)的終端分配位址。為此,在作為VLAN 20預設閘道的L3交換器介面(192.168.20.1)上設定了DHCP中繼代理。下列關於中繼代理運作的敘述,何者正確?
  2. 以DHCP讓終端取得IP位址時,訊息的順序下列何者正確?

前往網路設計與維運的練習題

相關名詞的解說

SLAAC(無狀態位址自動設定)
Stateless Address Autoconfiguration的縮寫。在IPv6中,終端從路由器送出的路由器通告(RA)得知網路的前綴(通常為 /64),再與自己產生的介面識別碼組合,自動設定位址的機制。介面識別碼使用由MAC位址產生的EUI-64格式,或為了防止被追蹤而以亂數為基礎的值。使用前會以重複位址偵測(DAD)確認沒有相同的位址。
DHCP
Dynamic Host Configuration Protocol(動態主機設定協定)。為連上網路的終端,自動且有期限地分配IP位址、子網路遮罩、預設閘道、DNS伺服器等設定的協定。
IPv6
IP的第6版。把位址擴大到128位元,像 2001:db8::1 這樣,以每16位元一組、共8組的十六進位表示。標頭為40位元組的固定長度而更加單純,途中的路由器不會分割封包。與IPv4沒有相容性,因此以同時運作兩者的雙協定堆疊,以及轉換機制等方式推進移轉。
預設閘道
終端把送往其他網路之封包交給的路由器。終端以子網路遮罩判斷目的地是否在同一網路,若在外部就送給這台路由器。
DNS(網域名稱系統)
把 www.example.com 這類網域名稱與通訊所用的IP位址對應起來、由全世界的伺服器分散管理的機制。
MAC位址
在乙太網路與無線區域網路中,用來指定同一網路內設備的48位元位址。上位24位元代表製造商,在製造時分配給每個介面。
ICMP(網際網路控制訊息協定)
Internet Control Message Protocol的縮寫。用來通知IP通訊中發生之錯誤與狀態的協定。會向來源端通知無法送達目的地(Destination Unreachable)、TTL變成0(Time Exceeded)等情況。ping以回應要求與回應答覆確認能否到達對方並量測RTT,traceroute則利用Time Exceeded的通知調查路徑。在IPv6中,ICMPv6也負責鄰居探索等工作。

相關的比較