与现有本地代理服务器结合使用

配置 Microsoft Entra 专用网络连接器以使用出站代理服务器。 本文假定网络环境已有代理服务器。

我们首先了解以下主要部署方案:

  • 配置连接器以绕过本地出站代理。
  • 将连接器配置为使用出站代理访问 Microsoft Entra 应用程序代理。
  • 在连接器和后端应用程序之间使用代理进行配置。

有关连接器工作原理的详细信息,请参阅 了解Microsoft Entra 专用网络连接器

绕过出站代理

连接器具有发出出站请求的基础 OS 组件。 这些组件会自动尝试使用 Web 代理自动发现(WPAD)在网络上找到代理服务器。

OS 组件通过执行域名系统(DNS)查找 wpad.domainsuffix来尝试查找代理服务器。 如果在 DNS 中成功解析,则会向 Internet协议(IP)地址wpad.dat发出HTTP请求。 此请求将成为环境中的代理配置脚本。 连接器使用此脚本选择出站代理服务器。 不过,连接器流量可能仍会失败,因为代理上需要更多配置设置。

可以将连接器配置为绕过本地代理,以确保它使用与 Microsoft Entra 应用程序代理服务的直接连接。 建议使用直接连接,因为它们需要较少的配置。 但是,某些网络策略要求流量必须通过本地代理服务器。

若要禁用连接器的出站代理用法,请编辑 C:\Program Files\Microsoft Entra private network connector\MicrosoftEntraPrivateNetworkConnectorService.exe.config 该文件并添加 system.net 代码示例中显示的部分:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>
    <defaultProxy enabled="false"></defaultProxy>
  </system.net>
  <runtime>
    <gcServer enabled="true"/>
  </runtime>
  <appSettings>
    <add key="TraceFilename" value="MicrosoftEntraPrivateNetworkConnector.log" />
  </appSettings>
</configuration>

若要确保连接器更新程序服务也会绕过代理,请对 MicrosoftEntraPrivateNetworkConnectorUpdaterService.exe.config 文件进行类似的更改。 此文件位于 C:\Program Files\Microsoft Entra private network connector Updater.

请务必复制原始文件,以防需要还原到默认 .config 文件。

使用出站代理服务器

某些环境要求所有出站流量通过出站代理,但无例外。 因此,绕过代理不是一个选项。

可以将连接器流量配置为通过出站代理,如下图所示:

配置连接器流量以通过出站代理连接到 Microsoft Entra 应用程序代理

由于只有出站流量,因此无需通过防火墙配置入站访问。

注释

应用程序代理不支持对其他代理进行身份验证。 连接器/更新程序网络服务帐户应该能够连接到代理,而无需进行身份验证挑战。

如果在环境中启用了 WPAD 并正确配置,连接器会自动发现出站代理服务器并尝试使用它。 然而,您可以显式配置连接器以通过出站代理。

为此,请编辑 C:\Program Files\Microsoft Entra private network connector\MicrosoftEntraPrivateNetworkConnectorService.exe.config 文件,并添加 system.net 代码示例中显示的部分。 更改 proxyserver:8080 以反映本地代理服务器名称或 IP 地址和端口。 即使使用的是 IP 地址,该值也必须具有前缀 http://

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.net>  
    <defaultProxy>   
      <proxy proxyaddress="http://proxyserver:8080" bypassonlocal="True" usesystemdefault="True"/>   
    </defaultProxy>  
  </system.net>
  <runtime>
    <gcServer enabled="true"/>
  </runtime>
  <appSettings>
    <add key="TraceFilename" value="MicrosoftEntraPrivateNetworkConnector.log" />
  </appSettings>
</configuration>

接下来,对C:\Program Files\Microsoft Entra private network connector Updater\MicrosoftEntraPrivateNetworkConnectorUpdaterService.exe.config文件进行类似的更改,将连接器更新服务配置为使用代理。

注释

连接器服务评估 defaultProxy 配置,以便在 %SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config中使用,如果 defaultProxy (在默认情况下)未在 MicrosoftEntraPrivateNetworkConnectorService.exe.config中配置。连接器更新服务(MicrosoftEntraPrivateNetworkConnectorUpdaterService.exe.config)也同样适用。

出站代理有四个方面需要考虑:

  • 代理出站规则
  • 代理身份验证
  • 代理端口
  • 传输层安全性 (TLS) 检查

代理出站规则

允许访问以下 URL:

网址 港口 使用
*.msappproxy.net
*.servicebus.windows.net
443/HTTPS 连接器与应用程序代理云服务之间的通信
crl3.digicert.com
crl4.digicert.com
ocsp.digicert.com
crl.microsoft.com
oneocsp.microsoft.com
ocsp.msocsp.com
80/HTTP 连接器使用这些 URL 来验证证书。
login.windows.net
secure.aadcdn.microsoftonline-p.com
*.microsoftonline.com
*.microsoftonline-p.com
*.msauth.net
*.msauthimages.net
*.msecnd.net
*.msftauth.net
*.msftauthimages.net
*.phonefactor.net
enterpriseregistration.windows.net
management.azure.com
policykeyservice.dc.ad.msft.net
ctldl.windowsupdate.com
443/HTTPS 连接器在注册过程中使用这些 URL。
ctldl.windowsupdate.com
www.microsoft.com/pkiops
80/HTTP 连接器在注册过程中使用这些 URL。

如果您的防火墙或代理允许配置 DNS 允许列表,那么您可以允许连接至 *.msappproxy.net*.servicebus.windows.net

如果无法通过完全限定的域名(FQDN)进行连接,并且需要改为指定 IP 范围,请使用以下选项:

  • 允许连接器出站访问所有目标。
  • 允许连接器出站访问所有 Azure 数据中心 IP 范围。 使用 Azure 数据中心 IP 范围列表的挑战是每周更新一次。 你需要制定一个过程,以确保相应地更新访问规则。 仅使用部分 IP 地址会导致您的配置出错。 最新的 Azure 数据中心的 IP 范围可在 https://download.microsoft.com 下载。 使用搜索词 Azure IP Ranges and Service Tags。 请务必选择相关的云。 例如,可以通过搜索 Azure IP Ranges and Service Tags – Public Cloud找到公有云 IP 范围。 可以通过搜索 Azure IP Ranges and Service Tags – US Government Cloud找到美国政府云。

代理身份验证

当前不支持代理身份验证。 我们当前的建议是允许连接器匿名访问 Internet 目标。

代理端口

连接器使用 CONNECT 方法建立基于 TLS 的出站连接。 此方法实质上是通过出站代理设置隧道。 将代理服务器配置为允许通过隧道连接到端口 443 和 80。

注释

当服务总线通过 HTTPS 运行时,它使用端口 443。 但是,默认情况下,服务总线会尝试直接传输控制协议(TCP)连接,并且仅在直接连接失败时回退到 HTTPS。

TLS 检查

不要对连接器流量使用 TLS 检查,因为它会导致连接器流量出现问题。 连接器使用证书向应用程序代理服务进行身份验证,并且在 TLS 检查期间可能会丢失该证书。

在连接器和后端应用程序之间使用代理进行配置

在某些环境中,将转发代理用于与后端应用程序的通信是一项特殊要求。 若要启用转发代理,请执行以下步骤:

步骤 1:将所需的注册表值添加到服务器

  1. 若要启用默认代理的使用,请将注册表值 (DWORD)UseDefaultProxyForBackendRequests = 1 添加到位于的 HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Entra private network connector连接器配置注册表项中。

步骤 2:使用 netsh 命令手动配置代理服务器

  1. 启用组策略 Make proxy settings per-machine。 组策略位于: Computer Configuration\Policies\Administrative Templates\Windows Components\Internet Explorer中。 需要设置组策略,而不是每个用户设置策略。
  2. 在服务器上运行 gpupdate /force。 或者,若要确保组策略已更新,请重新启动服务器。
  3. 使用管理员权限启动提升的命令提示符并输入 control inetcpl.cpl
  4. 配置所需的代理设置。

这些设置使连接器使用相同的转发代理与 Azure 和后端应用程序的通信。 修改文件 MicrosoftEntraPrivateNetworkConnectorService.exe.config 以更改转发代理。 转发代理配置在“绕过出站代理”和“使用出站代理服务器”部分中介绍。

注释

可通过多种方式在作系统中配置 Internet 代理。 通过 NETSH WINHTTP 配置(运行 NETSH WINHTTP SHOW PROXY 以验证)的代理设置将替代在步骤 2 中配置的代理设置。

连接器更新程序服务使用计算机代理。 该设置位于 MicrosoftEntraPrivateNetworkConnectorUpdaterService.exe.config 文件中。

排查连接器代理问题和服务连接问题

现在,应会看到流经代理的所有流量。 如果遇到问题,以下故障排除信息应有所帮助。

识别和排查连接器连接问题的最佳方法是在启动连接器服务时捕获网络。 下面是有关捕获和筛选网络跟踪的一些快速提示。

可以使用所选的监视工具。 在本文中,我们使用Microsoft消息分析器。

注释

Microsoft消息分析器(MMA)已停用 ,其下载包已于 2019 年 11 月 25 日从 microsoft.com 站点中删除。 当前没有任何微软消息分析器的替代品正在开发。 对于类似的功能,请考虑使用非Microsoft合作伙伴网络协议分析器工具,例如 Wireshark。

以下示例特定于 Message Analyzer,但原则可应用于任何分析工具。

捕获连接器流量

若要进行初始故障排除,请执行以下步骤:

  1. services.msc中停止Microsoft Entra 专用网络连接器服务。

    Microsoft services.msc 中的 Entra 专用网络连接器服务

  2. 以管理员身份运行 消息分析器

  3. 选择“ 启动本地跟踪”。

  4. 启动Microsoft Entra 专用网络连接器服务。

  5. 停止网络捕获。

    屏幕截图显示了“停止网络捕获”按钮

检查连接器流量是否绕过出站代理

如果希望连接器与应用程序代理服务建立直接连接, SynRetransmit 则端口 443 上的响应表明存在网络或防火墙问题。

使用消息分析器筛选器识别失败的传输控制协议(TCP)连接尝试。 在筛选器框中输入 property.TCPSynRetransmit ,然后选择“ 应用”。

同步(SYN)数据包是发送的第一个数据包来建立 TCP 连接。 如果此数据包未返回响应,则会重新尝试 SYN。 可以使用筛选器查看任何重新传输的 SYN 数据包。 然后,可以检查这些 SYN 数据包是否对应于任何与连接器相关的流量。

检查连接器流量是否使用出站代理

如果将专用网络连接器流量配置为通过代理服务器,请查找失败的 https 连接到您的代理。

使用消息分析器筛选器识别失败的 HTTPS 连接尝试到您的代理。 在消息分析器的筛选器中输入 (https.Request or https.Response) and tcp.port==8080,将 8080 替换为您的代理服务端口。 选择 “应用” 以查看筛选器结果。

前面的筛选器仅显示 HTTP 请求和代理端口/从代理端口发出的响应。 你正在寻找显示与代理服务器通信的 CONNECT 请求。 成功后,你会收到 HTTP OK (200) 响应。

如果看到其他响应代码(如 407 或 502),这意味着代理需要身份验证,或者出于其他原因不允许流量。 此时,请与代理服务器支持团队联系。

后续步骤