适用于:Azure Local 2311.2 及更高版本
本文介绍如何在网络使用代理服务器进行 Internet 访问时为 Azure 本地云部署配置代理设置。
有关出站终结点的防火墙要求以及 Azure 本地的内部规则和端口的信息,请参阅 Azure 本地的防火墙要求。
开始之前
在开始配置代理设置之前,请确保:
- 您可以访问一个 Azure 本地服务,您希望为其配置代理设置。 你还具有本地管理员凭据,用于访问 Azure 本地计算机。
- 知道代理服务器名称或 IP 地址和端口(可选)。 如果未获得此信息,请与网络管理员联系。
下面是在配置代理设置之前要记住的一些重要注意事项:
- 了解 Azure Local 不同组件和功能(
WinInet
、WinHTTP
和Environment Variables
)的代理设置是分开的。 必须为计划使用的所有必需组件和任何其他功能配置代理设置。 - 尽管每个组件都有特定的命令参数和代理绕过列表字符串要求,但我们建议在不同的组件和功能之间保留相同的代理配置。
- 由于安全约束,不支持使用用户名和密码进行身份验证的代理。
- 不支持具有
.local
域的代理服务器终结点;例如http://proxy.contosos.local
。 - 如果在代理中使用 SSL 检查,则需要绕过必需的 Azure Local 环境及其组件(如 Arc 资源桥、Azure Kubernetes 服务(AKS)等)。 外部链接。
- 操作系统上的三个代理组件中的每个组件都有特定的代理绕过列表字符串要求。 不要对所有三个组件使用相同的字符串。
- 不支持代理自动配置 (PAC) 文件。
为 WinInet 配置代理设置
安装 WinInetProxy
模块以运行本部分中的命令。 有关模块及其安装方法的信息,请参阅 PowerShell 库 |WinInetProxy 0.1.0。 有关 PowerShell 脚本的信息 WinInetProxy
,请参阅 WinInetProxy.psm1。
如果由于无法访问 Internet 而无法将 WinInetProxy
模块安装到计算机,建议将模块下载到管理计算机,然后将其手动传输到要运行该模块的计算机。 还可以使用 Start-BitsTransfer PowerShell cmdlet 在管理系统和计算机之间传输一个或多个文件。
若要配置 Azure Stack HCI 操作系统的代理设置,请在系统中的每台计算机上以管理员身份运行以下 PowerShell 命令:
通过远程桌面协议(RDP)连接到 Azure 本地,并打开 PowerShell 会话。
若要在安装
WinInetProxy
模块后配置代理设置,请运行以下 cmdlet:Set-WinInetProxy -ProxySettingsPerUser 0 -ProxyServer http://<Proxy_Server_Address:Proxy_Port> -ProxyBypass <URLs to bypass>
下表介绍了这些参数:
参数 说明 每用户代理设置 指定代理设置是逐台还是逐用户:
- 0 - 代理设置是针对每台机器。
- 1(默认)- 代理设置基于用户。
- 如果未提供任何值,则ProxySettingsPerUser
改用环境变量(如果存在)。ProxyServer 以格式 http://[Proxy_Server_Address]:[Proxy_Port]
指定代理服务器终结点。 例如,http://proxy.contoso.com:8080
。ProxyBypass 指定绕过由 -ProxyServer
参数设置的代理服务器的主机 URL 列表。 例如,可以设置-ProxyBypass "localhost"
以绕过本地 Intranet URL。 在 Azure 本地,列表必须包括:
- 至少每台计算机的 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
。 - 建议在配置
WinInet
和WinHTTP
时使用相同的绕过字符串。 - 代理绕过列表中不支持使用
<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 本地更新和云见证的
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 本地更新和云见证配置 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 。 |
绕过列表 | 指定绕过由 -ProxyServer 参数设置的代理服务器的主机 URL 列表。 例如,可以设置 -ProxyBypass "localhost" 以绕过本地 Intranet URL。 在 Azure 本地,列表必须包括:- 至少每台计算机的 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
。 - 建议在配置
WinInet
和WinHTTP
时使用相同的绕过字符串。 - 代理绕过列表中不支持使用
<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 本地更新和云见证的
WinHTTP
代理配置,请在命令提示符下键入:PS C:\> Reset-WinhttpProxy -Direct Current WinHTTP proxy settings: Direct access (no proxy server). PS C:\>
为环境变量配置代理设置
在将 计算机注册到 Azure Arc 之前,必须为已启用 Azure Resource Bridge、AKS 和 Arc 的 Kubernetes 代理配置代理。
若要设置代理服务器环境变量,请在系统中的每台计算机上以管理员身份运行以下命令:
# 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、域和子网的字符串。 在 Azure 的本地环境中,列表必须包括: - 至少每台计算机的 IP 地址。 - 至少是系统的 IP 地址。 - 每台计算机的 NetBIOS 名称。 - 系统的 NetBIOS 名称。 - 任何主机或子域的域名或带有点 . 通配符的域名。 - 至少包括您为基础设施网络定义的 IP地址。 使用这些 IP 的 Arc 资源桥和未来的基础结构服务需要出站连接。 - 或者,可以绕过整个基础结构子网。 - 计划部署 AKS 群集的子网。 - .svc 以及kubernetes.default.svc .svc.cluster.local 用于内部 Kubernetes 服务流量。 - 10.0.0.0/8 和 172.16.0.0/12 192.168.0.0/16 。 创建 AKS 群集和 Azure Arc 代理需要这些子网。 |
以下是命令使用情况的示例:
[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,kubernetes.default.svc,.svc.cluster.local,192.168.1.0/24,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.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
、kubernetes.default.svc
和.svc.cluster.local
通道用于 Linux 表示法下的 AKS 内部服务通信。 Arc 资源桥和 AKS 需要这些值。 - AKS 要求绕过以下子网:
10.0.0.0/8
,172.16.0.0/12
以及192.168.0.0/16
。 如果未定义这些子网,这些子网将自动添加到环境变量旁路列表。
确认并删除环境变量代理配置
若要确认应用环境变量代理配置,请运行以下命令:
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 服务配置代理服务器设置:
- Azure 虚拟桌面
- Azure Monitor 代理
- Microsoft Defender
- Microsoft 监视代理(MMA 代理即将弃用。建议使用 Azure Monitor 代理。)
后续步骤
有关详细信息,请参阅: