当前位置: 首页 > 服务器 > 代理服务器 > 正文

WPAD的原理及实现过程

时间:2015-02-10 IBM 曲巍,殷万妮

WPAD 通过让浏览器自动发现代理服务器,使代理服务器对用户来说是透明的,进而轻松访问互联网。WPAD 可以借助 DNS 服务器或 DHCP 服务器来查询代理自动配置(PAC)文件的位置。

引言

代理服务器大多被用来连接 INTERNET (国际互联网)和 INTRANET(企业内部网)。在多个局域网中需设置不同的代理服务器参数来使浏览器访问网络。在微软 Internet Explorer ( IE )5.0 以上版本中的功能中已经具备了自动切换代理服务器的功能。网络管理员需要事先部署代理服务器配置文件,然而用户方的设置却很简单。在这一功能中使用了被称为“WPAD”(Web Proxy Auto-Discovery protocol)的协议。

浏览器原本具有读入并解析代理服务器的配置文件,并将其配置信息设置到浏览器中的功能。配置文件是使用 Java Script 描述的,通常具有“.js”,“.jvs”,“.pac”(proxy auto-configuration)等扩展名的文件。

自动代理检测由系统确定,Web 代理服务器代表客户端发送请求。自动代理检测启用时,系统会尝试定位到代理发送请求后返回的代理配置文件位置。若查找到代理配置文件,那么在使用 Web 代理服务器实例得到代理信息、数据请求或响应信息时,在本地计算机上进行下载,编译并运行。

被部署的大多数配置文件的格式是 Proxy    auto-config (PAC)。最初,PAC 是由 Netscape 在 1996 年为 Netscape Navigator 2.0 设计的。WPAD    协议草案由 Inktomi、微软、RealNetworks、Sun Microsystems 几个公司共同提出。WPAD 可支持所有主流浏览器,首次存在于 Internet Explorer 5.0 中。

WPAD 对代理服务器的透明处理使得管理员不再需要去每台客户机上设置代理服务器参数了。自动检测受动态主机配置协议 (DHCP) 和域名系统 (DNS) 的支持,浏览器通过 DHCP 和 DNS 的查询来搜索 PAC 文件的位置。

Proxy Auto-Config(PAC)文件

在开始介绍 WPAD 原理之前,有必要首先对代理自动配置(PAC)文件有一个概念上的认识。代理自动配置(PAC)文件定义了浏览器和其他用户代理如何自动选择适当的代理服务器来访问一个 URL。要使用 PAC,我们应当在一个网页服务器上发布一个 PAC 文件,并且通过在浏览器的代理链接设置页面输入这个 PAC 文件的 URL 或者通过使用 WPAD 协议告知用户代理去使用这个文件。

一个 PAC 文件是一个至少定义了一个 JavaScript 函数的文本文件。该函数 FindProxyForURL(url, host)有 2 个参数:

url 是一个对象的 URL;

host 是一个由这个 URL 所衍生的主机名。

按照惯例,这个文件名字一般是 proxy.pac。 WPAD 标准使用 wpad.dat。一个非常简单的 PAC 文件内容如下:

function FindProxyForURL(url, host) {
   if (url== 'http://www.baidu.com/') return 'DIRECT';
   if (host== 'twitter.com') return 'SOCKS 127.0.0.10:7070';
   if (dnsResolve(host) == '10.0.0.100') return 'PROXY 127.0.0.1:8086;DIRECT';
   return 'DIRECT';
}

WPAD 的原理

DHCP 的自动检测

通过 DHCP 服务器,管理员可以集中指定全局 TCP/IP 参数和子网特定的 TCP/IP 参数,并可使用保留地址定义客户端的参数。如果客户端计算机在子网之间发生了移动,则在启动该计算机时,会自动重新配置 TCP/IP。

通过 DHCP 服务器部署 WPAD 的原理如下。首先确保 DHCP 服务器有效,然后为每个包含客户的子网建立了作用域。DHCP 服务器中的 252    选项通常被当作查询或注册用的指针,我们可以通过 252 项发现打印机、时间服务器、WPAD 主机以及其他的网络服务器。在 DHCP 服务器中添加一个用于查找 WPAD 主机的 252 项,252 项是一个字符串值,内容是部署在 WPAD 主机上 PAC 文件的 URL。为适当的作用域配置 252 项,就算只有一个作用域。具体部署 DHCP 服务器的操作,请见参考文献:ISA 防火墙之利用 DHCP 部署 WPAD。

因此 DHCP 客户机便可获得 PAC 文件的 URL,当客户机需要对浏览器或防火墙客户端进行自动配置时,就可以下载该 PAC 文件并得到代理服务器的地址。

图 1.DHCP 的自动检测示意图