为 Azure Stack HCI 版本 23H2 配置代理设置

适用于:Azure Stack HCI 版本 23H2

本文介绍如何为 Azure Stack HCI 版本 23H2 云部署配置代理设置(如果网络使用代理服务器进行 Internet 访问)。

有关出站终结点的防火墙要求以及 Azure Stack HCI 的内部规则和端口的信息,请参阅 Azure Stack HCI 的防火墙要求

准备阶段

在开始配置代理设置之前,请确保:

  • 有权访问要为其配置代理设置的 Azure Stack HCI 群集。 同时具有用于访问 Azure Stack HCI 群集中的服务器的本地管理员凭据。
  • 知道代理服务器名称或 IP 地址和端口(可选)。 如果没有此信息,请与网络管理员联系。

下面是在配置代理设置之前要记住的一些重要注意事项:

  • 了解代理设置是针对 Azure Stack HCI 的不同WinInet组件和功能(以及WinHTTPEnvironment Variables的单独设置。 必须为所有必需的组件以及计划使用的任何其他功能配置代理设置。
  • 尽管每个组件都有特定的命令参数和代理绕过列表字符串要求,但我们建议在不同的组件和功能之间保留相同的代理配置。
  • 由于安全约束,我们不支持使用用户名和密码进行身份验证的代理。
  • 如果在代理中使用 SSL 检查,则需要绕过所需的 Azure Stack HCI 及其组件(Arc 资源桥、Azure Kubernetes 服务(AKS 等) 出站 URL。
  • 操作系统上的三个代理组件中的每个组件都有特定的代理绕过列表字符串要求。 不要对所有三个组件使用相同的字符串。

为 WinInet 配置代理设置

在将服务器注册到 Azure Arc 之前,必须配置WinInet代理设置。

安装 WinInetProxy 模块以运行本部分中的命令。 有关该模块及其安装方法的信息,请参阅 PowerShell 库 | WinInetProxy 0.1.0。 有关 WinInetProxy PowerShell 脚本的信息,请参阅 WinInetProxy.psm1

如果因不能访问 Internet 而无法将 WinInetProxy 模块安装到群集节点,建议你将该模块下载到管理计算机,然后手动将其传输到要运行该模块的群集节点。 还可以使用 Start-BitsTransfer PowerShell cmdlet 在管理计算机和服务器之间传输一个或多个文件。

若要为 Azure Stack HCI 操作系统配置代理设置,请在群集中的每台服务器上以管理员身份运行以下 PowerShell 命令:

  1. 通过远程桌面协议 (RDP) 连接到 Azure Stack HCI 群集中的服务器,然后打开 PowerShell 会话。

  2. 若要在安装 WinInetProxy 模块后配置代理设置,请运行以下 cmdlet:

    Set-WinInetProxy -ProxySettingsPerUser 0 -ProxyServer http://<Proxy_Server_Address:Proxy_Port> -ProxyBypass <URLs to bypass>
    

    下表介绍了这些参数:

    参数 说明
    ProxySettingsPerUser 指定代理设置是按计算机还是每个用户:

    - 0 - 代理设置是每台计算机。
    - 1 (默认值) - 代理设置是每个用户。
    - 如果未提供任何值,则 ProxySettingsPerUser 改用环境变量(如果存在)。
    ProxyServer 以格式 http://[Proxy_Server_Address]:[Proxy_Port]指定代理服务器终结点。 例如 http://proxy.contoso.com:8080
    ProxyBypass 指定绕过参数设置 -ProxyServer 的代理服务器的主机 URL 列表。 例如,可以设置 -ProxyBypass “localhost” 以绕过本地 Intranet URL。 列表必须包括:

    - 至少每个服务器的 IP 地址。
    - 至少是群集的 IP 地址。
    - 至少为基础结构网络定义的 IP。 使用这些 IP 的 Arc 资源桥、AKS 和未来的基础结构服务需要出站连接。
    - 或者可以绕过整个基础结构子网。
    - 每台服务器的 NetBIOS 名称。
    - 群集的 NetBIOS 名称。
    - 具有星号 * 通配符的任何主机或子域的域名或域名。

以下是命令使用情况的示例:

Set-WinInetProxy -ProxySettingsPerUser 0 -ProxyServer http://192.168.1.250:8080 -ProxyBypass "localhost;127.0.0.1;*.contoso.com;node1;node2;192.168.1.*;s-cluster"

WinInet 代理绕过列表字符串注意事项

配置 WinInet 代理绕过列表时,请记住以下几点:

  • 参数必须用逗号 , 或分号 ;分隔。
  • 不支持绕过子网的 CIDR 表示法。
  • 星号可用作通配符来绕过子网或域名。 例如, 192.168.1.* 对于子网或 *.contoso.com 域名。
  • 必须指定 http:// 代理名称和端口。 例如 http://192.168.1.250:8080
  • 建议在配置WinInetWinHTTP和时使用相同的绕过字符串。
  • 代理绕过列表中不支持使用 <local> 字符串。

查看和删除 WinInet 代理配置

  • 若要查看或验证当前 WinInet 代理配置,请在命令提示符处键入:

    PS C:\> Get-WinhttpProxy -Advanced
    
    Current WinHTTP proxy settings:
    
    Proxy Server(s) :  http://192.168.1.250:8080
    Bypass List     :  localhost;127.0.0.1;*. contoso.com;node1;node2;192.168.1.*;s-cluster
    
    PS C:\>
    
  • 若要删除 Azure Stack HCI 更新和云见证的 WinInet 代理配置,请在命令提示符下键入:

    PS C:\> Set-WinInetProxy
    Start proxy Configuration
    Proxy is Per User
    AutoDetect is 0
    PACUrl is
    ProxyServer is
    ProxyBypass is
    Entered WriteProxySettingsHelper
    Entered WriteProxySettingsHelper
    
    Successfully set proxy
    PS C:\> Get-WinhttpProxy -Advanced
    

为 WinHTTP 配置代理设置

在将服务器注册到 Azure Arc 之前,必须配置WinHTTP代理设置。

若要为 Azure Stack HCI 更新和云见证配置 WinHTTP 代理,请在群集中的每个服务器上以管理员身份运行以下 PowerShell 命令:

Set-winhttpproxy -proxyserver http://<Proxy_Server_Address:Proxy_Port> -BypassList <URLs to bypass>

下表介绍了这些参数:

参数 说明
ProxyServer 以格式 http://[Proxy_Server_Address]:[Proxy_Port]指定代理服务器终结点。 例如 http://proxy.contoso.com:8080
BypassList 指定绕过参数设置 -ProxyServer 的代理服务器的主机 URL 列表。 例如,可以设置 -ProxyBypass "localhost" 以绕过本地 Intranet URL。 列表必须包括:

- 至少每个服务器的 IP 地址。
- 至少是群集的 IP 地址。
- 至少为基础结构网络定义的 IP。 使用这些 IP 的 Arc 资源桥、AKS 和未来的基础结构服务需要出站连接。
- 或者可以绕过整个基础结构子网。
- 每台服务器的 NetBIOS 名称。
- 群集的 NetBIOS 名称。
- 具有星号 * 通配符的任何主机或子域的域名或域名。

以下是命令使用情况的示例:

Set-winhttpproxy -proxyserver http://192.168.1.250:8080 -BypassList "localhost;127.0.0.1;*.contoso.com;node1;node2;192.168.1.*;s-cluster"

WinHTTP 代理绕过列表字符串注意事项

配置 WinHTTP 代理绕过列表字符串时,请记住以下几点:

  • 参数必须用逗号 , 或分号 ;分隔。
  • 不支持绕过子网的 CIDR 表示法。
  • 星号可用作通配符来绕过子网或域名。 例如, 192.168.1.* 对于子网或 *.contoso.com 域名。
  • 必须指定 http:// 代理名称和端口。 例如 http://192.168.1.250:8080
  • 建议在配置WinInetWinHTTP和时使用相同的绕过字符串。
  • 代理绕过列表中不支持使用 <local> 字符串。

查看和删除 WinHTTP 代理配置

  • 若要查看或验证当前 WinHTTP 代理配置,请在命令提示符处键入:

    PS C:\> Get-WinhttpProxy -Default
    
    Current WinHTTP proxy settings:
    
    Proxy Server(s) :  http://192.168.1.250:8080
    Bypass List     :  localhost;127.0.0.1;*.contoso.com;node1;node2;192.168.1.*;s-cluster
    
    PS C:\>
    
  • 若要删除 Azure Stack HCI 更新和云见证的 WinHTTP 代理配置,请在命令提示符下键入:

    PS C:\> Reset-WinhttpProxy -Direct
    Current WinHTTP proxy settings:
    Direct access (no proxy server). 
    PS C:\>
    

配置环境变量的代理设置

在将服务器注册到 Azure Arc 之前,必须配置 Azure 资源桥和 AKS 的代理。

若要设置代理服务器环境变量,请在群集中的每个服务器上以管理员身份运行以下命令:

# If a proxy server is needed, execute these commands with the proxy URL and port.
[Environment]::SetEnvironmentVariable("HTTPS_PROXY","http://ProxyServerFQDN:port", "Machine")
$env:HTTPS_PROXY = [System.Environment]::GetEnvironmentVariable("HTTPS_PROXY","Machine")
[Environment]::SetEnvironmentVariable("HTTP_PROXY","http://ProxyServerFQDN:port", "Machine")
$env:HTTP_PROXY = [System.Environment]::GetEnvironmentVariable("HTTP_PROXY","Machine")
$no_proxy = "<bypassliststring>"
[Environment]::SetEnvironmentVariable("NO_PROXY",$no_proxy,"Machine")
$env:NO_PROXY = [System.Environment]::GetEnvironmentVariable("NO_PROXY","Machine")

下表介绍了这些参数:

参数 说明
HTTPS_PROXY变量 以格式 http://[Proxy_Server_Address]:[Proxy_Port]指定代理服务器终结点。 例如 http://proxy.contoso.com:8080
HTTP_PROXY变量 以格式 http://[Proxy_Server_Address]:[Proxy_Port]指定代理服务器终结点。 例如 http://proxy.contoso.com:8080
NO_PROXY变量 用于绕过本地 Intranet URL、域和子网的字符串。 列表必须包括:

- 至少每个服务器的 IP 地址。
- 至少是群集的 IP 地址。
- 至少为基础结构网络定义的 IP。 使用这些 IP 的 Arc 资源桥、AKS 和未来的基础结构服务需要出站连接。
- 或者可以绕过整个基础结构子网。
- 每台服务器的 NetBIOS 名称。
- 群集的 NetBIOS 名称。
- 具有任何主机或子域的点 . 通配符的域名或域名。
- .svc 用于内部 Kubernetes 服务流量。

以下是命令使用情况的示例:

[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://192.168.1.250:8080", "Machine")
$env:HTTPS_PROXY = [System.Environment]::GetEnvironmentVariable("HTTPS_PROXY", "Machine")
[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://192.168.1.250:8080", "Machine")
$env:HTTP_PROXY = [System.Environment]::GetEnvironmentVariable("HTTP_PROXY", "Machine")
$no_proxy = "localhost,127.0.0.1,.svc,192.168.1.0/24,.contoso.com,node1,node2,s-cluster"
[Environment]::SetEnvironmentVariable("NO_PROXY", $no_proxy, "Machine")
$env:NO_PROXY = [System.Environment]::GetEnvironmentVariable("NO_PROXY", "Machine")

环境变量代理绕过列表字符串注意事项

配置环境变量代理绕过列表字符串时,请记住以下几点:

  • 参数必须用逗号 ,分隔。
  • 必须使用 CIDR 表示法来绕过子网。
  • 不支持将星号 * 用作绕过子网或域名的通配符。
  • .点应用作通配符以绕过域名或本地服务。 例如 .contoso.com.svc
  • 必须为HTTP_PROXY和HTTPS_PROXY变量指定 http:// 代理名称以及端口。 例如 http://192.168.1.250:8080
  • .svc 绕过适用于 Linux 表示法中的 AKS 内部服务通信。 这是 Arc 资源桥和 AKS 所必需的。
  • AKS 需要绕过以下子网。 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16。 如果未定义这些子网,这些子网将自动添加到环境变量旁路列表。
  • 代理绕过列表中不支持使用 <local> 字符串。

确认并删除环境变量代理配置

  • 若要确认应用环境变量代理配置,请运行以下命令:

    echo "https :" $env:https_proxy "http :" $env:http_proxy "bypasslist " $env:no_proxy
    
  • 若要删除代理配置,请在群集中的每台服务器上以管理员身份运行以下命令:

    [Environment]::SetEnvironmentVariable("HTTPS_PROXY", $null, "Machine")
    $env:HTTPS_PROXY = [System.Environment]::GetEnvironmentVariable("HTTPS_PROXY", "Machine")
    [Environment]::SetEnvironmentVariable("HTTP_PROXY", $null, "Machine")
    $env:HTTP_PROXY = [System.Environment]::GetEnvironmentVariable("HTTP_PROXY", "Machine")
    

为已启用 Arc 的服务器代理配置代理的代理设置

若要配置已启用 Azure Arc 的服务器代理以通过代理服务器进行通信,请运行以下命令:

azcmagent config set proxy.url "http://ProxyServerFQDN:port"

可以使用 IP 地址或简单主机名代替 FQDN(如果你的网络要求你这样做)。 如果你的代理服务器在端口 80 上运行,你可以在末尾省略“:80”。

要检查代理设置中是否配置了代理服务器 URL,请运行以下命令:

azcmagent config get proxy.url

要阻止代理通过代理服务器进行通信,请运行以下命令:

azcmagent config clear proxy.url

使用 azcmagent config 命令重新配置代理设置时,无需重新启动任何服务。

请查看已启用 Arc 的服务器代理页,详细了解 如何管理和维护 Connected Machine 代理

为 Azure 服务配置代理设置

如果使用或计划使用以下任何 Azure 服务,请参阅以下文章,了解如何为每个 Azure 服务配置代理服务器设置:

后续步骤

有关详细信息,请参阅: