博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPAD原理介绍暨故障排查:ISA2006系列之三
阅读量:6635 次
发布时间:2019-06-25

本文共 3825 字,大约阅读时间需要 12 分钟。

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
部署的问题。
本文转自yuelei51CTO博客,原文链接: http://blog.51cto.com/yuelei/83841,如需转载请自行联系原作者
你可能感兴趣的文章
优秀Java书单整理
查看>>
终于解决了一个Win7 下 VS 编译的问题,困扰了我好几个月
查看>>
创建,增加,修复,删除raid
查看>>
企业级nginx基础、负载、读写分离技术(续一)
查看>>
火墙的设定和磁盘加密
查看>>
python--》客户端与服务端文件的下载
查看>>
Important parameters For Oracle BRM Application in 11gR2
查看>>
ByteBuffer中allocate 与allocatDirect 不同之处?
查看>>
利用DBMS_ADVISOR.TUNE_MVIEW包生成物化视图创建语句
查看>>
系统安装EMC多路径软件
查看>>
smokeping安装部署最佳实践
查看>>
Idrac卡偶尔不可用处理办法
查看>>
vmdk通过v2v转换后operating system not found
查看>>
Web前端——Head区域代码规范
查看>>
8.python之面相对象part.8(__slots__属性)
查看>>
elk入门概念详解
查看>>
jquery dom元素操作
查看>>
SQL 2005 学习笔记
查看>>
经典95
查看>>
端口扫描shell版和python版
查看>>