2012年4月30日 星期一

IPv6自動組態配置(IPv6 Auto configuration)

IPv6與IPv4相同,IP組態可以自動或手動取得,而IPv6通常強調自動定址 (Auto-configuration)的機制以便簡化主機IP位址的設定,而自動定址(Auto-configuration)機制包括了下列二種:
  • 全狀態位址自動配置(Stateful Address Auto-configuration)
  • 無狀態位址自動配置(Stateless Address Auto-configuration)

全狀態位址自動配置(Stateful Address Auto-configuration)

在傳統的IPv4中,通常利用一種動態主機組態協定(Dynamic Host Configuration Protocol,DHCP) 來實現了自動配置網路主機的IP位址及相關組態設定(如:DNS伺服器、預設閘道器)。而IPv6可以 繼續延用此種自動配置的協定與服務,讓網路主機由DHCPv6伺服器自動取得128位元的IP位址和相關組態,此種讓主機可由伺服器取得介面位址和/或其它組態參數的自動定址方式稱為全狀態自動配置 ( Stateful Address Auto-configuration )。

無狀態位址自動配置(StateLess Address Auto-configuration;SLACC)

SLAAC 是 IPv6 StateLess Address AutoConfiguration (無狀態位址自動設定) 的簡稱(RFC 2462、4862),所謂無狀態機制乃是指允許一部主機結合了本機可用資訊(介面識別碼)和從路由器公告取得的訊息(首碼)來產生自己的IP位址。換言之,當一部主機啟動IPv6時,送出多點傳送的路由器請求(Router Solicitation)、路由器回應以路由器公告(Router Advertisement)訊息來以讓主機從路由器得到首碼加上自己的介面識別碼,自動配置IPv6位址。
使用無狀態位址自動配置,通常無需手動介入就能夠改變網路中所有主機的IP位址。例如,當企業更換了連接網際網路的ISP時,將從新的ISP廠商得到一個新的全球位址首碼,ISP把這個位址首碼從它的路由器上傳送到企業路由器上。由於企業路由器將會定期性地向本地鏈接中的所有主機以多點播送方式傳送路由器公告訊息,因此企業網路中所有主機都將透過路由器公告訊息而收到新的位址首碼,因此就會自動產生新的IP位址並覆蓋舊的IP位址,這對網管人員而言,提供了相當大的方便性與效率。
全狀態 (stateful)與無狀態(stateless)在此是二個易混淆,不易搞懂的名詞,所謂全狀態或無狀態乃是指每部主機所使用的IP位址是否在於網路上有特定機器在維護其對應訊息,因此全狀態(stateful)乃是指需透過一部伺服器來動態的維護、存放保留其對應狀態的組態資訊,例如若由一部DHCP伺服器來負責維護每部機器所指派的IPv6 位址等對應狀態訊息,就稱為stateful DHCPv6。
反之,無狀態( stateless) 則是不需要動態維護的資訊,所以如果位址首碼( prefix) 是由路由器提供,因為路由器並不會存留這個對應資訊,所以這種方式就叫做 stateless autoconfiguration 或 stateless DHCPv6。

IPv6自動組態功能的運算過程啟始於芳鄰探索(Neighbor Discovery;ND)協定,芳鄰探索協定定義於RFC4861(取代了RFC2461),主要功能包括了位址解析(Address Resolution),重複位址偵測(Duplicate Address Detection;DAD)、無狀態自動位址配置(Stateless Address Autoconfiguration)--發現路由器(Router Discovery)、發現首碼(Prefix Discovery)、DNS發現(DNS Discovery)以及路由重導,不過在此我們只著重在其無狀態自動位址配置(Stateless Address Autoconfiguration)過程,
1. 首先由主機送出路由器邀請的多點傳送封包(Router Solicitation),送至相同連結網路內的所有路由器
2. 同一個連結網路的路由器收到後會回應路由器公告的多點傳送封包(Router Advertise),送至相同連結網路內的所有節點,並包含位址首碼資訊。
3. 主機節點利用收到的「首碼」和「介面識別碼」(可能是EUI-64技術計算而得或隨機產生)這二部份資料結合而自動產生128位元的位址 。
如下圖所示:
stateless_auto1


路由器公告訊息的M 位元與O位元

IPv6 透過芳鄰探索(Neighbor Discovery;ND)協定來執行自動組態配置,但最後到底是使用Stateless DHCPv6、Stateful DHCPv2或是自動配置(Auto configuration),則是由路由器公告訊息內的二個選項位元來決定。
Router Adertisements封包內的這二個旗標很重要,因為它們用來決定那一種自動組態配置方式將會被使用。

  • M: Managed Address Configuration 。這個位元如果設成是 1,則代表主機需要使用組態協定(通常為DHCP)來取得全狀態位址,亦即主機需向 DHCPv6 取得 IPv6 Prefix
  • O: Other Configuration 。這個位元如果為 1,則代表主機需要使用組態協定(通常為DHCP)來取得 其它組態資料,如DNS。
所以這二個旗標的組合將提供有四種不同的設定情況,說明如下:

M 旗標
O 旗標
涵義
0
0
Stateless Auto-configuration
這通常適用在沒有DHCPv6架構環境下,主機利用路由器RA封包的首碼自動產生IP位址,至於其它資訊(DNS)需由其它非DHCP方法來加以設定(如手動輸入)
1
1
Stateful DHCPv6
這通常應用在DHCPv6架構環境下,且您需要較嚴謹的控管網路環境下的IP和相關組態,主機直接由DHCPv6伺服器取得IP位址和其它設定參數。
0
1
Stateless DHCPv6
使用路由器的RA封包取得首碼自動產生IP位址,至於 DNS與其它參數設定等資訊將由 DHCPv6 伺服器取得
1
0
DHCPv6用以提供IP位址,但其它參數設定卻不使用DHCP,因為主機通常需要其它參數,如DNS,所以此種組合最不可能出現。

 
下圖顯示了Stateful DHCPv2的運作過程
stateful_dhcp1
 
  下圖顯示了Stateless DHCPv2的運作過程
 
stateless_dhcp1
 


至於如何控制這二個重要的旗標,就以 Cisco IOS 為例:

設定 M 旗標 : ipv6 nd managed-config-flag

清除 M 旗標:no ipv6 nd managed-config-flag

設定 O 旗標:ipv6 nd other-config-flag

清除 O 旗標: no ipv6 nd other-config-flag

 

總之,若您需要IPv6自動組態配置(而非手動靜態輸入),則您需要考量下列幾個問題以決定要使用何種自動組態配置方式才是最為合適:

  • Stateless 或 stateful (是否需要有伺服器維護IP狀態訊息)?
  • 是否需要提供用戶一些額外的組態(例如 DNS伺服器、網域名稱)?
  • 是否需要能夠架設DHCPv6 伺服器?

 

 
相關文章: