WPAD原理介紹暨故障排查:ISA2006系列之三

 WPAD的部署原理暨故障排查

 WPADWeb Proxy Auto Discovery的縮寫,意思是Web代理服務器自動發現。WPAD的設計目的是讓瀏覽器能自動發現代理服務器,這樣用戶可以輕鬆訪問互聯網而且無需知道哪臺計算機是代理服務器。在ISA2006中,WPAD不僅能讓客戶機瀏覽器自動發現代理服務器,還可以用於防火牆客戶端自動發現代理服務器。顯然,WPAD對代理服務器的透明處理讓管理員輕鬆了不少,管理員不再需要去每臺客戶機上設置代理服務器參數了。但櫻桃好吃樹難栽,WPAD的部署並非都是一帆風順,WPAD的部署可以藉助DNS服務器或DHCP服務器,容易出問題的是用DNS服務器進行部署,尤其是在工作組環境下問題更多。今天我們就來構造一個實驗環境,爲大家剖析WPAD的工作原理以及故障原因。
實驗拓撲如下圖所示。內網計算機在工作組環境,FlorenceDNS服務器,Perth是客戶機,BeijingISA2006服務器。
DNS來實現WPAD,原理如下:
1 PerthDNS服務器發出查詢請求,要求獲得WPAD主機的IP地址。

2 Perth根據查詢到的IP地址,去WPAD主機的80端口下載WPAD.DATWSPAD.DATWPAD.DAT可用於配置客戶機瀏覽器,讓瀏覽器自動發現代理服務器;WSPAD.DAT則用於配置客戶機上的防火牆客戶端自動發現代理服務器。

從以上的原理分析,首先WPAD主機要在80端口提供wpad.datwspad.dat,有了這兩個文件,客戶機上的瀏覽器或防火牆客戶端才能實現自動配置。其次,DNS服務器要創建相關記錄,當客戶機來查詢時,將解析結果指向WPAD主機。
好,我們先來解決第一個問題,WPAD主機如何能夠提供WPAD.DATWSPAD.DAT兩個文件呢?最簡單的辦法是讓ISA服務器作WPAD主機,同時提供兩個配置文件,具體做法是,在ISA服務器上依次點擊 開始-程序-Microsoft ISA ServerISA服務器管理-配置-網絡-內部,右鍵點擊“內部”,選擇屬性,如下圖所示,切換到“自動發現”標籤,勾選“爲此網絡發佈自動發現信息”,這樣ISA就可以在80端口提供WPAD.DATWSPAD.DAT兩個文件了。
 

 

測試一下,看看ISA服務器是否提供了配置文件。如下圖所示,在瀏覽器中輸入http://10.1.1.254/wpad.dat,測試結果如下圖所示,這表明ISA服務器已經在80端口發佈了WPAD.DAT,用同樣的方法可知ISA也發佈了WSPAD.DAT
 

 

WPAD主機已經在80端口提供了WPAD.DATWSPAD.DAT,一個問題解決了,接下來我們考慮另一個問題,客戶機到底是怎麼通過DNS來查詢WPAD主機呢?具體是這樣的,客戶機向DNS發出一個查詢請求,請求解析的域名爲WPAD+X。怪了,怎麼會是X呢?X代表不確定性,如果客戶機所在的域爲itet.com,那麼客戶機就請求解析wpad.itet.com;如果客戶機沒加入域,但計算機名的後綴爲abc.com,那麼客戶機就請求解析wpad.abc.com;如果客戶機既沒有加入域,也沒有計算機名後綴,那客戶機就請求解析wpad。這裏是WPAD配置的關鍵所在,爲什麼論壇上很多管理員在域環境配置WPAD很正常,換到工作組環境就容易出問題呢?因爲域環境下有統一的名稱邊界,客戶機請求解析的域名後綴是固定的,而工作組的有組織無紀律特性決定了它的解析請求是無規律的。

下面舉個具體的例子。如下圖所示,Perth屬於工作組,Perth10.1.1.101作爲自己的DNS服務器,我們分析一下Perth是如何利用DNS來自動發現代理服務器的。
 

 

Perth的瀏覽器配置爲自動檢測發現,在IE瀏覽器中依次點擊 工具-Internet選項-連接-局域網設置,如下圖所示,勾選“自動檢測設置”。
 

 

Perth上打開瀏覽器訪問一個網站,同時啓用Ethereal抓包追蹤,抓包結果如下圖所示,我們可以看到Perth請求DNS服務器解析域名WPAD,服務器解析失敗後Perth又試圖用廣播進行名稱解析,名稱解析失敗後Perth無法找到WPAD主機去下載WPAD.DAT,代理服務器自動發現失敗。
很多朋友在論壇中發帖說自己在工作組中配置WPAD時出問題,其實問題就出在DNS服務器無法解析域名WPAD
 

 

好,WPAD配置出問題了,而且是意料之中的,那如何解決呢?兩種思路,一是想辦法讓DNS服務器能解析出域名WPAD,二是想辦法讓Perth查詢一個DNS服務器容易回答的域名。我們沿着這兩種思路來嘗試一下。

 

  DNS服務器能解析域名WPAD

WPAD這個域名爲何難以解析呢?從結構上分析,WPAD域名隸屬於根域,一般DNS服務器對根域根本就沒有解析資格,因此解析這種域名有點勉爲其難。兄弟不才,嘗試用DNS私有根來解決這個問題,在DNS服務器中右鍵點擊正向查找區域,如下圖所示,選擇“新建區域”。
 

 

出現新建區域嚮導,下一步。
 

 

新建區域類型爲主要區域,下一步。
 

 

區域名稱爲. ,這就是傳說中的根域。
 

 

根域的區域數據文件爲root.dns
 

 

不需要允許動態更新,下一步後結束私有根域創建。
 

 

創建根域後,我們需要在根域中爲WPAD主機創建A記錄,如下圖所示,選擇“新建主機”。
 

 

完全合格域名爲WPAD. IPISA服務器的內網地址。
 

 

OK,如下圖所示,WPAD記錄已經創建完畢,我們來試試能否發揮作用呢?
 

 

這次我們在Perth上安裝上防火牆客戶端,從理論上分析,防火牆客戶端需要從WPAD主機下載WSPAD.DAT,我們雙擊防火牆客戶端,切換到“設置”標籤,選擇“自動檢測到的ISA服務器”,點擊“立即檢測”。
 

 

測試結果如下,防護器客戶端成功地發現了代理服務器。
 
別忘了把自動檢測的過程用Ethereal抓下來,如下圖所示,我們可以很清楚地看到,Perth請求DNS服務器解析域名WPADDNS服務器將域名解析爲10.1.1.254(私有根起作用了),Perth接下來就去10.1.1.254下載WSPAD.DAT,用此文件將防火牆客戶端所使用的代理服務器設置爲Beijing

 

 

上次我們用瀏覽器自動檢測失敗了,這次再試試,用Ethereal抓包,結果如下圖所示。我們可以看到客戶機也是先請求DNS服務器對wpad進行域名解析,然後根據解析結果到ISA服務器請求下載WPAD.DAT,文件下載之後就可以用於配置瀏覽器了。
 

 

從上述實驗來看,通過DNS的私有根來解決WPAD域名解析在技術層面是可行的,但這種方法其實有很大隱患。創建了私有根後會影響互聯網上的域名解析,而且轉發器也不能使用,
兄弟至此也沒找到兩全其美的辦法,如果哪些弟兄有經驗,還望不吝賜教。因此,我的結論是,除非你的單位本來就要部署私有根,否則還是別用這種方法解決問題,實在是弊大於利。

 

  Perth換查詢域名
既然Perth發起的WPAD域名解析讓DNS服務器處理起來很爲難,那能否讓Perth換一個域名查詢呢?例如讓Perth查詢wpad.itet.com,這樣的域名DNS處理起來不要太輕鬆哦!問題是,如何能讓Perth更換查詢域名呢?祕密就在Perth的計算機名中,如果我們希望Perth查詢的域名是wpad.itet.com,只需將Perth的計算機名的DNS後綴改爲itet.com即可。操作具體如下,在Perth上用右鍵單擊“我的電腦”,在屬性中切換到“計算機名”標籤,如下圖所示,點擊“更改”。
 

 

在計算機名稱更改中,點擊“其他”,如下圖所示。
 

 

在計算機的DNS後綴處填寫“itet.com”,點擊確定後重新啓動計算機。
 

 

DNS服務器上創建區域itet.com,並新建一個名爲WPADA記錄,如下圖所示。現在WPAD記錄已經有了,就等着客戶機來查詢了。
 

 

在客戶機上用防火牆客戶端測試一下,如下圖所示,我們可以看到客戶機發出的查詢已經改爲wpad.itet.com了,服務器把域名解析爲ISA的內網IP,隨後客戶機就去ISA下載wspad.dat了。呵呵,如果客戶機是在域環境下,根本就無需更改計算機名後綴,想想其實還是有AD比較方便。
 

 

總結:用DNS部署WPAD在域環境下比較合適,在工作組環境下就需要進行一些調整,但無論是創建DNS私有根還是更改客戶機的計算機名後綴,都不算是非常完美的解決方案。因此我們建議在工作組環境下可以考慮用DHCP來解決這個問題,我們在下篇博文中將介紹如何利用DHCP來解決WPAD部署的問題。

本文出自 “嶽雷的微軟網絡課堂” 博客,請務必保留此出處http://yuelei.blog.51cto.com/202879/83841

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章