WPAD 的工作原理
启用自动代理检测后,支持该功能的客户端会查找代理自动配置(PAC)文件。具体方式取决于客户端和网络:客户端可能通过 DHCP 选项 252 获取文件 URL,也可能使用 DNS 解析本地域中的 wpad 主机名。
客户端 → DHCP 选项 252 或 DNS "wpad" → PAC 文件
PAC 规则 → PROXY proxy.example.com:8080
→ DIRECT
客户端下载 PAC 文件后,会针对每个目标地址调用其中的 FindProxyForURL 函数。返回结果可以指定一个正向代理、提供多个备用代理,或返回 DIRECT 以绕过代理。如果选用了代理,网站看到的会是代理的 IP 地址,而不是客户端的公网 IP。
WPAD、PAC 与透明代理的区别
WPAD 用于查找配置,PAC 文件则包含实际的流量路由规则。
| 方法 | 如何找到配置 | 客户端行为 |
|---|---|---|
| WPAD | 通过 DHCP 或 DNS 发现 | 解析并执行发现的 PAC 文件 |
| 手动 PAC | 管理员提供 URL | 解析并执行指定的 PAC 文件 |
| 透明代理 | 不需要 PAC 文件 | 网络拦截流量 |
应用无需知道代理地址,透明代理也能处理符合条件的流量。WPAD 则需要操作系统、浏览器或应用支持。
代理用户为什么要了解 WPAD
- 规则可能会绕过代理。 PAC 文件可以让内网流量直接连接,同时让访问公网网站的流量经过代理。
- 不同应用的支持情况不同。 有些程序会遵循系统代理设置,有些则要求明确指定主机和端口。
- 可能仍需认证。 WPAD 只负责发现设置,不一定会提供代理认证凭据。缺少凭据可能导致 407 错误。
- 显式设置可能具有更高优先级。 手动设置、PAC URL 与 WPAD 的优先顺序取决于客户端。
如何安全使用 WPAD
只有在信任网络的 DHCP 和 DNS 基础设施时,才应启用 WPAD。如果攻击者控制了自动发现机制,就能提供 PAC 文件,将流量导向非预期代理。
管理员应管控 wpad 主机名的注册,限制 DHCP 设置的更改权限,并检查 PAC 规则。基于 DNS 的传统 WPAD 通常通过 HTTP 获取 wpad.dat,因此本地网络的安全性十分重要。不需要自动检测的设备应关闭此功能,尤其是经常接入非受管网络的设备。
常见问题
WPAD 和 PAC 文件是一回事吗?
不是。WPAD 是发现配置的方法,PAC 文件则包含为每个 URL 选择代理或直接连接的规则。
要不要禁用 WPAD?
视情况而定。如果网络并未有意提供自动代理设置,应将其禁用。受管理的办公网络可能需要 WPAD,因此应先咨询管理员。
WPAD 能解密 HTTPS 流量吗?
单靠 WPAD 不行。WPAD 可以让 HTTPS 连接经过代理,但要解密连接内容,还需另行配置拦截代理,并使用设备信任的证书。