PAC 代理自动发现简介
一 簡介
1.1 什么是PAC文件
? ? ? ? 代理自動配置(PAC)文件包含一組用javaScript編碼的規(guī)則,允許web瀏覽器確定是將Web流量直接發(fā)送到Internet還是通過代理服務(wù)器發(fā)送
? ? ? ??RAC文件可以控制Web瀏覽器處理HTTP,HTTPS和FTP流量的方式
? ? ? ??使用RAC文件的好處
? ? ? ??受所有的主要操作系統(tǒng)和瀏覽器支持
? ? ? ??無論用戶是輸入域還是輸入IP地址,都能正確的自動路由流量
? ? ? ??自動代理故障轉(zhuǎn)移
? ? ? ??意味著,當(dāng)正在部署云安全服務(wù),是喲了那個PAC文件,內(nèi)部流量見直接傳輸,并且可以根據(jù)需要考慮和路由該邏輯的任何和異常,一旦涉及并部署了PAC文件,任何持續(xù)的維護都是直截了當(dāng)?shù)?/p>
PAC文件能做什么
? ? ? ??PAC文件可以利用一下信息來路由流量的規(guī)則
? ? ? ??請求的網(wǎng)站的IP地址
? ? ? ??所請求的網(wǎng)站的主機
? ? ? ??用戶的IP地址
? ? ? ??日期和時間
此外,PAV文件可以路由:
? ? ? ??web瀏覽器中的http,HTTPS和FTP流量,直接或通過dialing路由流量(主機名個端口可配置)
PAC的限制
? ? ? ??PAC文件在瀏覽器沙箱中運行,因此無法訪問整個JavaScript編程語言。相反,PAC文件功能在瀏覽中實現(xiàn)具有自定義沙河的功能
? ? ? ??無法訪問計算機的主機名
? ? ? ??沒有可靠的方法來確定用戶的IP地址
? ? ? ??代理故障轉(zhuǎn)移缺乏智能,并根據(jù)發(fā)生的TCP超市進行操作
1.2 WPAD簡介
? ? ? ??web代理自動發(fā)現(xiàn)協(xié)議(Web?Proxy?Auto-Discovery -WPAD)是一種幫助Web瀏覽器使用DNS或DHCP自動檢測PAC文件位置的技術(shù)。
? ? ? ??支持DHCP和DNS的瀏覽器將首先嘗試使用DHCP查找PAC文件,如果不存在DHCP配置,則會發(fā)生故障轉(zhuǎn)移到DNS WPAD。如果兩者均未配置,則瀏覽器將失敗打開。
? ? ? ??DHCP WPAD是一種通過利用本地DHCP基礎(chǔ)結(jié)構(gòu)來檢測PAC文件位置的方法。DHCP服務(wù)器可以配置有存儲PAC文件位置的選項,Web瀏覽器可以查詢該選項。找到該選項后,Web瀏覽器將發(fā)出PAC文件請求。
? ? ? ??先決條件包括PAC文件,Web服務(wù)器,DHCP服務(wù)器,以及要配置為從DHCP服務(wù)器獲取其網(wǎng)絡(luò)IP地址信息的任何用戶計算機。
例如:
? ? ? ??在以下示例中,用戶計算機的網(wǎng)絡(luò)名稱為laptop01.us.division.company.com。
? ? ? ??加載后,Web瀏覽器會發(fā)出DHCPINFORM,請求DHCP服務(wù)器提供選項及其配置列表。
? ? ? ??DHCP服務(wù)器使用DHCP ACK消息進行響應(yīng),其中包含選項和配置列表
? ? ? ??其中一個選項252包含PAC文件位置。Web瀏覽器可以執(zhí)行下載PAC文件的請求。
DNS WPAD
? ? ? ??DNS WPAD是檢測經(jīng)由PAC文件的方法發(fā)現(xiàn)通過利用用戶計算機的網(wǎng)絡(luò)名稱,并使用一個一致的DNS配置和PAC腳本文件名。DNS?WPAD是受支持最廣泛的方法,支持所有主流瀏覽器和操作系統(tǒng)。
? ? ? ??先決條件包括PAC文件,Web服務(wù)器和指向Web服務(wù)器的本地訪問DNS主機名。
例
? ? ? ??在以下示例中,用戶計算機的網(wǎng)絡(luò)名稱為laptop01.us.division.company.com。
? ? ? ??主機wpad.company.com上的Web服務(wù)器正在提供文件名為wpad.dat的 PAC文件。
? ? ? ??啟用DNS WPAD的瀏覽器將刪除計算機名稱(laptop01),將wpad應(yīng)用于網(wǎng)絡(luò)名稱,并將后綴應(yīng)用于文件資源/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,它將進入子域節(jié)點層次結(jié)構(gòu)并嘗試從主機wpad.division.company.com下載wpad.dat文件,依此類推,直到達到最低有效節(jié)點wpad.company.com。
二、PAC 文件編碼
2.1 示例PAC文件
? ? ? ??所有優(yōu)秀的PAC文件的基礎(chǔ)都已清晰簡潔的編碼方法開始。使用幾種不同的方法可以實現(xiàn)相同的結(jié)果。包括可用的PAC文件功能和睿Javascript語言的靈活性
? ? ? ??特征
? ? ? ??? ? ? ??專用IP網(wǎng)絡(luò),內(nèi)部主機名具有.local域擴展名的主機代理繞過規(guī)則。?
? ? ? ??? ? ? ??雖然示例中的其他規(guī)則可能是可選的,但大多數(shù)部署應(yīng)該從西代碼塊開始
? ? ? ??? ? ? ??示例主機名繞過規(guī)則
? ? ? ??? ? ? ??示例協(xié)議和URL繞過規(guī)則
? ? ? ??? ? ? ??示例基于機器的IP路由規(guī)則
? ? ? ??? ? ? ??默認代理規(guī)則,如果以上的規(guī)則都不匹配
? ? ? ??示例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和主機規(guī)則時,必須注意確保規(guī)則盡可能的明確,以下示例詳細說明了應(yīng)該如何實現(xiàn)主機和URL規(guī)則
主機示例:if (dnsDomainIs(host, "abcdomain.com") || dnsDomainIs(host, "www.abcdomain.com"))return "DIRECT"; 網(wǎng)址示例: if (shExpMatch(url, "http://abcdomain.com/folder/*"))return "DIRECT";
警告:
一下代碼是一個示例,由于對使用shExpMatch函數(shù),通配符和主機名的廣泛解釋,可能會產(chǎn)生意想不到的后果
警示示例: // Would send both of the following requests direct to the Internet: // 1. www.hotmail.com 2. phishing-scam.com?email=someone@hotmail.comif (shExpMatch(url, "*hotmail.com*"))return "DIRECT"; 安全示例: // Would send only traffic to the the host and subdomains of hotmail.comif (shExpMatch(host, "*.hotmail.com"))return "DIRECT";2.2 PAC功能
? ? ? ??支持PAC的瀏覽器提供原始的NetScape規(guī)范規(guī)范中定義的函數(shù)列表的訪問
? ? ? ??每個瀏覽器都在沙箱中實現(xiàn)PAC,只允許訪問操作所需要的那些JavaScript函數(shù),僅此而已。例如,無法訪問PAC文件中的瀏覽器用戶代理字符串,該文件是普通網(wǎng)頁可用的字符串
PAC的函數(shù)
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:此函數(shù)評估主機名的IP地址,如果在指定的子網(wǎng)內(nèi)返回true。如果傳遞了主機名,則該函數(shù)會將主機名解析為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查找的數(shù)量,例如以下示例。
// 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:如果主機名不包含任何點,則此函數(shù)將返回true,例如http://intranet?
在為內(nèi)部網(wǎng)站應(yīng)用異常時很有用,例如,可能不需要將主機名解析為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。警告 - 如果域無法解析,這可能會導(dǎo)致瀏覽器暫時掛起。
// If the host requested can be resolved by DNS, send via proxy1.example.com.if (isResolvable(host))return "PROXY proxy1.example.com:8080";dnsDomainLevels:此函數(shù)返回主機名中DNS域級別(點數(shù))的數(shù)量。可用于例外使用短DNS名稱的內(nèi)部網(wǎng)站,例如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:允許規(guī)則基于時間,例如僅在特定日期返回代理。
// 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:允許規(guī)則基于時間,例如僅在特定月份內(nèi)返回代理。
// 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:允許規(guī)則基于時間,例如僅在特定時間內(nèi)返回代理。
// 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規(guī)范中未指定alert()函數(shù),這對于以最終用戶可查看并利用的方式輸出變量值或函數(shù)結(jié)果非常有用。解決PAC文件規(guī)則問題。
現(xiàn)在,此函數(shù)在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 代碼片段
大多數(shù)PAC文件包含許多常見的元素;下面是常見的PAC文件代碼
本地網(wǎng)絡(luò)配置
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";網(wǎng)址匹配
if (shExpMatch(url, "http://abcdomain.com/folder/*"))return "DIRECT";協(xié)議控制
// 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 誤區(qū)
雖然廣泛實施,但PAC規(guī)范并不是一個已批準的標(biāo)準,而WPAD規(guī)范只能作為IETF草案,即1999年12月到期的草案。這種標(biāo)準化的缺乏導(dǎo)致了一些不一致的PAC編碼實踐,這些實踐并未反映出來。主要瀏覽器中PAC規(guī)范的實際實現(xiàn)。
盡管存在這種模糊性,但除了myIpAddress()函數(shù)之外,PAC規(guī)范的實現(xiàn)在瀏覽器和操作系統(tǒng)之間是一致的。
本頁試圖消除一些常見但不必要的PAC編碼實踐背后的原因。已提供代碼示例作為不應(yīng)執(zhí)行的操作的示例。
為了執(zhí)行主機匹配,必須將主機變量轉(zhuǎn)換為小寫。
錯誤。在所有主流瀏覽器(Internet Explorer,Firefox,Chrome和Safari)中都沒有必要實現(xiàn)此類代碼。
沒有發(fā)現(xiàn)瀏覽器要求將主機轉(zhuǎn)換為小寫以防止區(qū)分大小寫的匹配問題。與URL不同,主機不區(qū)分大小寫,因此任何PAC規(guī)則機制在匹配主機時都應(yīng)自動假設(shè)不區(qū)分大小寫。
PAC規(guī)范的早期瀏覽器實現(xiàn)可能存在此功能的問題,但是,與Internet Explorer 6(2001年發(fā)布)和Firefox 2(2006年發(fā)布)一樣舊的瀏覽器不會出現(xiàn)這些問題。
示例(不做的事):
host_var = host.toLowerCase();if (dnsDomainIs(host_var, "example.com"))return "DIRECT";當(dāng)使用多個DNS依賴PAC功能時,瀏覽器將使用每個功能為同一主機執(zhí)行新的DNS查找。
錯誤。在利用DNS系統(tǒng)時,尚未發(fā)現(xiàn)所有主要瀏覽器(Internet Explorer,Firefox,Chrome和Safari)的PAC實施都表現(xiàn)出任何異常行為。
如果瀏覽器訪問了最近訪問的主機,則本地DNS緩存將向瀏覽器提供DNS結(jié)果。如果最近未訪問主機且不在DNS緩存中,則將要求為主機配置的DNS服務(wù)器提供DNS結(jié)果。這將執(zhí)行一次,結(jié)果在本地緩存。
示例(不做的事):
host_var = host.toLowerCase();if (dnsDomainIs(host_var, "example.com"))return "DIRECT";當(dāng)使用多個DNS依賴PAC功能時,瀏覽器將使用每個功能為同一主機執(zhí)行新的DNS查找。
三 部署
3.1 部署選項
比較部署
web瀏覽器提供了幾種指定代理的使用方法
顯式代理:在瀏覽器使用文字代理繞過指定單個代理
RAC文件:在瀏覽器中指定RAC的位置(例如,在本地或者在web服務(wù)器上托管)。PAC文件可以提供代理故障轉(zhuǎn)移支持,高級代理繞過支持等
WRAD:只需要在瀏覽器中選中復(fù)選框,瀏覽器就可以使用DHCP或者DNS來猜測RAC文件的位置
| 部署 | 優(yōu)點 | 缺點 |
| 顯式部署 | 易于部署,不需要額外的基礎(chǔ)架構(gòu) 不需要JavaScript知識 在所有的瀏覽器中都支持 | 沒有故障轉(zhuǎn)移功能 代理繞過列表時文字的,瀏覽器不會講主機解析為IP,反之亦然。可能需要在旁路列表中指定IP和主機 |
| PAC | 代理故障轉(zhuǎn)移支持 在所有的主流瀏覽器中都支持 能夠無縫繞過特定主機或IP的代理 | 大多數(shù)部署都需要web服務(wù)器的基礎(chǔ)架構(gòu) 需要JavaScript知識 如果PAC文件不可用(例如,當(dāng)離網(wǎng)時),某些瀏覽器可能會失敗 |
| WPAD | 包括所有PAC優(yōu)點 部署僅需要選中復(fù)選框 如果WPAD無法找到PAC文件(例如,當(dāng)離網(wǎng)時)瀏覽器將失敗 | 包括所有PAC的缺點 需要更改DNS或者DHCP基礎(chǔ)結(jié)構(gòu) |
?
?
3.2 PAC部署
使用瀏覽器代理設(shè)置顯式部署PAC文件是最直接的部署方法之一。完成PAC文件后,以下步驟將有助于在Web服務(wù)器上部署PAC文件。
網(wǎng)絡(luò)服務(wù)器
應(yīng)將web服務(wù)器配置使用正確的MIME類型提供的PAC文件
IIS Web服務(wù)器
1、通過終端服務(wù)或遠程桌面連接登錄服務(wù)器。 2、單擊開始,選擇程序,然后單擊管理工具。對于IIS 5.0:打開Internet服務(wù)管理器。對于IIS 6.0:打開Internet信息服務(wù)。 3、在左欄中,您將看到服務(wù)器名稱。在IIS 5.0中:展開“服務(wù)器名稱”以查找域名。在IIS 6.0中:展開“服務(wù)器名稱”,然后展開“網(wǎng)站”以查找域名。 4、右鍵單擊域名,然后選擇“ 屬性”。 5、在“HTTP標(biāo)頭”選項卡上,單擊“ MIME類型”。 6、單擊新建。 7、輸入以下信息:擴展名: .pac MIME類型: application / x-ns-proxy-autoconfig 8、單擊確定。Apache Web服務(wù)器
1、創(chuàng)建.htaccess文件。2、將以下行添加到文件中:AddType application / x-ns-proxy-autoconfig .pac3、將文件上載到PAC文件所在的位置。瀏覽器部署
根據(jù)管理環(huán)境,可以使用組策略等工具自動配置瀏覽器,也可以手動為每個瀏覽器的連接設(shè)置配置瀏覽器。
組策略
組策略設(shè)置將應(yīng)用于Internet Explorer,Chrome和Safari。Firefox可能需要使用第三方工具來采用這些組策略設(shè)置。
1、打開組策略對象編輯器。 2、展開用戶配置 > Windows設(shè)置 > Internet Explorer維護樹。 3、打開連接并選擇自動瀏覽器配置。 4、選中啟用自動配置。 5、在“ 自動代理URL”文本框中輸入PAC文件的URL,然后單擊“ 確定”。手動設(shè)置
3.3 部署WPAD
PAC文件
為了時DNS WPAD功能能夠檢測到PAC文件,請將PAC文件重命名為wpad.dat并長傳到您的web服務(wù)器
網(wǎng)絡(luò)服務(wù)器
web服務(wù)應(yīng)該配置到服務(wù)于PAC文件,WPAD.DAT,用正確的MIME類型
IIS web服務(wù)器
1、通過終端服務(wù)或遠程桌面連接登錄服務(wù)器。 2、單擊開始,選擇程序,然后單擊管理工具。對于IIS 5.0:打開Internet服務(wù)管理器。對于IIS 6.0:打開Internet信息服務(wù)。 3、在左欄中,您將看到服務(wù)器名稱。在IIS 5.0中:展開“服務(wù)器名稱”以查找域名。在IIS 6.0中:展開“服務(wù)器名稱”,然后展開“網(wǎng)站”以查找域名。 4、右鍵單擊域名,然后選擇“ 屬性”。 5、在“HTTP標(biāo)頭”選項卡上,單擊“ MIME類型”。 6、單擊新建。 7、輸入以下信息:擴展名: .dat MIME類型: application / x-ns-proxy-autoconfig 8、單擊確定。Apache Web服務(wù)器
1、創(chuàng)建.htaccess文件。 2、將以下行添加到文件中: AddType application / x-ns-proxy-autoconfig .dat 3、將文件上載到與wpad.dat文件相同的位置。DHCP服務(wù)器
DHCP服務(wù)器應(yīng)配置為在發(fā)送給用戶的DHCP信息中提供252條目。配置此條目時包含指向wpad.dat文件的直接鏈接。
Windows 2003 DHCP 1、單擊開始,單擊程序,單擊管理工具,然后單擊DHCP。 2、在控制臺樹中,右鍵單擊DHCP服務(wù)器,單擊“ 設(shè)置預(yù)定義選項”,然后單擊“ 添加”。 3、在名稱類型:WPAD 4、在代碼類型:252 5、在“ 數(shù)據(jù)類型”中,選擇“ String”,然后單擊“ 確定”。 6、在“字符串”中,鍵入PAC文件的URL,格式為:http://webserver.example.com/wpad.dat 7、用鼠標(biāo)右鍵單擊服務(wù)器選項,然后單擊配置選項。 8、確認已選擇Option 252選項。 一旦創(chuàng)建,我們必須啟用DHCP作用域的選項。 1、單擊開始,單擊程序,單擊管理工具,然后單擊DHCP。 2、右鍵單擊“ 范圍選項”,然后單擊“ 配置選項”。 3、單擊“ 高級”,然后在“ 供應(yīng)商類”中單擊“ 標(biāo)準選項”。 4、在“ 可用選項”中,選擇“ 252代理自動發(fā)現(xiàn)”選項,然后單擊“確定”。LINUX DHCP
1、編輯DHCP配置文件(通常為/etc/dhcp/dhcpd.conf)。 2、編輯以下內(nèi)容并將其粘貼到文件中: option local-pac-server code 252 = text; option local-pac-server“http://wpad.example.com:80/wpad.dat”; 第一個聲明必須在配置文件的全局部分中。 3、重啟DHCP服務(wù)器。?DNS服務(wù)器
應(yīng)將DNS服務(wù)器配置為主機wpqd提供A記錄
Windowa 2003 DNS
1、單擊開始,單擊程序,單擊管理工具,然后單擊DNS。 2、在控制臺樹中,右鍵單擊適用的正向查找區(qū)域,然后單擊“ 新建主機(A)”。 3、在名稱類型:wpad 4、在“ IP地址”中,輸入托管wpad.dat文件的Web服務(wù)器的IP地址。瀏覽器部署
組策略
組策略設(shè)置將應(yīng)用于Internet Explorer,Chrome和Safari。Firefox可能需要使用第三方工具來采用這些組策略設(shè)置。1、打開組策略對象編輯器。 2、展開用戶配置 > Windows設(shè)置 > Internet Explorer維護樹。 3、打開連接并選擇自動瀏覽器配置。 4、選中自動檢測配置設(shè)置手動瀏覽器配置
3.4 瀏覽器支持
PAC文件和WPAD協(xié)議背后的技術(shù)從未成為批準的標(biāo)準,因此,每個瀏覽器和操作系統(tǒng)的功能實現(xiàn)可能會有所不同。下表提供了對每個PAC / WPAD功能,交叉引用瀏覽器和操作系統(tǒng)的支持的指導(dǎo)。
?Windows 10
Mac OS X(El Capitan / 10.11.1)
?功能描述
DNS WPAD:支持使用DNS
DHCP WPAD發(fā)現(xiàn)PAC文件:支持使用DHCP發(fā)現(xiàn)PAC文件
mylpAddress():返回127.0.0.1以外的IP地址
IPv6:使用內(nèi)置函數(shù)處理IPv6地址的能力,例如使用FindProxyForURLEx()
四 常見的問題
4.1PAC問題
盡管配置了PAC URL,但我的Web瀏覽器似乎沒有使用PAC文件,這有什么可能的原因? 確保Web服務(wù)器具有為.pac文件擴展名配置的MIME類型application / x-ns-proxy-autoconfig。有關(guān)更多信息,請參閱PAC部署頁面。 在瀏覽器代理設(shè)置中禁用PAC文件位置,并在瀏覽器URL欄中輸入PAC文件的位置,它應(yīng)該是可訪問的。如果沒有,請調(diào)查服務(wù)該文件的Web服務(wù)器。 確認JavaScript PAC文件代碼沒有語法錯誤/失敗。 更新我的PAC文件后,我所做的更改似乎沒有生效? 瀏覽器將緩存PAC文件,而不是為每個請求檢索它; 在某些情況下,瀏覽器重啟不足以獲取文件的更新版本。為了獲得最新版本,可能需要清除瀏覽器緩存,關(guān)閉所有瀏覽器窗口,然后重新打開瀏覽器應(yīng)用程序。使用PAC文件時,為什么Web瀏覽性能會降低? PAC文件可以利用依賴于本地DNS服務(wù)器的若干功能來解析所請求的主機。這些函數(shù)是isInNet(),isResolvable()和dnsResolve()。如果DNS服務(wù)器響應(yīng)緩慢,則為新(非緩存)主機初始化這些功能將導(dǎo)致延遲,直到DNS服務(wù)器提供結(jié)果。這僅在首次請求主機時發(fā)生,或者主機DNS信息的本地緩存周期已過期。可以通過利用諸如DIG的DNS應(yīng)用程序來隔離這樣的問題,該應(yīng)用程序可以報告DNS服務(wù)器響應(yīng)多長時間。雖然每個環(huán)境都是獨一無二的,但最終用戶可能會注意到超過500毫秒的響應(yīng)時間。許多網(wǎng)站現(xiàn)在使用內(nèi)容傳送網(wǎng)絡(luò),這些網(wǎng)絡(luò)可能提供來自幾個不同主機的內(nèi)容,因此對于較大的網(wǎng)站來說延遲可能很大 每個主機都是串行請求而不是并行請求(每個DNS請求必須在下一個開始之前完成)。為什么瀏覽器在配置PAC文件和網(wǎng)絡(luò)外時最初會停止/掛起? 使用PAC文件的IP地址位置時,瀏覽器將嘗試連接到此IP地址,并等待連接嘗試超時。超時可能不會持續(xù)幾秒或更長時間,并可能導(dǎo)致某些瀏覽器掛起,直到發(fā)生這種情況。首次加載瀏覽器并訪問網(wǎng)站時,將發(fā)生此延遲。鑒于此超時行為,如果要將用戶計算機從網(wǎng)絡(luò)中取出,則建議使用DNS主機名配置瀏覽器以訪問PAC文件。使用PAC文件的DNS主機名時,瀏覽器將嘗試針對外部DNS服務(wù)器解析內(nèi)部DNS主機名。這將導(dǎo)致服務(wù)器通知Web瀏覽器不存在此類DNS記錄。這個過程需要十分之一秒,最終用戶不會注意到。無法訪問PAC文件的瀏覽器將無法打開(直接連接到Internet)。我有多個網(wǎng)絡(luò)適配器,myIpAddress()函數(shù)返回一個不需要的IP地址。我可以重新排序優(yōu)先級嗎? 為myIpAddress()函數(shù)分配值時,瀏覽器將使用操作提供的第一個活動的網(wǎng)絡(luò)適配器。Windows操作系統(tǒng)支持重新安排網(wǎng)絡(luò)適配器順序。單擊“ 開始”,單擊“運行”,鍵入ncpa.cpl,然后單擊“ 確定”。 可以在“網(wǎng)絡(luò)連接”窗口的“LAN和高速Internet”部分中找到可用的連接。 使用“ 高級”菜單,單擊“ 高級設(shè)置”,然后單擊“ 適配器和綁定”選項卡。 在“ 連接”區(qū)域中,選擇要重新排序的連接。使用箭頭按鈕更改順序。 有關(guān)配置網(wǎng)絡(luò)適配器順序的更多說明和信息,請參閱Microsoft支持中心。我正在嘗試使用PAC文件在代理之間平衡流量,但應(yīng)用程序和網(wǎng)站無法加載或生成錯誤消息。我怎樣才能解決這個問題? 有幾個代碼示例可用于在使用PAC文件時嘗試可行的負載平衡解決方案,遺憾的是,這些示例中沒有一個能夠?qū)崿F(xiàn)真正的負載平衡,并且在使用需要持久連接的應(yīng)用程序或網(wǎng)站時常常導(dǎo)致連接管理問題和/或期望交通穿越同一條路線。這些解決方案通常依賴于使用各種JavaScript攻擊的流量路由中的隨機化,因此這些解決方案甚至不提供真正的基于負載的流量分布。 使用位于代理本身前面的硬件解決方案可以最好地實現(xiàn)代理之間的負載平衡,該解決方案可以跟蹤每個代理的負載,并根據(jù)當(dāng)前卷分配此流量。4.2 WPAD問題
盡管DNS配置正確,但我無法解析WPAD主機? Windows 2008以及Windows 2003 DNS的后續(xù)更新為常見的濫用查詢實現(xiàn)了DNS阻止列表(globalqueryblocklist),這可能會阻止WPAD主機的解析。為了允許Windows 2008 DNS解析主機WPAD,請參閱有關(guān)此問題的Microsoft文章。命令行選項不適用于Windows 2003,因此需要對Windows注冊表進行更改。在每個DNS服務(wù)器上打開Windows注冊表(例如,開始>運行> Regedit)。 在下表中找到注冊表項位置。 在GlobalQueryBlockList鍵上單擊鼠標(biāo)右鍵> 修改。 刪除wpad條目,然后單擊“ 確定”。 您需要重新啟動Windows DNS服務(wù)器服務(wù)才能使此更改生效。 使用DHCP WPAD時Firefox沒有找到我的PAC文件,為什么會這樣? Firefox僅支持DNS WPAD,不支持DHCP WPAD。有關(guān)更多信息,請參閱WPAD簡介和瀏覽器支持頁面。?4.3 故障排查
明確的PAC 手動查看PAC文件代碼。由于缺少逗號,括號,花括號或分號,通常會出現(xiàn)語法問題。 確保PAC文件代碼使用pacparser或Proxy Validator等工具進行驗證。 檢查PAC文件規(guī)則是否存在任何意外的路由行為; 常見問題包括缺少代理返回語句和基于通配符的規(guī)則,這些規(guī)則會影響比預(yù)期更大的流量。可能導(dǎo)致直接傳遞到互聯(lián)網(wǎng)的所有流量這樣的錯誤,使得它只能顯示該文件無法運行。 確認使用以下任一內(nèi)容類型提供PAC文件擴展名(.pac或.dat): application / x-ns-proxy-autoconfig application / x-javascript-config 通過在本地文件系統(tǒng)上托管文件來測試PAC文件; 如果文件有效,則會將問題隔離到PAC文件Web服務(wù)器(例如連接或配置)。本地PAC文件測試的URL格式為file:// c:\ folder \ proxy.pac WPAD DHCP 按照明確的PAC文件配置進行故障排除的步驟 - WPAD是部署PAC文件的一種方法,因此如果僅關(guān)注WPAD部分,可能會忽略Web服務(wù)器或文件本身的任何問題。 測試由DHCP推出的PAC文件URL,通過使用配置為顯式PAC文件的瀏覽器代理設(shè)置中的PAC文件URL來執(zhí)行此操作。這將驗證PAC文件或PAC文件服務(wù)器本身是否是問題。 查看Windows注冊表以確認WPAD DHCP推出的URL。 單擊開始,然后選擇運行。 鍵入regedit,然后單擊“ 確定”。 將注冊表樹導(dǎo)航到以下位置:HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Connections \ 在右側(cè)窗格中,雙擊DefaultConnectionSettings。 WPAD DHCP URL將顯示在對話框中 - 示例。 WPAD DNS 按照明確的PAC文件配置進行故障排除的步驟 - WPAD是部署PAC文件的一種方法,因此如果僅關(guān)注WPAD部分,可能會忽略Web服務(wù)器或文件本身的任何問題。 嘗試ping主機wpad,無法解析將表明DNS服務(wù)器出現(xiàn)問題。主機名是否指向正確的Web服務(wù)器?WPAD DNS要求此記錄存在并指向托管PAC文件的Web服務(wù)器。 禁用所有代理/ PAC設(shè)置后,嘗試訪問http://wpad/wpat.dat - WPAD DNS要求這是功能性URL格式。調(diào)查返回的任何錯誤。4.4 官方工具集
概觀
FindProxyForURL.com工具集旨在為疑難解答時的PAC / WPAD部署帶來透明度和清晰度
該工具如何用于故障排除的一些示例包括是否正在使用正確的MIME類型推送PAC文件,PAC文件是否具有有效語法,WPAD DHCP正在推送哪個URL,或者WPAD DNS是否可以找到PAC文件。
發(fā)現(xiàn)的任何PAC文件都會自動下載和測試,同時收集和報告任何通常難以辨別的WPAD DNS / DHCP值。
使用管理員權(quán)限,Windows Vista或更高版本以及Windows Server 2003及更高版本支持Toolset。
下載:
https://drive.google.com/file/d/0BwTarLoLkOv7dzdDWVowOUg0RWM/view
部署
將ZIP內(nèi)容解壓縮到一個文件夾運行Deploy_Toolset.bat,工具集將執(zhí)行其操作,并在完成打開數(shù)據(jù)文件后執(zhí)行
?參考文獻:
http://findproxyforurl.com/
轉(zhuǎn)載于:https://www.cnblogs.com/zyxnhr/p/10980279.html
總結(jié)
以上是生活随笔為你收集整理的PAC 代理自动发现简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是IP Core?
- 下一篇: 免费获取所有股票5分钟级别及以上的交易数