一 簡介
1.1 什么是PAC文件
代理自動配置(PAC)文件包含一組用javaScript編碼的規則,允許web瀏覽器確定是將Web流量直接發送到Internet還是通過代理服務器發送
RAC文件可以控制Web瀏覽器處理HTTP,HTTPS和FTP流量的方式
使用RAC文件的好處
受所有的主要操作系統和瀏覽器支持
無論用戶是輸入域還是輸入IP地址,都能正確的自動路由流量
自動代理故障轉移
意味着,當正在部署雲安全服務,是喲了那個PAC文件,內部流量見直接傳輸,並且可以根據需要考慮和路由該邏輯的任何和異常,一旦涉及並部署了PAC文件,任何持續的維護都是直截了當的
PAC文件能做什么
PAC文件可以利用一下信息來路由流量的規則
請求的網站的IP地址
所請求的網站的主機
用戶的IP地址
日期和時間
此外,PAV文件可以路由:
web瀏覽器中的http,HTTPS和FTP流量,直接或通過dialing路由流量(主機名個端口可配置)
PAC的限制
PAC文件在瀏覽器沙箱中運行,因此無法訪問整個JavaScript編程語言。相反,PAC文件功能在瀏覽中實現具有自定義沙河的功能
無法訪問計算機的主機名
沒有可靠的方法來確定用戶的IP地址
代理故障轉移缺乏智能,並根據發生的TCP超市進行操作
1.2 WPAD簡介
web代理自動發現協議(Web Proxy Auto-Discovery -WPAD)是一種幫助Web瀏覽器使用DNS或DHCP自動檢測PAC文件位置的技術。
支持DHCP和DNS的瀏覽器將首先嘗試使用DHCP查找PAC文件,如果不存在DHCP配置,則會發生故障轉移到DNS WPAD。如果兩者均未配置,則瀏覽器將失敗打開。
DHCP WPAD是一種通過利用本地DHCP基礎結構來檢測PAC文件位置的方法。DHCP服務器可以配置有存儲PAC文件位置的選項,Web瀏覽器可以查詢該選項。找到該選項后,Web瀏覽器將發出PAC文件請求。
先決條件包括PAC文件,Web服務器,DHCP服務器,以及要配置為從DHCP服務器獲取其網絡IP地址信息的任何用戶計算機。
例如:
在以下示例中,用戶計算機的網絡名稱為laptop01.us.division.company.com。
加載后,Web瀏覽器會發出DHCPINFORM,請求DHCP服務器提供選項及其配置列表。
DHCP服務器使用DHCP ACK消息進行響應,其中包含選項和配置列表
其中一個選項252包含PAC文件位置。Web瀏覽器可以執行下載PAC文件的請求。
DNS WPAD
DNS WPAD是檢測經由PAC文件的方法發現通過利用用戶計算機的網絡名稱,並使用一個一致的DNS配置和PAC腳本文件名。DNS WPAD是受支持最廣泛的方法,支持所有主流瀏覽器和操作系統。
先決條件包括PAC文件,Web服務器和指向Web服務器的本地訪問DNS主機名。
例
在以下示例中,用戶計算機的網絡名稱為laptop01.us.division.company.com。
主機wpad.company.com上的Web服務器正在提供文件名為wpad.dat的 PAC文件。
啟用DNS WPAD的瀏覽器將刪除計算機名稱(laptop01),將wpad應用於網絡名稱,並將后綴應用於文件資源/wpad.dat,例如http://wpad.us.division.company.com /wpad.dat。
瀏覽器將嘗試從位置http://wpad.us.division.company.com/wpad.dat下載PAC文件。
如果Web瀏覽器無法解析主機wpad.us.division.company.com,它將進入子域節點層次結構並嘗試從主機wpad.division.company.com下載wpad.dat文件,依此類推,直到達到最低有效節點wpad.company.com。
二、PAC 文件編碼
2.1 示例PAC文件
所有優秀的PAC文件的基礎都已清晰簡潔的編碼方法開始。使用幾種不同的方法可以實現相同的結果。包括可用的PAC文件功能和睿Javascript語言的靈活性
特征
專用IP網絡,內部主機名具有.local域擴展名的主機代理繞過規則。
雖然示例中的其他規則可能是可選的,但大多數部署應該從西代碼塊開始
示例主機名繞過規則
示例協議和URL繞過規則
示例基於機器的IP路由規則
默認代理規則,如果以上的規則都不匹配
示例PAC文件
function FindProxyForURL(url, host) { // If the hostname matches, send direct. if (dnsDomainIs(host, "intranet.domain.com") || shExpMatch(host, "(*.abcdomain.com|abcdomain.com)")) return "DIRECT"; // If the protocol or URL matches, send direct. if (url.substring(0, 4)=="ftp:" || shExpMatch(url, "http://abcdomain.com/folder/*")) return "DIRECT"; // If the requested website is hosted within the internal network, send direct. if (isPlainHostName(host) || shExpMatch(host, "*.local") || isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") || isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") || isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") || isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0")) return "DIRECT"; // If the IP address of the local machine is within a defined // subnet, send to a specific proxy. if (isInNet(myIpAddress(), "10.10.5.0", "255.255.255.0")) return "PROXY 1.2.3.4:8080"; // DEFAULT RULE: All other traffic, use below proxies, in fail-over order. return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080"; }
建議
在部署URL和主機規則時,必須注意確保規則盡可能的明確,以下示例詳細說明了應該如何實現主機和URL規則
主機示例:
if (dnsDomainIs(host, "abcdomain.com") || dnsDomainIs(host, "www.abcdomain.com")) return "DIRECT"; 網址示例: if (shExpMatch(url, "http://abcdomain.com/folder/*")) return "DIRECT";
警告:
一下代碼是一個示例,由於對使用shExpMatch函數,通配符和主機名的廣泛解釋,可能會產生意想不到的后果
警示示例: // Would send both of the following requests direct to the Internet: // 1. www.hotmail.com 2. phishing-scam.com?email=someone@hotmail.com if (shExpMatch(url, "*hotmail.com*")) return "DIRECT"; 安全示例: // Would send only traffic to the the host and subdomains of hotmail.com if (shExpMatch(host, "*.hotmail.com")) return "DIRECT";
2.2 PAC功能
支持PAC的瀏覽器提供原始的NetScape規范規范中定義的函數列表的訪問
每個瀏覽器都在沙箱中實現PAC,只允許訪問操作所需要的那些JavaScript函數,僅此而已。例如,無法訪問PAC文件中的瀏覽器用戶代理字符串,該文件是普通網頁可用的字符串
PAC的函數
dnsDomain:評估主機名,如果主機名匹配則返回True。主要用於匹配和例外單個主機名
// If the hostname matches google.com or www.google.com // send direct to the Internet. if (dnsDomainIs(host, "google.com") || dnsDomainIs(host, "www.google.com")) return "DIRECT";
shExpMatch:將主機名和URL與指定的SHELL表達式匹配,如果匹配則返回true
// Any requests with a hostname ending with the extension .local // will be sent direct to the Internet. if (shExpMatch(host, "*.local")) return "DIRECT"; // A request for the host vpn.domain.com or any request for a file or folder in the // location http://abcdomain.com/folder/ will be sent direct to the Internet. if (shExpMatch(host, "vpn.domain.com") || shExpMatch(url, "http://abcdomain.com/folder/*")) return "DIRECT";
isInNet:此函數評估主機名的IP地址,如果在指定的子網內返回true。如果傳遞了主機名,則該函數會將主機名解析為IP地址
// If IP of requested website website falls within IP range, send direct to the Internet. if (isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0")) return "DIRECT";
myIpAddress:返回主機的IP地址。
// If the machine requesting a website falls within IP range, // send traffic via proxy 10.10.5.1 running on port 8080. if (isInNet(myIpAddress(), "10.10.1.0", "255.255.255.0")) return "PROXY 10.10.5.1:8080";
dnsResolve:將主機名解析為IP地址。此功能可用於減少DNS查找的數量,例如以下示例。
// If IP of the requested host falls within any of the ranges specified, send direct. if (isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") || isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") || isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") || isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0")) return "DIRECT";
isPlainHostName:如果主機名不包含任何點,則此函數將返回true,例如http://intranet
在為內部網站應用異常時很有用,例如,可能不需要將主機名解析為IP地址以確定是否為本地。
// If user requests plain hostnames, e.g. http://intranet/, // http://webserver-name01/, send direct. if (isPlainHostName(host)) return "DIRECT";
localHostOrDomainIs:評估主機名,僅在找到確切的主機名匹配時才返回true。
// If the Host requested is "www" or "www.google.com", send direct. if (localHostOrDomainIs(host, "www.google.com")) return "DIRECT";
isResolvable:嘗試將主機名解析為IP地址,如果成功則返回true。警告 - 如果域無法解析,這可能會導致瀏覽器暫時掛起。
// If the host requested can be resolved by DNS, send via proxy1.example.com. if (isResolvable(host)) return "PROXY proxy1.example.com:8080";
dnsDomainLevels:此函數返回主機名中DNS域級別(點數)的數量。可用於例外使用短DNS名稱的內部網站,例如http://intranet
// If hostname contains any dots, send via proxy1.example.com, otherwise send direct. if (dnsDomainLevels(host) > 0) return "PROXY proxy1.example.com:8080"; else return "DIRECT";
weekdayRange:允許規則基於時間,例如僅在特定日期返回代理。
// If during the period of Monday to Friday, proxy1.example.com will be returned, otherwise // users will go direct for any day outside this period. if (weekdayRange("MON", "FRI")) return "PROXY proxy1.example.com:8080"; else return "DIRECT";
dateRange:允許規則基於時間,例如僅在特定月份內返回代理。
// If during the period of January to March, proxy1.example.com will be returned, otherwise // users will go direct for any month outside this period. if (dateRange("JAN", "MAR")) return "PROXY proxy1.example.com:8080"; else return "DIRECT";
timeRange:允許規則基於時間,例如僅在特定時間內返回代理。
// If during the period 8am to 6pm, proxy1.example.com will be returned, otherwise // users will go direct for any time outside this period. if (timeRange(8, 18)) return "PROXY proxy1.example.com:8080"; else return "DIRECT";
alert:雖然先前在多個瀏覽器中支持過支持,但在原始PAC規范中未指定alert()函數,這對於以最終用戶可查看並利用的方式輸出變量值或函數結果非常有用。解決PAC文件規則問題。
現在,此函數在PAC文件中被視為不受支持且不起作用
// Outputs the resolved IP address of the host in the browser // to end-user or error console. resolved_host = dnsResolve(host); alert(resolved_host);
2.3 代碼片段
大多數PAC文件包含許多常見的元素;下面是常見的PAC文件代碼
本地網絡配置
if (isPlainHostName(host) || shExpMatch(host, "*.local") || isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") || isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") || isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") || isInNet(dnsResolve(host), "173.37.0.0", "255.255.0.0") || isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0")) return "DIRECT";
主機匹配
if (dnsDomainIs(host, "abcdomain.com") || dnsDomainIs(host, "www.abcdomain.com")) return "DIRECT";
網址匹配
if (shExpMatch(url, "http://abcdomain.com/folder/*")) return "DIRECT";
協議控制
// HTTP if (url.substring(0,5)=="http:") return "DIRECT"; // HTTPS if (url.substring(0,6)=="https:") return "DIRECT"; // FTP if (url.substring(0,4)=="ftp:") return "DIRECT";
定義連接方法
// Direct-to-Internet return "DIRECT"; // Proxy return "PROXY proxy.domain.local:8080"; // Failover return "PROXY proxy1.domain.local:8080; PROXY proxy2.domain.local:8080; DIRECT";
基於機器IP的路由
if (isInNet(myIpAddress(), "10.10.5.0", "255.255.255.0")) return "PROXY 1.2.3.4:8080";
2.4 誤區
雖然廣泛實施,但PAC規范並不是一個已批准的標准,而WPAD規范只能作為IETF草案,即1999年12月到期的草案。這種標准化的缺乏導致了一些不一致的PAC編碼實踐,這些實踐並未反映出來。主要瀏覽器中PAC規范的實際實現。
盡管存在這種模糊性,但除了myIpAddress()函數之外,PAC規范的實現在瀏覽器和操作系統之間是一致的。
本頁試圖消除一些常見但不必要的PAC編碼實踐背后的原因。已提供代碼示例作為不應執行的操作的示例。
為了執行主機匹配,必須將主機變量轉換為小寫。
錯誤。在所有主流瀏覽器(Internet Explorer,Firefox,Chrome和Safari)中都沒有必要實現此類代碼。
沒有發現瀏覽器要求將主機轉換為小寫以防止區分大小寫的匹配問題。與URL不同,主機不區分大小寫,因此任何PAC規則機制在匹配主機時都應自動假設不區分大小寫。
PAC規范的早期瀏覽器實現可能存在此功能的問題,但是,與Internet Explorer 6(2001年發布)和Firefox 2(2006年發布)一樣舊的瀏覽器不會出現這些問題。
示例(不做的事):
host_var = host.toLowerCase(); if (dnsDomainIs(host_var, "example.com")) return "DIRECT";
當使用多個DNS依賴PAC功能時,瀏覽器將使用每個功能為同一主機執行新的DNS查找。
錯誤。在利用DNS系統時,尚未發現所有主要瀏覽器(Internet Explorer,Firefox,Chrome和Safari)的PAC實施都表現出任何異常行為。
如果瀏覽器訪問了最近訪問的主機,則本地DNS緩存將向瀏覽器提供DNS結果。如果最近未訪問主機且不在DNS緩存中,則將要求為主機配置的DNS服務器提供DNS結果。這將執行一次,結果在本地緩存。
示例(不做的事):
host_var = host.toLowerCase(); if (dnsDomainIs(host_var, "example.com")) return "DIRECT";
當使用多個DNS依賴PAC功能時,瀏覽器將使用每個功能為同一主機執行新的DNS查找。
三 部署
3.1 部署選項
比較部署
web瀏覽器提供了幾種指定代理的使用方法
顯式代理:在瀏覽器使用文字代理繞過指定單個代理
RAC文件:在瀏覽器中指定RAC的位置(例如,在本地或者在web服務器上托管)。PAC文件可以提供代理故障轉移支持,高級代理繞過支持等
WRAD:只需要在瀏覽器中選中復選框,瀏覽器就可以使用DHCP或者DNS來猜測RAC文件的位置
部署 |
優點 |
缺點 |
顯式部署 |
易於部署,不需要額外的基礎架構 不需要JavaScript知識 在所有的瀏覽器中都支持 |
沒有故障轉移功能 代理繞過列表時文字的,瀏覽器不會講主機解析為IP,反之亦然。可能需要在旁路列表中指定IP和主機 |
PAC |
代理故障轉移支持 在所有的主流瀏覽器中都支持 能夠無縫繞過特定主機或IP的代理 |
大多數部署都需要web服務器的基礎架構 需要JavaScript知識 如果PAC文件不可用(例如,當離網時),某些瀏覽器可能會失敗 |
WPAD |
包括所有PAC優點 部署僅需要選中復選框 如果WPAD無法找到PAC文件(例如,當離網時)瀏覽器將失敗 |
包括所有PAC的缺點 需要更改DNS或者DHCP基礎結構 |
3.2 PAC部署
使用瀏覽器代理設置顯式部署PAC文件是最直接的部署方法之一。完成PAC文件后,以下步驟將有助於在Web服務器上部署PAC文件。
網絡服務器
應將web服務器配置使用正確的MIME類型提供的PAC文件
IIS Web服務器
1、通過終端服務或遠程桌面連接登錄服務器。 2、單擊開始,選擇程序,然后單擊管理工具。 對於IIS 5.0:打開Internet服務管理器。 對於IIS 6.0:打開Internet信息服務。 3、在左欄中,您將看到服務器名稱。 在IIS 5.0中:展開“服務器名稱”以查找域名。 在IIS 6.0中:展開“服務器名稱”,然后展開“網站”以查找域名。 4、右鍵單擊域名,然后選擇“ 屬性”。 5、在“HTTP標頭”選項卡上,單擊“ MIME類型”。 6、單擊新建。 7、輸入以下信息: 擴展名: .pac MIME類型: application / x-ns-proxy-autoconfig 8、單擊確定。
Apache Web服務器
1、創建.htaccess文件。 2、將以下行添加到文件中: AddType application / x-ns-proxy-autoconfig .pac 3、將文件上載到PAC文件所在的位置。
瀏覽器部署
根據管理環境,可以使用組策略等工具自動配置瀏覽器,也可以手動為每個瀏覽器的連接設置配置瀏覽器。
組策略
組策略設置將應用於Internet Explorer,Chrome和Safari。Firefox可能需要使用第三方工具來采用這些組策略設置。
1、打開組策略對象編輯器。 2、展開用戶配置 > Windows設置 > Internet Explorer維護樹。 3、打開連接並選擇自動瀏覽器配置。 4、選中啟用自動配置。 5、在“ 自動代理URL”文本框中輸入PAC文件的URL,然后單擊“ 確定”。
手動設置
3.3 部署WPAD
PAC文件
為了時DNS WPAD功能能夠檢測到PAC文件,請將PAC文件重命名為wpad.dat並長傳到您的web服務器
網絡服務器
web服務應該配置到服務於PAC文件,WPAD.DAT,用正確的MIME類型
IIS web服務器
1、通過終端服務或遠程桌面連接登錄服務器。 2、單擊開始,選擇程序,然后單擊管理工具。 對於IIS 5.0:打開Internet服務管理器。 對於IIS 6.0:打開Internet信息服務。 3、在左欄中,您將看到服務器名稱。 在IIS 5.0中:展開“服務器名稱”以查找域名。 在IIS 6.0中:展開“服務器名稱”,然后展開“網站”以查找域名。 4、右鍵單擊域名,然后選擇“ 屬性”。 5、在“HTTP標頭”選項卡上,單擊“ MIME類型”。 6、單擊新建。 7、輸入以下信息: 擴展名: .dat MIME類型: application / x-ns-proxy-autoconfig 8、單擊確定。
Apache Web服務器
1、創建.htaccess文件。 2、將以下行添加到文件中: AddType application / x-ns-proxy-autoconfig .dat 3、將文件上載到與wpad.dat文件相同的位置。
DHCP服務器
DHCP服務器應配置為在發送給用戶的DHCP信息中提供252條目。配置此條目時包含指向wpad.dat文件的直接鏈接。
Windows 2003 DHCP 1、單擊開始,單擊程序,單擊管理工具,然后單擊DHCP。 2、在控制台樹中,右鍵單擊DHCP服務器,單擊“ 設置預定義選項”,然后單擊“ 添加”。 3、在名稱類型:WPAD 4、在代碼類型:252 5、在“ 數據類型”中,選擇“ String”,然后單擊“ 確定”。 6、在“字符串”中,鍵入PAC文件的URL,格式為:http://webserver.example.com/wpad.dat 7、用鼠標右鍵單擊服務器選項,然后單擊配置選項。 8、確認已選擇Option 252選項。 一旦創建,我們必須啟用DHCP作用域的選項。 1、單擊開始,單擊程序,單擊管理工具,然后單擊DHCP。 2、右鍵單擊“ 范圍選項”,然后單擊“ 配置選項”。 3、單擊“ 高級”,然后在“ 供應商類”中單擊“ 標准選項”。 4、在“ 可用選項”中,選擇“ 252代理自動發現”選項,然后單擊“確定”。
LINUX DHCP
1、編輯DHCP配置文件(通常為/etc/dhcp/dhcpd.conf)。 2、編輯以下內容並將其粘貼到文件中: option local-pac-server code 252 = text; option local-pac-server“http://wpad.example.com:80/wpad.dat”; 第一個聲明必須在配置文件的全局部分中。 3、重啟DHCP服務器。
DNS服務器
應將DNS服務器配置為主機wpqd提供A記錄
Windowa 2003 DNS
1、單擊開始,單擊程序,單擊管理工具,然后單擊DNS。 2、在控制台樹中,右鍵單擊適用的正向查找區域,然后單擊“ 新建主機(A)”。 3、在名稱類型:wpad 4、在“ IP地址”中,輸入托管wpad.dat文件的Web服務器的IP地址。
瀏覽器部署
組策略
組策略設置將應用於Internet Explorer,Chrome和Safari。Firefox可能需要使用第三方工具來采用這些組策略設置。 1、打開組策略對象編輯器。 2、展開用戶配置 > Windows設置 > Internet Explorer維護樹。 3、打開連接並選擇自動瀏覽器配置。 4、選中自動檢測配置設置
手動瀏覽器配置
3.4 瀏覽器支持
PAC文件和WPAD協議背后的技術從未成為批准的標准,因此,每個瀏覽器和操作系統的功能實現可能會有所不同。下表提供了對每個PAC / WPAD功能,交叉引用瀏覽器和操作系統的支持的指導。
Windows 10
Mac OS X(El Capitan / 10.11.1)
功能描述
DNS WPAD:支持使用DNS
DHCP WPAD發現PAC文件:支持使用DHCP發現PAC文件
mylpAddress():返回127.0.0.1以外的IP地址
IPv6:使用內置函數處理IPv6地址的能力,例如使用FindProxyForURLEx()
四 常見的問題
4.1PAC問題
盡管配置了PAC URL,但我的Web瀏覽器似乎沒有使用PAC文件,這有什么可能的原因? 確保Web服務器具有為.pac文件擴展名配置的MIME類型application / x-ns-proxy-autoconfig。有關更多信息,請參閱PAC部署頁面。 在瀏覽器代理設置中禁用PAC文件位置,並在瀏覽器URL欄中輸入PAC文件的位置,它應該是可訪問的。如果沒有,請調查服務該文件的Web服務器。 確認JavaScript PAC文件代碼沒有語法錯誤/失敗。 更新我的PAC文件后,我所做的更改似乎沒有生效? 瀏覽器將緩存PAC文件,而不是為每個請求檢索它; 在某些情況下,瀏覽器重啟不足以獲取文件的更新版本。為了獲得最新版本,可能需要清除瀏覽器緩存,關閉所有瀏覽器窗口,然后重新打開瀏覽器應用程序。 使用PAC文件時,為什么Web瀏覽性能會降低? PAC文件可以利用依賴於本地DNS服務器的若干功能來解析所請求的主機。這些函數是isInNet(),isResolvable()和dnsResolve()。 如果DNS服務器響應緩慢,則為新(非緩存)主機初始化這些功能將導致延遲,直到DNS服務器提供結果。這僅在首次請求主機時發生,或者主機DNS信息的本地緩存周期已過期。 可以通過利用諸如DIG的DNS應用程序來隔離這樣的問題,該應用程序可以報告DNS服務器響應多長時間。雖然每個環境都是獨一無二的,但最終用戶可能會注意到超過500毫秒的響應時間。許多網站現在使用內容傳送網絡,這些網絡可能提供來自幾個不同主機的內容,因此對於較大的網站來說延遲可能很大 每個主機都是串行請求而不是並行請求(每個DNS請求必須在下一個開始之前完成)。 為什么瀏覽器在配置PAC文件和網絡外時最初會停止/掛起? 使用PAC文件的IP地址位置時,瀏覽器將嘗試連接到此IP地址,並等待連接嘗試超時。超時可能不會持續幾秒或更長時間,並可能導致某些瀏覽器掛起,直到發生這種情況。首次加載瀏覽器並訪問網站時,將發生此延遲。 鑒於此超時行為,如果要將用戶計算機從網絡中取出,則建議使用DNS主機名配置瀏覽器以訪問PAC文件。 使用PAC文件的DNS主機名時,瀏覽器將嘗試針對外部DNS服務器解析內部DNS主機名。這將導致服務器通知Web瀏覽器不存在此類DNS記錄。這個過程需要十分之一秒,最終用戶不會注意到。無法訪問PAC文件的瀏覽器將無法打開(直接連接到Internet)。 我有多個網絡適配器,myIpAddress()函數返回一個不需要的IP地址。我可以重新排序優先級嗎? 為myIpAddress()函數分配值時,瀏覽器將使用操作提供的第一個活動的網絡適配器。Windows操作系統支持重新安排網絡適配器順序。 單擊“ 開始”,單擊“運行”,鍵入ncpa.cpl,然后單擊“ 確定”。 可以在“網絡連接”窗口的“LAN和高速Internet”部分中找到可用的連接。 使用“ 高級”菜單,單擊“ 高級設置”,然后單擊“ 適配器和綁定”選項卡。 在“ 連接”區域中,選擇要重新排序的連接。使用箭頭按鈕更改順序。 有關配置網絡適配器順序的更多說明和信息,請參閱Microsoft支持中心。 我正在嘗試使用PAC文件在代理之間平衡流量,但應用程序和網站無法加載或生成錯誤消息。我怎樣才能解決這個問題? 有幾個代碼示例可用於在使用PAC文件時嘗試可行的負載平衡解決方案,遺憾的是,這些示例中沒有一個能夠實現真正的負載平衡,並且在使用需要持久連接的應用程序或網站時常常導致連接管理問題和/或期望交通穿越同一條路線。這些解決方案通常依賴於使用各種JavaScript攻擊的流量路由中的隨機化,因此這些解決方案甚至不提供真正的基於負載的流量分布。 使用位於代理本身前面的硬件解決方案可以最好地實現代理之間的負載平衡,該解決方案可以跟蹤每個代理的負載,並根據當前卷分配此流量。
4.2 WPAD問題
盡管DNS配置正確,但我無法解析WPAD主機? Windows 2008以及Windows 2003 DNS的后續更新為常見的濫用查詢實現了DNS阻止列表(globalqueryblocklist),這可能會阻止WPAD主機的解析。 為了允許Windows 2008 DNS解析主機WPAD,請參閱有關此問題的Microsoft文章。 命令行選項不適用於Windows 2003,因此需要對Windows注冊表進行更改。 在每個DNS服務器上打開Windows注冊表(例如,開始>運行> Regedit)。 在下表中找到注冊表項位置。 在GlobalQueryBlockList鍵上單擊鼠標右鍵> 修改。 刪除wpad條目,然后單擊“ 確定”。 您需要重新啟動Windows DNS服務器服務才能使此更改生效。
使用DHCP WPAD時Firefox沒有找到我的PAC文件,為什么會這樣?
Firefox僅支持DNS WPAD,不支持DHCP WPAD。有關更多信息,請參閱WPAD簡介和瀏覽器支持頁面。
4.3 故障排查
明確的PAC 手動查看PAC文件代碼。由於缺少逗號,括號,花括號或分號,通常會出現語法問題。 確保PAC文件代碼使用pacparser或Proxy Validator等工具進行驗證。 檢查PAC文件規則是否存在任何意外的路由行為; 常見問題包括缺少代理返回語句和基於通配符的規則,這些規則會影響比預期更大的流量。可能導致直接傳遞到互聯網的所有流量這樣的錯誤,使得它只能顯示該文件無法運行。 確認使用以下任一內容類型提供PAC文件擴展名(.pac或.dat): application / x-ns-proxy-autoconfig application / x-javascript-config 通過在本地文件系統上托管文件來測試PAC文件; 如果文件有效,則會將問題隔離到PAC文件Web服務器(例如連接或配置)。本地PAC文件測試的URL格式為file:// c:\ folder \ proxy.pac WPAD DHCP 按照明確的PAC文件配置進行故障排除的步驟 - WPAD是部署PAC文件的一種方法,因此如果僅關注WPAD部分,可能會忽略Web服務器或文件本身的任何問題。 測試由DHCP推出的PAC文件URL,通過使用配置為顯式PAC文件的瀏覽器代理設置中的PAC文件URL來執行此操作。這將驗證PAC文件或PAC文件服務器本身是否是問題。 查看Windows注冊表以確認WPAD DHCP推出的URL。 單擊開始,然后選擇運行。 鍵入regedit,然后單擊“ 確定”。 將注冊表樹導航到以下位置:HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Connections \ 在右側窗格中,雙擊DefaultConnectionSettings。 WPAD DHCP URL將顯示在對話框中 - 示例。 WPAD DNS 按照明確的PAC文件配置進行故障排除的步驟 - WPAD是部署PAC文件的一種方法,因此如果僅關注WPAD部分,可能會忽略Web服務器或文件本身的任何問題。 嘗試ping主機wpad,無法解析將表明DNS服務器出現問題。主機名是否指向正確的Web服務器?WPAD DNS要求此記錄存在並指向托管PAC文件的Web服務器。 禁用所有代理/ PAC設置后,嘗試訪問http://wpad/wpat.dat - WPAD DNS要求這是功能性URL格式。調查返回的任何錯誤。
4.4 官方工具集
概觀
FindProxyForURL.com工具集旨在為疑難解答時的PAC / WPAD部署帶來透明度和清晰度
該工具如何用於故障排除的一些示例包括是否正在使用正確的MIME類型推送PAC文件,PAC文件是否具有有效語法,WPAD DHCP正在推送哪個URL,或者WPAD DNS是否可以找到PAC文件。
發現的任何PAC文件都會自動下載和測試,同時收集和報告任何通常難以辨別的WPAD DNS / DHCP值。
使用管理員權限,Windows Vista或更高版本以及Windows Server 2003及更高版本支持Toolset。
下載:
https://drive.google.com/file/d/0BwTarLoLkOv7dzdDWVowOUg0RWM/view
部署
將ZIP內容解壓縮到一個文件夾
運行Deploy_Toolset.bat,工具集將執行其操作,並在完成打開數據文件后執行
參考文獻: