您可以运行这些测试以验证是否正确配置了以下两个与网络相关的设置:DNS 可以解析内部和外部地址以及打开了所需的出站端口。您可以使用测试虚拟机运行这些测试。

容器依靠 DNS 解析内部和外部地址。此处的前两个测试检查在您的网络环境中配置的 DNS 是否可以解析内部和外部地址的已知 FQDN。

重要事项: 如果通过内部部署网络向外传送所有流量并且仅允许经过身份验证的流量通过,但您没有在容器部署向导中提供值以使用代理,即使所有这些手动测试成功,未经身份验证的来源 (jump box) 发送的流量也会失败。这种情况的症状是,容器部署停滞在挂起状态。如果处于这种情况,您必须从“入门”页面中删除容器,重新运行容器部署向导,然后指定所需的代理信息。

前提条件

在运行这些测试之前,确认在您的 Microsoft Azure 订阅中创建了一个测试虚拟机并建立到该虚拟机的 SSH 连接,如在您的 Microsoft Azure 订阅中创建测试虚拟机使用 SSH 连接到测试虚拟机中所述。

获取您希望能够从 VNet 中访问的网络内部服务器(如 Active Directory 域控制器)的 IP 地址和完全限定域名 (Fully Qualified Domain Name, FQDN)。您将在 DNS 验证测试中使用该信息。

过程

  1. 使用 dlg 命令查询 Microsoft Azure 中的 VNet 的内部已知域名,以检查 DNS 在您的环境中是否正常工作以解析内部 FQDN。
    在 SSH 连接窗口中,发出 dig 命令以查询您知道位于您的网络内部的服务器的域名,如 Active Directory 域控制器。
    dig internal-domain-name
    其中 internal-domain-name 是您知道位于您的网络内部的服务器的完全限定域名。

    dig (Domain Information Groper) 是一个用于网络故障排除的命令行工具。通过使用内部主机名运行该命令,结果将验证您的 DNS 配置是否可以正确解析内部地址。如果您的 DNS 配置可以解析在命令中使用的 internal-domain-name,命令输出将返回与该域名关联的正确 IP 地址。

    例如,假定为 VNet 配置了一个具有 Active Directory 域控制器的内部 Active Directory 服务器,其 DNS 条目为 skylo.local,IP 地址为 192.168.0.15。发出 dig skylo.local 将检查 VNet 的 DNS 配置是否可以解析该内部 skylo.local 服务器名称:
    testvmadmin@HCS-testingVM:~$ dig skylo.local
    
    ; <<>> DiG 9.10.3-P4-Ubuntu <<>> skylo.local
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64899
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4000
    ;; QUESTION SECTION:
    ;skylo.local.                   IN      A
    
    ;; ANSWER SECTION: skylo.local.600 IN A 192.168.0.15
    
    ;; Query time: 1 msec
    ;; SERVER: 192.168.0.15#53(192.168.0.15)
    ;; WHEN: Mon Mar 26 20:58:01 UTC 2018
    ;; MSG SIZE  rcvd: 56
    
    testvmadmin@HCS-testingVM:~$
    在 ANSWER SECTION 指示提供的主机名解析为该主机名所需的 IP 地址时,则测试成功。
    注: 有时,DNS 并不是 100% 可靠,某些请求解析正确,而其他请求失败。如果发出命令首次失败,请运行命令 10 到 20 遍,并查看是否每次都能获得可靠的响应。
  2. 使用 dlg 命令查询已知的外部域名,以检查 DNS 在您的环境中是否正常工作以解析外部 FQDN。
    在 SSH 连接窗口中,发出 dig 命令以查询外部行业标准域名,如 vmware.commicrosoft.com
    dig external-domain-name
    其中 external-domain-name 是 VNet 外部的完全限定域名。例如,发出 dig vmware.com 将检查 VNet 的 DNS 配置是否可以解析该外部名称:
    testvmadmin@HCS-testingVM:~$ dig vmware.com
    
    ; <<>> DiG 9.10.3-P4-Ubuntu <<>> vmware.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38655
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4000
    ;; QUESTION SECTION:
    ;vmware.com.                    IN      A
    
    ;; ANSWER SECTION: vmware.com.150 IN A 107.154.105.19 vmware.com.150 IN A 107.154.106.19
    
    ;; Query time: 28 msec
    ;; SERVER: 192.168.0.15#53(192.168.0.15)
    ;; WHEN: Mon Mar 26 21:14:29 UTC 2018
    ;; MSG SIZE  rcvd: 71
    
    testvmadmin@HCS-testingVM:~
    在上面的示例中,ANSWER SECTION 指示外部域名 vmware.com 正确解析为两个 IP 地址。
    注: 您可以使用不同的外部域名(如 azure.commicrosoft.com)重复该测试,以验证您的 DNS 是否可以解析不同的外部名称。
    如果 DNS 测试无法正常工作,请验证您的网络配置和 DNS 服务器。检查您是否将 DNS 服务器添加到 VNet 中。
    重要事项: 如果发现您需要将 DNS 服务器添加到 VNet 中,或者必须更改 VNet 的 DNS 服务器配置,您必须重新启动连接到该 VNet 的所有虚拟机以使它们获取更改。如果更改 VNet 的 DNS 服务器配置而未重新启动连接到该 VNet 的所有虚拟机,则不会在 VNet 上正确传播更改。
  3. 使用 netcat 命令检查所需的出站端口是否可用。
    Horizon Cloud 要求打开某些出站端口,以便安全地将容器软件下载到您的 Microsoft Azure 环境中,并且容器可以重新连接到 Horizon Cloud 控制平面。正如 Microsoft 中的 Horizon Cloud 容器的 DNS 要求以及相关服务功能中所述,需要从容器的管理子网中打开以下出站 TCP 端口:端口 80、443 和 11371。通过运行 netcat 命令(如以下命令中所示),您可以根据需要验证是否打开这些出站端口。
    在 SSH 连接窗口中,发出以下命令(每个端口一个)。
    注: 用于测试端口 11371 的以下命令指定 packages.microsoft.com 以测试该连接,而其他两行测试到 Horizon Cloud 控制平面的出站连接。
    testvmadmin@HCS-testingVM:~$ netcat -v -w 3 cloud.horizon.vmware.com 80
    Connection to cloud.horizon.vmware.com 80 port [tcp/http] succeeded!
    testvmadmin@HCS-testingVM:~$ netcat -v -w 3 cloud.horizon.vmware.com 443
    Connection to cloud.horizon.vmware.com 443 port [tcp/https] succeeded!
    testvmadmin@HCS-testingVM:~$ netcat -v -w 3 packages.microsoft.com 11371
    Connection to packages.microsoft.com 11371 port [tcp/hkp] succeeded!
    在正确打开端口后, netcat 命令为其测试返回 succeeded! 行。
    如果 netcat 命令返回失败,请检查您的 Microsoft Azure 网络连接、您的订阅中的网络安全组以及可能部署的任何防火墙。确保您的网络配置满足部署容器所需的 DNS、端口和协议要求,如 Microsoft 中的 Horizon Cloud 容器的 DNS 要求以及相关服务功能中所述。

结果

如果上述测试成功,则可以成功部署您的容器。

注: 如果要配置可选的功能(如 Radius 双因素身份验证或 True SSO)以用于您的容器,则可能需要使用额外的端口以用于这些用途。您可以使用上述出站端口测试方法验证是否正确打开这些端口。

后续步骤

在完成测试时,应该从您的 Microsoft Azure 环境中删除测试虚拟机及其所有相关项目,例如,其虚拟机磁盘、IP 地址和网卡。理想情况下,您为测试虚拟机创建一个资源组,并直接删除该资源组以删除虚拟机的所有项目。按照在完成测试后删除测试虚拟机中的步骤操作。

重要事项: 如果没有从 Microsoft Azure 环境中删除测试虚拟机的所有项目,并且已将该虚拟机连接到容器的某个子网,在稍后尝试使用容器上的 删除操作从 Horizon Cloud 环境中删除该容器时,由于这些剩余的连接项目,系统可能无法完全删除该容器。默认情况下,在使用 删除操作删除容器时, Horizon Cloud 将删除为该容器创建的那些资源组和子网。Microsoft Azure 禁止删除仍在使用的子网。如果测试虚拟机的项目已连接到容器的子网,则无法删除这些子网,因而将无法完全删除该容器。为防止出现这种情况,请确保在成功部署容器后删除测试虚拟机的所有项目。