当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 Windows 上使用 WPAD(Web 代理自动发现协议)

作者:精品下载站 日期:2024-12-14 06:35:45 浏览:18 分类:玩电脑

在 Windows 上使用 WPAD(Web 代理自动发现协议)


WPAD(Web 代理自动发现)协议允许您轻松配置网络中客户端的代理设置。 WPAD 背后的想法是,客户端可以使用 DHCP 和/或 DNS 来查找网络上具有带有代理设置的 PAC 配置文件的 Web 服务器(

http://yourdomain/wpad.dat

)。

创建代理自动发现文件 (wpad.dat)

特殊的PAC(代理自动配置)文件描述了使用代理的规则。 PAC 文件预定义名称为 wpad.dat。此文件包含确定客户端在连接到特定资源(HTTP、HTTPS 或 FTP)时是否必须使用代理服务器或直接访问它的规则。

wpad.dat 文件中使用了 Javascript 语法。您可以设置默认代理服务器地址,以及客户端何时应该(或不应该)使用代理进行连接的不同例外和规则。

让我们看一个 wpad.dat 语法的简单示例:

function FindProxyForURL(url, host)
{
   if (shExpMatch(host, "127.0.0.1" )) {return "DIRECT";}
   if (shExpMatch(host, "*/localhost*" )) {return "DIRECT";}
   if (isInNet(host, "192.0.0.0", "255.0.0.0")) {return "DIRECT";}
   if (isInNet(host, "10.0.0.0", "255.0.0.0")) {return "DIRECT";}
   // Dedicated proxy for a specific IP network
   if (isInNet(myIpAddress(), "172.15.1.0", "255.255.255.0"))
   {return "PROXY prx2.a-d.site:8080";}
   if (dnsDomainIs(host, "*.corp.a-d.site")) {return "DIRECT";}
   // Local addresses to be accessed directly
   if (
    shExpMatch(url,"http://*.a-d.site") ||
    shExpMatch(url,"https://*.a-d.site") ||
    shExpMatch(url,"ftp://*.a-d.site")
    )
   return "DIRECT";
   // If the URL does not contain dots in the address, the client should access it directly.
   if (isPlainHostName(host)) {return "DIRECT";}
   if (shExpMatch(host,"bank.example.com")) {return "DIRECT";}
   // Use a separate proxy server to access a specific wildcard domain
   if (shExpMatch(url,"*.microsoft.com*")){return "PROXY prx2.a-d.site:8080";}
   //a default proxy server address
   return "PROXY proxy.a-d.site:3128";
}

[玩转系统] 在 Windows 上使用 WPAD(Web 代理自动发现协议)

PAC 文件通常由一个 FindProxyForURL 函数组成,该函数根据请求的 URL 将代理地址返回给客户端。在这种情况下,返回“DIRECT”指令指示应使用直接连接(无需代理)来访问这些 IP 地址和域。如果客户端访问的网站与 WPAD 文件中的任何规则都不匹配,则默认代理服务器 (

PROXY proxy.a-d.site:3128

) 用于访问它。

您可以使用任何流行的代理服务器,例如squid 或3proxy。

您可以使用 PAC 文件作为内容过滤的简单方法,以拒绝访问某些网站或阻止访问带有广告的域。

proxy_empty = "PROXY 127.0.0.1:3128"; // a link to an non-existing proxy
if ( shExpMatch(url,"*://twitter.com/*")) { return proxy_empty; }
if ( shExpMatch(url,"*://spam.*")) { return proxy_empty; }
if ( shExpMatch(url,"*doubleclick.net/*")) { return proxy_empty; }

不同的操作系统版本对 PAC 文件的最大大小有限制。对于 Windows,wpad.dat 文件的大小不应超过 1 MB。

将 wpad.dat 放在本地网络中的 HTTP Web 服务器上,并允许所有用户读取它。您可以使用基于 Linux(nginx、apache、lighttpd)或基于 Windows(IIS 或基于 PowerShell 的简单 HTTP 服务器)的 Web 服务器。

在此示例中,我将在域控制器上的 IIS Web 服务器上发布 wpad.dat。将wpad.dat复制到C:\inetpub\wwwroot

如果网络上有非域客户端,请授予 IUSR 和 IIS APPPOOL\DefaultAppPool 对 IIS 文件夹的只读权限。

打开 IIS 管理器(

inetmgr

),在 IIS 网站设置中选择 MIME 类型,然后添加新类型:

  • 文件扩展名:

    .dat
  • MIME 类型:

    application/x-ns-proxy-autoconfig

[玩转系统] 在 Windows 上使用 WPAD(Web 代理自动发现协议)

重新启动 IIS。

在 DHCP 或 DNS 中配置 WPAD 记录

现在,您需要配置 DHCP 服务器或 DNS 记录,以便客户端发现 PAC 文件。

如果您使用 DHCP 服务器,则可以使用选项 252 为客户端设置 WPAD 地址。在此示例中,对于在 Windows Server 上运行的 DHCP:

  1. 打开 DHCP 控制台(

    dhcpmgmt.msc

    ),单击 IPv4 部分,然后选择设置预定义选项

  2. 单击添加并添加具有以下选项的条目:
    名称:

    WPAD

    数据类型:

    string

    代码:

    252
  3. 单击“确定”并指定 WPAD 主机的地址 (

    http://wpad.a-d.site

    )。

    [玩转系统] 在 Windows 上使用 WPAD(Web 代理自动发现协议)

  4. 然后打开范围选项并为其启用252 WPAD选项(或在服务器选项部分配置设置)。

    [玩转系统] 在 Windows 上使用 WPAD(Web 代理自动发现协议)

然后为您域中的 wpad 名称创建 A 或 CNAME DNS 记录。

如果您使用的是 Active Directory,请注意,默认情况下 Microsoft DNS 服务器会阻止使用 wpadisatap 名称。您可以通过运行以下命令来检查:

dnscmd mun-dc02 /info /globalqueryblocklist

[玩转系统] 在 Windows 上使用 WPAD(Web 代理自动发现协议)

要允许在 DNS 中使用这些名称,请运行以下命令:

dnscmd mun-dc02 /config /enableglobalqueryblocklist 0

您可以清除列表:

dnscmd /config /globalqueryblocklist

并为 isatap 添加一条记录:

dnscmd /config /globalqueryblocklist isatap

对所有 DNS 服务器进行相同的更改。

然后创建一个名为 wpad 的 A 记录,该记录指向 WPAD 文件所在的 Web 服务器。您可以在 DNS 管理器中手动创建 A 记录 (

dnsmgmt.msc

)或使用 Add-DnsServerResourceRecordA PowerShell cmdlet:

Add-DnsServerResourceRecordA -Name wpad -IPv4Address 192.168.13.10 -ZoneName a-d.loc -TimeToLive 01:00:00

[玩转系统] 在 Windows 上使用 WPAD(Web 代理自动发现协议)

如何为 WPAD 配置浏览器

现在您需要将浏览器配置为在启动时自动接收 PAC 文件。为此,请在 IE 设置中或设置中的 Windows 代理设置中启用自动检测设置选项(工具 > Internet 选项 > 连接 > LAN 设置)(MS-Settings 快速 URI 命令:

ms-settings:network-proxy

)。

[玩转系统] 在 Windows 上使用 WPAD(Web 代理自动发现协议)

您可以使用组策略选项用户配置 -> 首选项 -> 控制面板设置 -> Internet 设置 -> 新建 ->Internet Explorer 10 集中启用此选项

[玩转系统] 在 Windows 上使用 WPAD(Web 代理自动发现协议)

详细了解如何使用 GPO 配置代理服务器设置。

现在,客户端设备上的浏览器在加载时将在 DNS 中查找 wpad 条目(或从 DHCP 获取)。如果在网络中发现带有 WPAD 的主机,客户端将下载文件

http://wpad.%domain%/wpad.dat

,运行 JavaScript 代码,并应用 PAC 文件中的代理服务器规则。

例如,Windows 首先在 DNS 中搜索 wpad 名称,然后通过链路本地多播名称解析 (LLMNR),最后使用 NetBIOS (NBNS)。如果禁用 LLMNR 和 NetBIOS 协议,则仅使用 DNS 搜索。

您可以检查浏览器在访问互联网时是否使用PAC文件(对于基于Chromium的网络浏览器:Google Chrome、Opera、Microsoft Edge):

  1. 打开浏览器并转到

    chrome://net-export/
  2. 选择剥离私人信息,然后点击开始记录到磁盘;

    [玩转系统] 在 Windows 上使用 WPAD(Web 代理自动发现协议)

  3. 然后指定保存数据的JSON文件名;

  4. 点击停止记录

  5. 在任何文本编辑器中打开 JSON 文件并搜索

    proxySettings

    。在此示例中,您可以看到浏览器正在使用 wpad.dat 中的代理设置:

    "proxySettings":{"effective":{"pac_url":"http://wpad/wpad.dat"},"original":{"auto_detect":true,"from_system":true}}

[玩转系统] 在 Windows 上使用 WPAD(Web 代理自动发现协议)

如果要拒绝在 Windows 计算机上使用 WPAD,请在注册表项 HKLM\SOFTWARE\Microsoft\Windows 中创建一个名为 DisableWpad 且值为 1 的 DWORD 参数\CurrentVersion\Internet Settings\WinHttp\。

使用 WPAD (PAC) 文件配置代理设置提供了通过 Windows GPO 设置代理无法实现的额外灵活性。 Windows、Linux、MacOS 和其他操作系统以及移动设备也支持 WPAD。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯