企業IT管理員IE11升級指南【14】—— IE11代理服務器配置


企業IT管理員IE11升級指南 系列:

    【1】—— Internet Explorer 11增強保護模式 (EPM) 介紹

    【2】—— Internet Explorer 11 對Adobe Flash的支持

    【3】—— IE11 新的GPO設置

    【4】—— IE企業模式介紹

    【5】—— 不跟蹤(DNT)例外

    【6】—— Internet Explorer 11面向IT專業人員的常見問題

    【7】—— Win7和Win8.1上的IE11功能對比

    【8】—— Win7 IE8和Win7 IE11對比

    【9】—— IE10與IE11的功能對比

    【10】—— 如何阻止IE11的安裝

    【11】—— 通過SCCM 2012和WSUS部署Internet Explorer 11

    【12】—— 兼容視圖列表介紹

    【13】—— 如何把IEMP遷移到GPP

    【14】—— IE11代理服務器配置

    【15】—— 代理自動配置腳本

    【16】—— 使用Compat Inspector快速定位IE兼容性問題

    【17】—— F12 開發者工具

IE11代理服務器配置

自動檢測配置

WPAD代表Web Proxy Auto-Discovery Protocol,是客戶端通過DHCP或DNS協議探測代理服務器配置腳本url的一種方式。當IE定位腳本並將腳本下載到本地之后,就可以通過該腳本 來為不同的url選擇相應的代理服務器。目前主流瀏覽器一般都支持WPAD。本文主要介紹IE中WPAD相應的工作原理以及常見WPAD相關的問題的解決 方案。

工作流程

當IE Internet Options連接中配置為自動發現設置時,IE會根據以下方式來探測WPAD.dat文件

  • DHCP(252 option)
  • DNS A record query
  • NetBios

如果DHCP配置了WPAD的地址,IE則使用該地址發送http get請求得到相應的WPAD.dat文件。即使該地址請求失敗,IE也不會繼續使用DNS探測的結果。

如果DHCP服務器沒有提供WPAD信息,DNS探測結果就會被采用。例如用戶的計算機名為pc.department.branch.example.com,IE會按照如下url順序來請求WPAD.dat文件。

如果DNS探測仍然失敗,IE則通過Netbios來請求WPAD。

當Netbios請求仍然失敗的話,IE則會嘗試直接發送網絡請求。

DHCP WPAD探測邏輯

IE通過調用DhcpRequestParams方法來得到DHCP 252 option。根據MSDN對該方法的描述,該返回結果會在本地緩存起來。

DHCP clients store data obtained from a DHCP server in their local cache. If the DHCP client cache contains all data requested in the RecdParams array of a DhcpRequestParams function call, the client returns data from its cache. If requested data is not available in the client cache, the client processes the DhcpRequestParams function call by submitting a DHCP-INFORM message to the DHCP server。

因此DHCP-INFORM消息只在第一次或者cache被清空的時候被發送。以下是一個DHCP-INFORM消息的示例。

55     10.0.0.101  255.255.255.255 DHCP        DHCP:Request, MsgType = INFORM, TransactionID = 0x33276787

56     10.0.0.1      10.0.0.101  DHCP          DHCP:Reply, MsgType = ACK, TransactionID = 0x33276787

  Frame: Number = 56, Captured Frame Length = 371, MediaType = ETHERNET

……

 - Dhcp: Reply, MsgType = ACK, TransactionID = 0x33276787

    OpCode: Reply, 2(0x02)

    Hardwaretype: Ethernet

    HardwareAddressLength: 6 (0x6)

   ……

  + MessageType: ACK - Type 53

  + ServerIdentifier: 10.0.0.1 - Type 54

  + SubnetMask: 255.255.0.0 - Type 1

  + DHCPEOptionsVendorSpecificInformation:

  + DomainName: ctest.local - Type 15

  + DomainNameServer: 10.0.0.1 - Type 6

  + WPAD: http://consto.ctest.local/WPAD.dat - Type 252

  + End:

 

另外有兩點值得注意:

  • IE只支持IPv4 DHCP的探測,不支持IPv6 DHCP探測
  • IE會嘗試通過所有的網絡卡來探測DHCP設置。

當IE得到WPAD.dat文件的地址,IE發送http get請求得到WPAD.dat文件,這與通過IE地址欄寫入url發送請求一樣。一旦WPAD.dat文件返回成功,IE會將該WPAD.dat的地址 存進注冊表HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\DefaultConnectionSettings中。另外將WPAD.dat文件寫進IE緩存目錄 Temporary Internet Files。當IE再次發送其他網頁請求的時候,IE會從注冊表中讀取WPAD.dat的地址,之后發現緩存中可以找到該地址對應的文件緩存,之后使用該 文件來確定相應的代理服務器。

常見問題

在使用IE過程中有以下兩種問題比較常見,

1. DHCP服務器上更新了252 option的WPAD.dat地址,但是IE並沒有按照新地址的WPAD.dat文件來使用代理服務器。 這種情況多數是由於IE緩存了WPAD.dat的地址在注冊表HKCU\Software\Microsoft\Windows \CurrentVersion\Internet Settings\Connections\DefaultConnectionSettings。

2. WPAD.dat文件內容被更新,但是IE並沒有按照的新WPAD.dat文件來使用代理服務器。 這種情況多數是由於IE緩存了WPAD.dat文件,沒有去請求新的WPAD.dat的內容。

對於第一個問題,我們可以執行如下步驟來清空不同級別的緩存,

清空DHCP緩存

ipconfig /release

ipconfig /renew  

清空DNS緩存

ipconfig /flushDNS  

清空注冊表WPAD.dat地址緩存

HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\DefaultConnectionSettings HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\SavedLegacySettings  

清空IE緩存

RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

對於第二個問題,可以從客戶端和服務器兩個方面去解決,

  • 在客戶端清空IE緩存。
  • 在服務器端為WPAD.dat文件添加cache-control: no-cache http header,這樣WPAD.dat文件將不會被IE緩存。即使服務器WPAD.dat內容被頻繁更新客戶端也會及時得到。不過這樣會對性能有一定的影 響,畢竟要多發送請求來得到WPAD.dat文件。

調試方法 

如果上述解決方案對你遇到的問題不起作用,也可以嘗試通過以下方式來查找問題發生的原因,對於這類問題一般的調試方法是通過Process Monitor + Networ Monitor, 通過process monitor來追蹤注冊表訪問情況和本地緩存中wpad文件的訪問情況,通過network monitor來抓包查看是否發送了wpad相關請求。

Process Monitor

Network Monitor

 

自動配置腳本

代理自動配置(Proxy auto-config,簡稱PAC) 是一種網頁瀏覽器技術,用於定義瀏覽器該如何自動選擇適當的代理服務器來訪問一個網址。

一個PAC文件包含一個JavaScript形 式的函數“FindProxyForURL(url, host)”。這個函數返回一個包含一個或多個訪問規則的字符串。用戶代理根據這些規則適用一個特定的代理其或者直接訪問。 當一個代理服務器無法響應的時候,多個訪問規則提供了其他的后備訪問方法。 瀏覽器在訪問其他頁面以前,首先訪問這個PAC文件。

要使用PAC,我們應當在一個網頁服務器上發布一個PAC文件,並且通過在瀏覽器的代理鏈接設置頁面輸入這個PAC文件的URL。

一個PAC文件是一個至少定義了一個JavaScript函數的文本文件。這個函數FindProxyForURL(url, host)有2個參數:url是一個對象的URL,host是一個由這個URL所衍生的主機名。按照慣例,這個文件名字一般是proxy.pac.

雖然大多數客戶端無論從HTTP請求返回的MIME類型是什么都能正確處理,但為了完整性和最佳的兼容性,我們應該設置網頁服務器將這個文件的MIME類型聲明為 application/x-ns-proxy-autoconfig 或者 application/x-javascript-config .

沒有什么理由偏愛一種MIME類型多一些,如果有的話,假設 application/x-ns-proxy-autoconfig 相對 application/x-javascript-config 被更多的客戶端所支持是可以理解的。因為它被定義在最初的Netscape規范里面,后者是最近才開始被使用。

一個非常簡單的PAC文件內容

function FindProxyForURL(url, host)

{

        return "PROXY proxy.example.com:8080; DIRECT";

}

 

調試方法

 

本地PAC測試

有些情況下PAC文件看上去完全沒有起作用,我們可以通過將PAC文件下載到本地,並通過本地文件的方式來訪問該PAC文件進行測試。

注意在IE11中默認禁用了本地PAC文件,進行本地PAC文件測試需要更改以下注冊表項,

Key:   HKLM\SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\ Value: EnableLegacyAutoProxyFeatures Type:  REG_DWORD Data:  1

 

通過alert()調試

通過添加alert()方法可以有效的幫助調試,例如myIpAddress()取得了一個錯誤的地址,通過alert方法可以很容易的發現類似問題。

if ((host =="proxyinfo.company.com")) {     alert("Local IP address is: " + myIpAddress()); }

alert也可以幫助定位腳本語法錯誤,例如在不同的邏輯路徑上進行alert,正確情況下會彈四個對話框,但最終僅僅彈出三個,那么我們可以判斷在第三個於第四個alert之間可能存在語法錯誤。

將PAC方法至於HTML頁面中調試

將PAC文件的function FindProxyForURL(url, host)方法置於html頁面中然后通過瀏覽器打開,可以很容易的發現腳本中的語法錯誤。

<html> < head> < script language="JavaScript">
    Insert your ENTIRE PAC file here
< /script> < /head> < body> test < /body> < /html>

PAC文件下載

由於PAC文件通常被放在一個Web服務器上,一個常見的問題就是下載問題,判斷是否存在PAC文件下載問題,可以通過瀏覽器直接輸入PAC地址嘗試下載來查看是否能夠下載成功。

手動配置

手動配置代理是一種常見的代理配置方法,通過在Internet Options – Connections – LAN Settings中指定特定代理地址來實現。

  

手動配置也經常被用來定位自動配置中代理的問題,例如懷疑自動配置中某代理存在連接問題,可以通過手動直接指定來確定是否可以成功連接。

注意:使用手動配置時要禁用自動配置和配置腳本,否則自動配置會覆蓋手動配置。

 

常見問題

 

手動配置中一個常見問題,當連接到本地網絡上使用的 Internet 協議 (IP) 地址或完全限定域名 (FQDN) 的 Web 服務器時,Microsoft Internet Explorer 或 Windows Internet Explorer 連接通過指定的代理服務器即使在開啟了Bypass proxy server for local addresses選項。

但是,如果您連接到 Web 服務器的主機名 (例如,http://webserver) 使用的 IP 地址 (例如,http://10.0.0.1) 或 FQDN (例如,http://webserver。domainname.com)、 跳過代理服務器和 Internet Explorer 直接連接到服務器。

該問題原因在於Bypass proxy server for local addresses僅對host name進行檢查,若要跳過某一范圍內的 IP 地址或特定域的名稱,指定代理服務器例外列表中的地址:

<!--[if !supportLists]-->·         <!--[endif]-->在 Internet Explorer 中,在工具菜單上,單擊Internet 選項。

<!--[if !supportLists]-->·         <!--[endif]-->在連接選項卡上,單擊局域網設置。

<!--[if !supportLists]-->·         <!--[endif]-->單擊高級和異常區域中鍵入適當的信息。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM