Zefoconf DHCP TCP 協定 網管 網路 IP

Zeroconf定址自動化技術 享受零組態網路管理

2016-04-26
在網路管理上,Zeroconf指的是用來將各種相關組態設定管理作業予以自動化的技術。具體來說,涉及的技術與協定標準包含很多層面,例如DHCP、設定IP位址、設定電腦名稱等,本文將講解該技術在位址指派與名稱解析方面的運作方式與設定技巧。
因為169.254.0.0已經被拿來使用成這個子網路的網路位址,而169.254.255.255則是廣播位址,不能被拿來分配成一般IP位址使用。除此之外,169.254.0.0/24和169.254.255.0/24也被保留起來,以便未來能夠提供不同的用途。

IPv4的位址部分,是採用RFC 3927文件中所定義的IP位址區段,而IPv6的位址部分,則是採用RFC 4862與RFC 4291文件所定義的IP位址區段,因此並不是隨意取得一個區段的。

不過,以IP位址的指派來說,目前大多都是採用DHCP的作法,以下介紹一下如何藉由DHCP的技術自動設定好IP位址。

藉由DHCP自動設定IP位址

DHCP的全名是Dynamic Host Configuration Protocol,它在網路七層協定中屬於第七層的Application Layer。DHCP這個網路協定運作於Server-Client的架構之中,用來讓客戶端(Client Side)取得網路相關的設定。這裡指的設定包含IP位址、預設路由(Default Route)位址、DNS伺服器位址等等。而這些設定都是由DHCP伺服器所取得而來的,以便於讓客戶端可以在網路IP層中運作。

最典型的應用環境就是區域網路(LAN)。想必很多人都曾經在區域網路(或是無線網路)環境中聽到DHCP這個名詞。

DHCP協定的運作環境是以Client-Server的模型為主。Client端指的是一般電腦設備(用戶端),而Server端就是DHCP伺服器端。基本上,DHCP協定用於IPv4網路環境,也用於IPv6網路環境,而DHCP伺服器上持有一份可用的IP列表以及相關設定的資料庫。

DHCP伺服器一旦收到由客戶端發送過來的IP要求,首先會針對DHCP伺服器與DHCP客戶端之間的網路來決定如何發送回所需要的資料,接著把可用的IP位址和IP相關設定發送回給客戶端。

每次DHCP伺服器給予的IP都是有使用期限的,但是DHCP伺服器並不會幫助客戶端記錄使用期限是否到期並給予新的IP,這些都是客戶端的責任。因此,客戶端必須在使用期限到達之前,即時發送新的IP需求給DHCP伺服器端以便於取得新的IP位址與相關設定。

即便用戶端不使用DHCP來取得IP位址,也必須透過DHCP伺服器來取得相關設定,舉例來說,IPv4的用戶端也許會需要取得Link-local位址,而IPv6用戶端則可能需要取得Stateless Addressing Auto-configuration。什麼是Link-local位址呢?稍後會為各位介紹。

IP位址自動設定運作方式

DHCP協定之所以好用,優點在於能夠把指派IP位址以及各種相關設定的過程自動化,這種優點使得在網路環境中新增或移除上網設備(手機、平板或是電腦等等)變得容易許多。一旦有新的上網設備需要取得新的IP位址,這些上網設備會發送廣播封包(Broadcast)給DHCP伺服器。

當然,在同一個網路內的其他所有的設備也都會收到一模一樣的廣播封包,差異只是在於其他上網設備並不會針對這樣的廣播封包進行相對應的處理,但是DHCP伺服器會。

DHCP伺服器收到這樣的廣播封包以後,會把以下這些資訊指派回去給發送廣播封包的設備,包括可用的IP位址(包含可使用的時間)、Default Gateway(預設閘道)位址、Domain Name(網域名稱)、Name Server(名稱伺服器)、Time Server、Subnet Mask(子網路遮罩),甚至於很多其他的設定等等。

通常這樣的廣播需求在很早的時候就會發送,因為以比較好的情況來說,會希望在用戶端透過IP層協定來啟動任何網路連線之前就先把IP相關資訊與設定準備好。而當用戶端再也不需要此IP位址的時候(例如關機或是以任何情況離開當前網路),用戶端會把IP位址還給DHCP伺服器,以便於給其他用戶端所使用。

依照環境或是實作方式的不同,DHCP伺服器可能會用以下幾種不同的方式來分配(Allocate)IP位址等資訊,包括動態分配方式、靜態分配方式、自動分配方式。以下就來介紹一下這三種不同的分配方式:

動態分配方式
在動態分配方式的情況下,網路管理人員會在DHCP伺服器上設定好一個IP位址範圍以及IP位址的使用期限,以便於DHCP伺服器來分配IP位址。而DHCP伺服器可以將沒有使用的IP位址收回,以便於給其他用戶端使用。

靜態分配方式
在靜態分配方式的情況下,DHCP伺服器會根據已經定義好的MAC位址與IP位址的對應表來分配,而這個對應表格是手動輸入的。只有擁有MAC位址被對應到的用戶端才可以取得相對應的IP位址。但必須注意的是,部分DHCP伺服器並不支援靜態分配方式。

自動分配方式
在自動分配方式的情況下,DHCP伺服器一樣可以針對事先已經定義好的IP位址範圍來分配IP位址給用戶端。但是差別在於IP位址的使用是沒有期限,而且在這種方式之下,DHCP伺服器會另外存在一個表格,用來記錄每個用戶端曾經使用過哪些IP位址,以便於不分配重複的IP位址給同樣的用戶端。

何謂Link-local位址

在網路中,Link-local指的是「只用於在同一個廣播網域中的通訊」。以IPv4來說,自動化設定的時候會採用169.254.0.0/16的IP位址區段,IPv6則會採用fe80::/10的IP位址區段,而就是稍早提到的兩個區段。

也許有眼尖的讀者會思考,那Link-local位址與所謂的私有位址(Private Address)有何不同?Link-local位址用於「當找不到DHCP伺服器,或是沒有設定好靜態IP位址的時候,先暫時使用的IP位址」。也就是說,Link-local就是自動化設定好IP所使用的位址。而私有位址則是用於私有網路,必須是透過網路管理人員手動設定好的IP位址。

也因為Link-local位址的特性,因此Link-local位址傳遞的資料並不會被路由器所處理,又因為這些位址只用於私有網路(非公用網路)而且是同一個廣播網路區段,所以所佔用的IP位址區段,又不能與私有網路安排的區段互相衝突。

剛才提到IPv4在找不到DHCP伺服器時會採用Link-local位址,不然就是會使用DHCP所給予的IP位址,其中一個原因是因為IPv4在每一個介面(Interface)上並不需要支援多個位址,雖然事實上是可以這麼做的。

這讓筆者想到之前在美國工作時,曾經看過一台電腦多個介面上一共有五百個IP位址,結果導致網路程式因為Buffer Overflow當掉,所以無論是在管理網路上,或是撰寫網路的程式上,還是必須把這樣的網路環境列入考慮。

回過頭來說,除了上述的原因之外,另外一個原因是因為不是所有採用IPv4的主機都有使用分散式名稱解析的服務,例如Multicast DNS,也因此要在網路上得知其他主機自動產生的Link-local位址就沒那麼容易了。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!