Internet Explorer不会自动发现http://wpad/wpad.dat自动配置


9

这个问题使我感到沮丧。

我已经建立了一个名为wpad.dat的文件(实际上是重命名的proxy.pac文件),并将其放置在内部网站上。我已经设置了DNS条目,因此主机名wpad是Web服务器的CNAME。我在网站上为.dat文件设置了适当的MIME类型。我从DNS全局查询阻止列表中删除了wpad。

我知道配置文件在语法上是正确的,因为如果我手动将Internet Explorer的“使用自动配置脚本”设置http://wpad/wpad.dat为代理,则显然已使用该文件(即,我看到我的浏览显示在日志文件以及我拒绝提供的某些站点中我的替换页。)

但是,据我了解,我需要做的只是勾选“自动检测设置”复选框,Internet Explorer本身应该寻找http://wpad/wpad.dat-或更准确地说,http://wpad.localdomain/wpad.dat它也可以工作。

谁能帮我诊断这个问题?我只是看不到我错过了什么或出了什么问题。

谢谢 !!

(请注意,也可以使用DHCP来设置自动配置文件,但是我们有一个多站点组织,其中DHCP由服务器和路由器(取决于位置)混合提供,以及使用3G蜂窝调制解调器的远程办公室,它们具有非常基本的功能。 DHCP设施,此外,据称只有Internet Explorer支持通过DHCP进行Web代理自动发现-Firefox和Safari均不支持。我们实际上不使用任何一种浏览器,但为了最大程度地兼容以及将来易于管理/更改我认为通过一个不错的单个DNS条目使它正常工作肯定更好。)


你有没有得到这个。我有完全一样的问题。我非常想把责任归咎于IE,因为firefox可以很好地自动检测,但是IE无法检测并选择默认根目录!
Kip

我没有 我最终不得不为“使用自动配置脚本”指定一个值。这令人气愤,因为所有文献都说我所做的是正确的。但是,使用这里给出的建议(例如,使用WireShark查看正在发生的事情,检查IIS日志等),我相信IE只是根本不试图打开wpad / wpad.dat,即使所有文档都说应该这样做!
大卫·威廉姆斯

对我而言,这是由于存在多个接口,IE在调用WPAD myIpAddress()时选择了VirtualBox仅主机适配器。另请参阅serverfault.com/a/425966/11594
Chris J

Answers:


16

大卫,

万一您仍然遇到这个问题,实际上很容易解决。但这没有任何文献记载,我花了很长时间才在我的环境中对其进行分类。您所做的一切都很好,这就是我所说的IE如何获取WPAD信息并连接到Web服务器的错误。

首先,您不能将CNAME记录用于WPAD。使用A记录。我知道这很愚蠢,应该没什么区别,但是绝对是这样。因此,请在DNS中删除您的CNAME,并为Web服务器的IP地址创建A记录。

其次(这可能对您来说更棘手),您需要将WPAD.DAT文件放在默认网站的根目录中,该默认目录正在侦听上面分配的IP地址。这是关键。它不适用于主机头字段或类似的内容。

说明:IE所做的是将名称WPAD解析为IP地址。它必须能够直接将其解析为IP地址。如果它像CNAME查询一样解析为其他名称,则它将不起作用。因此,一旦IE获得WPAD解析的IP地址,它实际上所做的就是连接到http:// <> /WPAD.dat。如果您在同一台Web服务器上设置了另一个网站,侦听端口80,但使用的主机标头字段与我一样(即,IE,“默认网站”以及“ WPAD网站”),那么您将一切设置正确,但是由于这个原因它无法正常工作。将WPAD.DAT文件的副本放在默认网站的根目录下,一切应该开始工作。

当然,如果您无法访问该网站的根目录(或者您无法保护该网站的根目录),那么您可能需要考虑将WPAD网站移至可以位于其上的其他服务器上分配给该服务器的IP地址的根。

反正给个机会。那是对我有用的过程。我花了很长时间才开始工作,但是现在已经可靠地工作了很长时间了。以上只是我对IE与WPAD.DAT文件相关的工作方式的理解,可能并不正确-只是基于对它在我自己环境中的作用的观察。您的情况可能有所不同,但我至少会花一些钱解决您的问题。

让我知道你是怎么办的!Matto :)


我看到了同样的问题Matto。我们将wpad.dat托管在托管其他网站的服务器上,因此我们将IIS绑定与主机头wpad和wpad.our.domain一起使用以提供代理配置文件。当我们的DNS是使用CNAME wpad到真正的fqdn.our.domain时,Firefox可以工作,但是Internet Explorer / WinHttp Client会由于针对FQDN的HTTP请求而失败-它太聪明了,看到CNAME然后重定向以直接从中请求名称一个记录。切换到直接为“ wpad”固定WinHTTP / IE的A记录!
Mister_Tom

3

解决IE8的另一种方法(可能也适用于IE7)是更改组策略中的几个设置。

  • “计算机配置”>“管理模板”>“ Windows组件”>“ Internet Explorer”>“按计算机(而不是按用户)”设置代理设置=启用
  • 用户配置>管理模板> Windows组件> Internet Explorer>禁用自动代理脚本的缓存=启用

修改了上述2个设置后,我就能够在IE8中使用WPAD设置。

注意:您不需要在域环境中才能使用它。在工作组PC上,只需使用GPEDIT.MSC即可更改本地计算机策略。

请参阅:如何在Internet Explorer中禁用自动代理缓存

问候,凯姆


3

这个serverfault问题在Google搜索中显得很高,这就是为什么我要回复它。我希望其他人觉得这很有用,因为这个问题对我来说真的很痛苦。

我们大约有50位用户的域上的几乎每台Windows 7计算机都受到了影响-就我而言,四处走动并重置IE是不可接受的,因此我最终如下解决:

首先,这里有几个有用但很难找到的链接:

http://blog.frankleonhardt.com/2011/wpad-and-windows-7-and-internet-explorer-8/

http://kb.k12usa.com/Knowledgebase/Proxy-Auto-Detect-WPAD-Issues-With-IE-Windows-7

http://infratalk.wordpress.com/2011/09/10/troubleshooting-windows-proxy-autodiscovery-wpad/

我建议您先阅读每个链接。

以下来自拳头链接的引文特别有趣:

“事实证明,Microsoft的那些聪明人已经实施了一项功能,可以在几次尝试失败后停止检查WPAD服务器。它认为它知道漫游机器在哪个网络上,如果没有,则在注册表中为自己留一个注释会再次打扰。如果只是实施它,则会大量使用。”

我在链接中发现了wpad reg键,这实际上是我在google中找到链接的方式。在测试过程中,我变得无情,发现以下工作原理:

关闭所有IE会话,打开“控制面板”->“ Internet选项”->“连接”选项卡->“局域网设置”,然后取消选中“自动检测设置”(以及所有其他选项)-不要再次打开IE。

删除以下注册表项:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Wpad

打开控制面板-> Internet选项->连接选项卡->局域网设置,然后单击“自动检测设置”。

如果刷新注册表编辑器窗口(F5),则应该看到wpad reg密钥已重新创建,但是它将为空。

现在打开IE。再次刷新wpad reg,您应该看到它填充有包含各种wpad信息的子项。

这是一个修复程序,无需重置IE,但我仍然需要以某种方式在50台计算机上部署它。我这样做如下:

我通过使用如上所述重置的计算机创建了以下注册表(不要复制该逐字记录,因为它是根据我们的域创建的,并且我编辑了域名),因此手动添加了wpadOverride行:

Windows Registry Editor Version 5.00

[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Wpad]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Wpad]
"WpadLastNetwork"="{F03DC3BF-50F6-4DB1-9570-CF84875F6EDC}"
"WpadOverride"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Wpad\a4-0c-c3-62-7b-2d]
"WpadDecisionReason"=dword:00000000
"WpadDecisionTime"=hex:10,50,19,cf,b1,73,cc,01
"WpadDecision"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Wpad\{F03DC3BF-50F6-4DB1-9570-CF84875F6EDC}]
"WpadDecisionReason"=dword:00000000
"WpadDecisionTime"=hex:10,50,19,cf,b1,73,cc,01
"WpadDecision"=dword:00000001
"WpadNetworkName"="example.local"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Wpad\{F03DC3BF-50F6-4DB1-9570-CF84875F6EDC}\a4-0c-c3-62-7b-2d]

这已添加到用户登录脚本中,并且基本上删除了reg键并将其替换。

然后,我创建了一个GPO以禁用“自动检测设置”,并手动添加了wpad网址:

用户配置->策略-> Windows设置-> Internet Explorer维护->连接->自动浏览器配置| 取消勾选“自动检测配置设置”并勾选“启用自动配置”,然后将“ http://wpad.example.local/wpad.dat ”插入“自动配置URL”。

我还启用了“ IE WPAD决策缓存替代”(请参见上面的第二个链接)。

然后,我将其保留了几天,以尽可能多地部署到计算机上,然后禁用“自动配置URL”并再次勾选“自动检测配置设置”,并从登录脚本中删除了reg键。

我这样做是因为它似乎无法通过简单地取消选中然后通过GPO勾选“自动检测配置设置”框来起作用,因此最终可能不需要添加URL。

我曾希望WpadOverride可以在没有额外步骤的情况下工作,但不幸的是,在我看来,它不是。

顺带使用cname在我们的网络上效果很好。

之后,在修复期间关闭的所有计算机都将手动进行处理。

希望这对其他人像我通过Google一样遇到此问题有所帮助。微软的这种“功能”简直是愚蠢的。



2

我有完全相同的问题,但仅适用于几台计算机...

Wireshark显示IE在到达目标Web服务器之前不会在网络上进行任何尝试。设置为托管wpad的Web服务器将响应该特定IP地址上的任何主机名。

通过执行以下操作,我得到了无法使用的IE8客户端再次下载wpad.dat:

  1. 工具-> Internet选项->高级->重置
  2. 关闭IE,然后重新打开

不幸的是,在修改了wpad.dat文件之后,很明显,第一次下载wpad.dat之后的IE8不再进行任何进一步的下载:-(



1

尝试在客户端计算机上运行Wireshark ...查看IE在看什么?您的网络服务器是否记录了它曾经为任何wpad服务?


感谢Wireshark的建议。它给出了有趣但令人惊讶的结果。尽管选中了“自动检测设置”,但IE一次也没有引用wpad。没有DNS查找来解析带有任何后缀的名称wpad。当我输入“使用自动配置脚本”的手动条目时,我可以看到在wpad上正在执行nslookups。因此,看来IE实际上根本没有尝试查找自动配置文件!
David M Williams,2009年

1
确保DHCP上的选项252未设置为“”或类似名称-可能会引起混乱。如果您未设置本地域,wpad也可能无法正常工作。
汤姆·牛顿

1

Internet Explorer将尝试访问“ http: //wpad.your-machine's-dns-suffix.com/wpad.dat”。确保配置为提供wpad.dat文件的Web服务器正在回答完全限定的主机名。(顺便说一句,IE也将尝试每个父域来分解DNS后缀。看看http://wpad.com。拥有该域的人如果愿意的话可能真的非常邪恶。 )


1

IE版本6.0.2900.xxxx会寻找文件名“ wpad.da”而不是“ wpad.dat”!请注意!;)只需使用嗅探器或检查您的Web服务器日志。

希望这可以帮助!


0

正如汤姆·牛顿(Tom Newton)建议运行Wireshark来查看IE在做什么(DNS查询,HTTP GET等),还要查看您的Web服务器日志。
请注意,IE在GET查询中将IP而不是主机名(wpad)作为“主机”发送,这样您就不能在Web服务器上使用虚拟主机“ wpad”。


第二点很有趣。如果您说的是真的,那很可能是问题所在。我不希望wpad.dat位于主网站的根目录中,所以可以为wpad“网站”创建一个新目录和虚拟主机。但是,如果IE自动查找10.1.1.1/wpad.dat而不是wpad.domain.local / wpad.dat,则将是问题所在。我将首先尝试...
David M Williams,2009年

不,那没用。我在想,尽管选中了“自动检测设置”框,IE仍不执行任何操作。
戴维·威廉姆斯

就像对汤姆答案的评论一样,您在Wireshark中没有看到任何内容,这可能是IE版本(哪个版本?)中的错误或Windows配置中的某个错误(安全策略?,GPO?)禁用了此功能。(但我不知道它可能是什么设置,这只是一个想法)
半径

0

这种方法对我有用

   1. Tools->Internet Options->Advanced->Reset
   2. Closed IE and re-opened it

我认为IE8让我感到困惑,他们来自MS,但是为什么它不能正常工作。虽然Firefox运作良好。


0

如果使用DHCP,则有一个设置(选项252,IIRC),用于声明wpad文件的位置。我认为您对Firefox无法使用此功能不正确。

此外,搜索列表中是否有localdomain?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.