🔗 使用 DNS 进行 Web 代理自动检测
🔗 概述
WPAD 可以使用 DNS 来探测是否存在 WPAD Web 服务器以从中获取代理配置文件。WPAD 规范列出了多种可能性;唯一必需的 DNS 方法是“知名别名”方法。
“知名别名”方法仅要求“wpad.”主机具有 IN A DNS 资源条目。用户代理会构造一系列 DNS 查找来发现此主机名,如果找到该主机,它将查询该主机上的 Web 服务器以获取代理自动配置文件的代理。
WPAD 规范中记录了其他几种与 DNS 相关的方法;本文档不涵盖这些内容。
🔗 解释
支持 WPAD 的用户代理将构造一个 DNS 查找,以查找域名列表中的“wpad”主机。它可能会从各种来源组装此域名列表,包括:
- 主机的 IP 的反向 DNS 解析;
- 配置的 DNS 域名搜索列表
用户代理然后尝试对域名搜索列表中的每个域条目进行地址 (A) 查找,并在前面加上“wpad”。如果找不到 A 记录响应,它将尝试域名搜索列表中的下一个域。一些客户端也可能删除域名中最左侧的部分然后重试。
如果找到 A 记录,用户代理将尝试在 HTTP 端口(通常是端口 80)上连接到该地址的 Web 服务器,并请求“/wpad.dat”文件,将 Host 设置为主机名。
🔗 示例
此示例特定于浏览器和 IPv4。
一个客户端的 IP 是 1.2.3.4,解析为主机名 host-1-2-3-4.pop1.isp.net。客户端的 DNS 搜索设置为“isp.net”。ISP 在 wpad.isp.net 上运行着一个 WPAD 服务器。
- 客户端对 1.2.3.4 进行 PTR 查找,发现它解析为主机名 host-1-2-3-4.pop1.isp.net。
- 客户端对 wpad.pop1.isp.net 进行 A 查找,发现它不存在。
- 客户端对 wpad.isp.net 进行 A 查找,发现它存在。
- 客户端向 wpad.isp.net 发出 HTTP 请求,请求
http://wpad.isp.net/wpad.dat。 - 客户端检索 wpad.dat 并将其用作其代理自动配置脚本。
🔗 实现问题
- 一些报告指出,各种 WPAD 实现要求 WPAD 主机名与 DNS 域名搜索列表中的一个或多个域匹配。此信息未经核实,但请考虑确保 wpad 域存在于 DNS 搜索列表中。
- 如果 IP 解析为主机名 host-x-x-x-x.pop1.isp.net,而 WPAD DNS 名称是 wpad.isp.net,请确保“isp.net”已配置在 DNS 搜索列表中。
- 如果 IP 解析为主机名 host-x.x.x.x.pop1.isp.net,而 WPAD DNS 名称是 wpad.pop1.isp.net,则仅将“isp.net”放在 DNS 搜索列表中可能不足够。
🔗 安全注意事项
🔗 WPAD DNS 服务器搜索
WPAD 在每个域中通过 DNS 查找 wpad.。此外,许多客户端实现了“回退”机制,该机制还会检查父域。这意味着可能会出现以下示例:
- WPAD 查找 wpad.corp.example.com。
- WPAD 查找 wpad.example.com。
- WPAD 查找 wpad.com。
- WPAD 查找 wpad.。
这可能意味着,一个配置为响应父域中“wpad”主机的服务器可能会返回一个外部代理服务的代理自动配置文件。这可能被用作拒绝服务攻击的一部分,或用于拦截客户端流量。此“回退”机制已被 IETF 弃用,并在 Mozilla Firefox 中禁用,但仍可能在某些浏览器中实现。
如果注册商禁止注册“wpad”域名,那将是件好事;目前尚不清楚这是否是任何现有 DNS 注册表的政策。
导航:站点搜索, 站点页面, 类别, 🔼 向上