原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://jeffyyko.blog.51cto.com/28563/162407
這是《一起學DHCP》系列的第三節。
上節中,我們提到了APIPA,這節里我們將詳細講解有關APIPA的相關知識點。當我們將網卡屬性設置為自動獲取后,如果客戶端在一定時間內無法找到并從DHCP服務器或PPP協議獲取到IP地址,那么系統就自動啟用一種備選方案,也就是使用APIPA給客戶端臨時分配一個169.254.X.X的IP地址,具體范圍是169.254.0.1—169.254.255.254,子網掩碼均為255.255.0.0。這里的APIPA為Automatic Private IP Addressing的縮寫,即為自動專用IP尋址, 當系統接入網絡后,且長時間無法獲取到IP地址,系統為了減少性能消耗(盡管這種消耗微乎其微),就會采取這種措施來避免永不休止的查找。這是一種應急的機制,作用并不是簡單的分配一個IP,請注意這個名稱最后的單詞,IP Addressing,而并非IP Address。那這又有什么區別呢?稍后就會講到。
我們先來看一個例子這里我模擬了一個客戶端無法聯系到DHCP服務器的場景,此時客戶端獲取到了一個169.254.X.X的IP地址。如下圖:
這里請注意兩個地方:
1、我使用的查詢命令是ipconfig /all。大家都知道用這個命令可以把所有的重要參數都查詢出來,包括IP地址、掩碼、網關、DNS、MAC等等。但在上圖中只有IP地址、掩碼和MAC,并沒有網關、DNS。原因是因為APIPA分配的網絡信息只包含IP地址和子網掩碼,比武其他。
2、請注意IP地址前的名稱是“Autoconfiguration IP Address”,而不是正常情況下的“IP Address” 。從這點上我們也可以區別IP地址的來源。
還記得剛才那個問題嗎?為什么DNS可以獨立配置呢?其實也是出于這個的考慮。我們可以為APIPA手工設置一個DNS地址。還是剛才的環境,我們為這個地址
169.254.155.85配置一個DNS,1.1.1.1 。如下圖:
通過 ipconfig /all 查詢。如下圖:
可以看到,我們為這個地址設置的DNS生效了。那我們是否可以自己定義在這個IP呢?當然可以。在【備用配置】選項卡里,我們還可以手工設置IP地址。如下圖:
別的信息我沒有填寫,其實都是一樣的。通過這樣的設置,其目的在于當DHCP服務器不可用,系統會將此地址分配給該網卡,而不會使用169.254這樣的地址。
其實這個功能非常好用。如何使用?先來看一個場景,大家也一定都遇到過。
有這么一個客戶,在家時筆記本連接路由器并通過ADSL上網,為網卡設置了一個固定IP地址192.168.1.1。在公司,內網部署了DHCP,此時會從DHCP服務器獲取一個10.0.0.10的IP,這樣有兩套不同的網絡配置,如何做到兩邊都能順利使用呢?通常的解決辦法,或是手動修改地址,或是通過第三方軟件輔助切換。但如果將192.168.1.1的IP設置在上圖的選項中,那么在家的時候由于沒有DHCP,則會自動使用這個地址,在公司,這個地址會被忽略掉,因為存在可用的DHCP服務器,客戶端可以直接獲取IP地址。這樣一來用戶就不用來回切換了,也不必使用第三方軟件,基本可以做到無縫連接。有機會的話,還是希望大家可以試一下這個方法。
我們再回到APIPA上來。對于默認分配的169.254這樣的IP,和我們手工設置的有什么區別呢?大家千萬不要看到網卡連接圖標上有一個感嘆號就覺得網絡肯定有什么問題。其實不然,我們來做個測試就知道了。這樣有兩臺主機,主機名分別是win2k3和XP2,都接在一個交換機上。由于網內沒有DHCP服務器,自然都是通過APIPA獲取IP地址。分別查看一下兩臺主機上的IP地址。如下圖:
Win2k3:
XP2:
在XP2上PING一下Win2k3。如下圖:
網絡訪問測試。如下圖:
訪問Win2k3的C盤。如下圖:
可見,盡管是169.254之類的IP,但其實和我們手動設置的沒有什么區別,只是似乎在一個局域網內這樣的客戶端的最大數量有一個限制,好像是要少于25臺,這個我沒有測試過,還沒有這樣的環境,所以無法得知這個限制是否存在。
我們也可以在注冊表中將APIPA這個功能禁止掉,可以針對某個網卡,也可以針對全部的網卡。打開注冊表后,請定位到以下位置:HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\這個下面會對應當前網卡的標識符,在相應的標記符下新增一個名為 IPAutoconfigurationEnabled
的DWORD值,并將其值設為十六進制的0即可。修改完成后重啟才能生效。如果想禁用全部網卡的這個功能,則在interfaces下增加相同的鍵值。關于禁用APIPA的方法算是個補充知識,稍作了解即可。
還記得之前提到過有關IP Addressing的問題嗎?為什么這里是addressing 而不是address呢? 當默認使用APIPA獲取一個169.254的地址后,系統并非就這樣一直使用這個地址,而是會每隔一段時間就會向網內發送DHCP DISCOVER數據包,這個間隔時間大約是5分鐘。在此期間,系統還會隨機進行DHCP服務器的查詢,如果查詢到DHCP并獲得了一個IP,那么就會將169.254的IP釋放掉。從這里我們可以看到,APIPA提供的是一套冗余IP配置和尋址的結合方案,顯然這里使用addressing比address意義更廣泛。我們從協議層面來加深一下理解:
主機啟動后,就會發送DHCP Discover包查詢DHCP。如下圖:
很顯然,由于沒有找到DHCP服務器,所以就會得到169.254的IP,但并不表示以后都不在搜索DHCP了,默認情況下會每隔5分鐘進行一次集中的查詢,其余時間也會進程查詢,但由于還有別的程序或者協議在運行,所以就顯得不那么集中。如下圖:
到此為止,有關APIPA相關的一些知識點就說完了,下一節會講到DHCP服務器的安裝和配置。
謝謝!
轉自:http://jeffyyko.blog.51cto.com/28563/162407
原創文章,作者:s19930811,如若轉載,請注明出處:http://www.www58058.com/1559