这个问题让我很沮丧。
我已设置了一个名为 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 被定义为阻止记录,这是一种保护措施。