WPAD原理介绍暨故障排查(三)

WPAD 的部署原理暨故障排查
  WPAD Web Proxy Auto Discovery 的缩写,意思是 Web 代理服务器自动发现。 WPAD 的设计目的是让浏览器能自动发现代理服务器, 这样用户可以轻松访问互联网而且无需知道哪台计算机是代理服务器。在 ISA2006 中, WPAD 不仅能让客户机浏览器自动发现代理服务器,还可以用于防火墙客户端自动发现代理服务器。显然, WPAD 对代理服务器的透明处理让管理员轻松了不少, 管理员不再需要去每台客户机上设置代理服务器参数了。但樱桃好吃树难栽, WPAD 的部署并非都是一帆风顺, WPAD 的部署可以借助 DNS 服务器或 DHCP 服务器,容易出问题的是用 DNS 服务器进行部署,尤其是在工作组环境下问题更多。今天我们就来构造一个实验环境,为大家剖析 WPAD 的工作原理以及故障原因。
实验拓扑如下图所示。内网计算机在工作组环境, Florence DNS 服务器, Perth 是客户机, Beijing ISA2006 服务器。
DNS 来实现 WPAD ,原理如下:
1 Perth DNS 服务器发出查询请求,要求获得 WPAD 主机的 IP 地址。
2 Perth 根据查询到的 IP 地址,去 WPAD 主机的 80 端口下载 WPAD.DAT WSPAD.DAT WPAD.DAT 可用于配置客户机浏览器,让浏览器自动发现代 理服务器; WSPAD.DAT 则用于配置客户机上的防火墙客户端自动发现代 理服务器。
从以上的原理分析,首先 WPAD 主机要在 80 端口提供 wpad.dat wspad.dat ,有了这两个文件,客户机上的浏览器或防火墙客户端才能实现自动配置。其次, DNS 服务器要创建相关记录,当客户机来查询时,将解析结果指向 WPAD 主机。
好,我们先来解决第一个问题, WPAD 主机如何能够提供 WPAD.DAT WSPAD.DAT 两个文件呢?最简单的办法是让 ISA 服务器作 WPAD 主机,同时提供两个配置文件,具体做法是,在 ISA 服务器上依次点击 开始-程序- Microsoft ISA Server ISA 服务器管理-配置-网络-内部,右键点击“内 部”,选择属性,如下图所示,切换到“自动发现”标签,勾选“为此网络发布自动发现信息”,这样 ISA 就可以在 80 端口提供 WPAD.DAT WSPAD.DAT 两个文件了。
 
 

测试一下,看看 ISA 服务器是否提供了配置文件。如下图所示,在浏 览器中输入 http:// 10.1.1 .254/wpad.dat ,测试结果如下图所示,这表明 ISA 服务器已经在 80 端口发布了 WPAD.DAT ,用同样的方法可知 ISA 也发布了 WSPAD.DAT
 
 
WPAD 主机已经在 80 端口提供了 WPAD.DAT WSPAD.DAT ,一个问题解决了,接下来我们考虑另一个问题,客户机到底是怎么通过 DNS 来查询 WPAD 主机呢?具体是这样的,客户机向 DNS 发出一个查询请求,请求解析的域名为 WPAD+X 。怪了,怎么会是 X 呢? X 代表不确定性,如果客户机所在的域为 itet.com ,那么客户机就请求解析 wpad.itet.com ;如果客户机没加入域,但计算机名的后缀为 abc.com ,那么客户机就请求解析 wpad.abc.com ;如果客户机既没有加入域,也没有计算机名后缀,那客户机就请求解析 wpad 。这里是 WPAD 配置的关键所在,为什么论坛上很多管理员在域环境配置 WPAD 很正常,换到工作组环境就容易出问题呢?因为 域环境下有统一的名称边界,客户机请求解析的域名后缀是固定的,而工作组的有组织无纪律特性决定了它的解析请求是无规律的。
下面举个具体的例子。如下图所示, Perth 属于工作组, Perth 10.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. IP ISA 服务器的内网地址。
 
 
OK ,如下图所示, WPAD 记录已经创建完毕,我们来试试能否发挥作用 呢?
 
 
这次我们在 Perth 上安装上防火墙客户端,从理论上分析,防火墙客户端需要从 WPAD 主机下载 WSPAD.DAT ,我们双击防火墙客户端,切换到“设置”标签,选择“自动检测到的 ISA 服务器”,点击“立即检测”。
 
 
测试结果如下,防护器客户端成功地发现了代理服务器。
 
别忘了把自动检测的过程用 Ethereal 抓下来,如下图所示,我们可以很清 楚地看到, Perth 请求 DNS 服务器解析域名 WPAD DNS 服务器将域名解析为 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 ,并新建一个名为 WPAD A 记录,如下图所示。现在 WPAD 记录已经有了,就等着客户机来查询了。
 
 
在客户机上用防火墙客户端测试一下,如下图所示,我们可以看到客户机发出的查询已经改为 wpad.itet.com 了,服务器把域名解析为 ISA 的内网 IP ,随后客户机就去 ISA 下载 wspad.dat 了。呵呵,如果客户机是在域环境下,根本就无 需更改计算机名后缀,想想其实还是有 AD 比较方便。
 
 
总结:用 DNS 部署 WPAD 在域环境下比较合适,在工作组环境下就需要进行一些调整,但无论是创建 DNS 私有根还是更改客户机的计算机名后缀,都不算是非常完美的解决方案。因此我们建议在工作组环境下可以考虑用 DHCP 来解决这个问题,我们在下篇博文中将介绍如何 利用 DHCP 来解决 WPAD 部署的问题。

你可能感兴趣的:(原理,故障,休闲,排查,WPAD)