Internet Explorer 无法自动发现 http://wpad/wpad.dat 自动配置

Internet Explorer 无法自动发现 http://wpad/wpad.dat 自动配置

这个问题让我很沮丧。

我已设置了一个名为 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 条目来实现这一点肯定更好。)

答案1

大卫,

如果您仍然遇到此问题,实际上修复起来相当简单。但它没有在任何地方记录,我花了很长时间才在我的环境中解决它。您所做的一切都很好,我称之为 IE 获取其 WPAD 信息并连接到 Web 服务器的方式中的错误。

首先,您不能对 WPAD 使用 CNAME 记录。请使用 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 :)

答案2

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

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

通过修改上述 2 个设置,我能够让 WPAD 设置在 IE8 中正常工作。

注意:您无需处于域环境中即可使用此功能。在工作组 PC 上,只需使用 GPEDIT.MSC 即可更改本地计算机策略。

看:如何在 Internet Explorer 中禁用自动代理缓存

问候,Kym

答案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/

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

第一个链接中的以下引言特别有趣:

“事实证明,微软的聪明人已经实现了一项功能,在几次尝试失败后停止检查 WPAD 服务器。它认为它知道漫游机器在哪个网络上,如果它不想再查找,它会在注册表中为自己留下一条注释。如果你刚刚实现它,那么它就会有很大用处。”

我找到了链接中注明的 wpad 注册表项,实际上我是通过谷歌找到链接的。我在测试过程中非常认真,发现以下方法有效:

关闭所有 IE 会话,打开控制面板 -> Internet 选项 -> 连接选项卡 -> Lan 设置并取消勾选“自动检测设置”(和所有其他选项) - 不要再次打开 IE。

删除以下注册表项:

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

打开控制面板->Internet 选项->连接选项卡->Lan 设置并勾选“自动检测设置”。

如果您刷新 regedit 窗口(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]

它被添加到用户登录脚本中,基本上删除了注册表项并替换它。

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

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

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

然后我将其放置几天以部署到尽可能多的计算机,然后禁用“自动配置 URL”并再次勾选“自动检测配置设置”并从登录脚本中删除注册表项。

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

我曾希望 WpadOverride 无需额外步骤即可工作,但不幸的是,在我的情况下并没有成功。

顺便说一下,使用 cname 在我们的网络上运行良好。

修复期间关闭的所有计算机此后都只需手动处理。

我希望这能帮助那些像我一样通过谷歌遇到这个问题的人。微软的这个“功能”简直太愚蠢了。

答案4

另外需要注意的事项详见以下 URL: https://technet.microsoft.com/en-au/library/cc995158.aspx

DNS 可能启用了阻止列表,其中 wpad 被定义为阻止记录,这是一种保护措施。

相关内容