WPAD的部署原理暨故障排查<?XML:NAMESPACE PREFIX = O />
 WPAD是Web Proxy Auto Discovery的缩写,意思是Web代理服务器自动发现。WPAD的设计目的是让浏览器能自动发现代理服务器,这样用户可以轻松访问互联网而且无需知道哪台计算机是代理服务器。在ISA2006中,WPAD不仅能让客户机浏览器自动发现代理服务器,还可以用于防火墙客户端自动发现代理服务器。显然,WPAD对代理服务器的透明处理让管理员轻松了不少,管理员不再需要去每台客户机上设置代理服务器参数了。但樱桃好吃树难栽,WPAD的部署并非都是一帆风顺,WPAD的部署可以借助DNS服务器或DHCP服务器,容易出问题的是用DNS服务器进行部署,尤其是在工作组环境下问题更多。今天我们就来构造一个实验环境,为大家剖析WPAD的工作原理以及故障原因。
实验拓扑如下图所示。内网计算机在工作组环境,Florence是DNS服务器,Perth是客户机,Beijing是ISA2006服务器。
<?XML:NAMESPACE PREFIX = V />
用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://<?XML:NAMESPACE PREFIX = ST1 />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部署的问

转载于:https://blog.51cto.com/cyc4634/141712

WPAD原理介绍暨故障排查:ISA2006系列之三相关推荐

  1. 企业根CA方法客户机证书的解决方案,ISA2006系列之三十

    企业根CA如何发放客户机证书-L2TP证书问题的补充说明<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:offic ...

  2. ISA2006系列之三 详解防火墙的三种客户端(上)

    ISA Server 支持三种类型的客户端,分别是web代理客户端,secureNAT客户端和防火墙客户端,在这篇博文中我们将详细介绍这三种类型的客户端的如何配置及差异, ISA Server客户端的 ...

  3. mDNS故障排查(译)

    WLC上mDNS网关的理解及排查 第一部分:介绍 这篇文档描述了Bonjour协议在WLC上的操作,该文档旨在协助工程师理解该工作流量的原理以及提供故障排查的指导. 第二部分:需求和前提 知识需求: ...

  4. 计算机排查方法,电脑主板故障排查方法

    电脑主板故障排查方法 电脑主板故障如何排除,具体的排查方法有多少种呢,下面小编为你介绍电脑主板故障排查方法吧! 第一种:清洁法 如果主板上存有导电杂物,只要用毛刷轻轻刷去主板上的灰尘就可以了,主板上一 ...

  5. GC原理介绍、排查FGC及线上故障的步骤

    一.GC的原理介绍 JAVA堆分为新生代(Young Generation)和老年代(Old Generation)( 也就是图中对应的New Generation 和 tenured Generat ...

  6. ethtool 原理介绍和解决网卡丢包排查思路(附ethtool源码下载)

    Table of Contents 1. 了解接收数据包的流程 将网卡收到的数据包转移到主机内存(NIC 与驱动交互) 通知系统内核处理(驱动与 Linux 内核交互) 2. ifconfig 解释 ...

  7. SSD系列算法原理讲解----(1)SSD系列算法介绍(主干网络、多尺度Feature Map预测)(笔记)

    SSD系列算法原理介绍 SSD算法介绍: Single Shot MultiBox Detector(One-stage方法) - Wei Liu在ECCV 2016提出 - 直接回归目标类别和位置 ...

  8. 目标检测—SSD系列算法原理介绍

    一.SSD系列算法原理介绍 1.1 SSD算法介绍: ➢Single Shot MultiBox Detector (one-stage方法)                  ●Wei Liu在EC ...

  9. JVM系列之故障排查与性能调优(重点)

    1.故障排查与性能调优 1.1.概述 1.1.1.生产环境中的问题? 生产环境发生了OOM,该如何处理?如何判断是否是内存泄漏导致的? 生产环境应该给Java进程分配多少内存? 生产环境应该如何选择垃 ...

最新文章

  1. 分享2020 几个好用的ip地址归属地查询
  2. Win Ser 2008/2012 (R2) + NVIDIA Optimus 笔记本显卡
  3. Nature Genetics:微生物基因组如何适应植物?(news views)
  4. php网站挂linux,Linux环境下php实现给网站截图的方法
  5. Kuskal/Prim POJ 1789 Truck History
  6. Solr学习笔记——查询
  7. java导出excel 科学计数法_基于Java将Excel科学计数法解析成数字
  8. 使用windows资源管理器打开jar
  9. 牛逼! IDEA 2020 要本土化,真的是全中文了!中国开发者话语权越来越大了
  10. [16]manjaro安装nvidia驱动
  11. [转]js和jquery获取窗体高度
  12. 1.hexo+next友情链接页面搭建
  13. 三大变换与自控(二)傅里叶级数的复数形式推导
  14. Python实践3-Tenacity提高自动测试健壮性
  15. OpenHarmony恢复启动子系统init进程之服务管理与发布
  16. Linux必学的60个命令(文字整理版)
  17. 数据驱动的瑞幸咖啡未来会能赚!
  18. 互联网面试——WPF面试问题
  19. LeetCode题解(1079):活字印刷(Python)
  20. 看不懂这些,你可能已经落伍了 | 经济学人早报精选20210913

热门文章

  1. inv(a) matlab,在MATLAB中,inv(A)表示的是()
  2. CMake 入门与进阶
  3. 光动能表怎么维护_西铁城手表推荐,西铁城光动能表推荐选购指南
  4. java swing事件_第四节 Java Swing事件处理
  5. com 对象与其基础 rcw 分开后就不能再使用_如何使用 Kubeflow 机器学习流水线
  6. 数据库:Redis数据库优点介绍
  7. IntelliJ IDEA 2021.1更新了好多实用功能,赶紧下载吧!
  8. 后端技术:命名不规范,lombok泪两行!
  9. 收集实用的MySQL使用技巧
  10. c# 正则表达式 html标签,C#匹配HTML标签,正则表达式谁会?