快速入门:使用 Azure CLI 创建虚拟网络

本快速入门介绍了如何使用 Azure CLI(Azure 命令行接口)创建虚拟网络。 然后,在该网络中创建两个虚拟机 (VM),从 Internet 安全地连接到 VM,并开始在 VM 之间进行私密通信。

虚拟网络是 Azure 中专用网络的基本构建块。 Azure 虚拟网络能让 Azure 资源(例如 VM)互相安全通信以及与 Internet 通信。

虚拟网络快速入门中创建的资源示意图。

如果没有 Azure 订阅,可在开始前创建一个试用帐户

先决条件

可以使用本地 Azure CLI。

  • 如果需要,请安装 Azure CLI 来运行 CLI 参考命令。

  • 本地 Azure CLI,请了解如何安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

    • 通过使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

创建资源组

使用 az group create 创建用于托管虚拟网络的资源组。 使用以下代码在 chinanorth3 Azure 区域中创建名为 test-rg 的资源组。

az group create \
    --name test-rg \
    --location chinanorth3

创建虚拟网络和子网

使用 az network vnet create 在 test-rg 资源组中创建名为“vnet-1”的虚拟网络(其中包含一个名为“subnet-1”的子网):

az network vnet create \
    --name vnet-1 \
    --resource-group test-rg \
    --address-prefix 10.0.0.0/16 \
    --subnet-name subnet-1 \
    --subnet-prefixes 10.0.0.0/24

部署 Azure Bastion

Azure Bastion 使用浏览器通过安全外壳 (SSH) 或远程桌面协议 (RDP) 连接到虚拟网络中的 VM(通过使用其专用 IP 地址)。 虚拟机不需要公共 IP 地址、客户端软件或特殊配置。

小时定价从部署 Bastion 的时刻开始计算,而无论出站数据使用情况如何。 有关详细信息,请参阅定价SKU。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。有关 Bastion 的详细信息,请参阅什么是 Azure Bastion?

  1. 使用 az network vnet subnet create 为虚拟网络创建 Bastion 子网。 此子网专为 Bastion 资源保留,且必须命名为“AzureBastionSubnet”

    az network vnet subnet create \
        --name AzureBastionSubnet \
        --resource-group test-rg \
        --vnet-name vnet-1 \
        --address-prefix 10.0.1.0/26
    
  2. 为 Bastion 创建一个公共 IP 地址。 此 IP 地址用于从 Internet 连接到 Bastion 主机。 使用 az network public-ip create 在 test-rg 资源组中创建名为“public-ip”的公共 IP 地址

    az network public-ip create \
        --resource-group test-rg \
        --name public-ip \
        --sku Standard \
        --location chinanorth3 \
        --zone 1 2 3
    
  3. 使用 az network bastion create 在 AzureBastionSubnet 中为虚拟网络创建 Bastion 主机:

    az network bastion create \
        --name bastion \
        --public-ip-address public-ip \
        --resource-group test-rg \
        --vnet-name vnet-1 \
        --location chinanorth3
    

部署 Bastion 资源大约需要 10 分钟。 当 Bastion 部署到虚拟网络时,可以在下一部分创建 VM。

创建虚拟机

使用 az vm create 在虚拟网络的 subnet-1 子网中创建两个分别名为“vm-1”和“vm-2”的 VM。 提示输入凭据时,输入 VM 的用户名和密码。

  1. 若要创建第一个 VM,请使用以下命令:

    az vm create \
        --resource-group test-rg \
        --admin-username azureuser \
        --authentication-type password \
        --name vm-1 \
        --image Ubuntu2204 \
        --public-ip-address ""
    
  2. 若要创建第二个 VM,请使用以下命令:

    az vm create \
        --resource-group test-rg \
        --admin-username azureuser \
        --authentication-type password \
        --name vm-2 \
        --image Ubuntu2204 \
        --public-ip-address ""
    

提示

还可以使用 --no-wait 选项在后台创建 VM,同时继续执行其他任务。

创建 VM 可能需要数分钟的时间。 Azure 创建每个 VM 后,Azure CLI 会返回类似于以下消息的输出:

    {
      "fqdns": "",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-2",
      "location": "chinanorth3",
      "macAddress": "00-0D-3A-23-9A-49",
      "powerState": "VM running",
      "privateIpAddress": "10.0.0.5",
      "publicIpAddress": "",
      "resourceGroup": "test-rg"
      "zones": ""
    }

注意

虚拟网络中具有 Bastion 主机的虚拟机不需要公共 IP 地址。 Bastion 提供公共 IP,虚拟机使用专用 IP 在网络中进行通信。 可以从 Bastion 托管的虚拟网络的任何虚拟机中删除公共 IP。 有关详细信息,请参阅 将公共 IP 地址与 Azure VM 取消关联

注意

Azure 会为未分配公共 IP 地址的 VM 或位于内部基本 Azure 负载均衡器的后端池中的 VM 提供默认出站访问 IP。 默认出站访问 IP 机制会提供不可配置的出站 IP 地址。

发生以下事件之一时,将禁用默认出站访问 IP:

  • 将公共 IP 地址分配给 VM。
  • 虚拟机被放置在标准负载平衡器的后端池中,有无出站规则均可。
  • 向虚拟机的子网分配了 Azure 虚拟网络 NAT 网关 资源。

在灵活业务流程模式下通过使用虚拟机规模集创建的 VM 没有默认的出站访问权限。

有关 Azure 中的出站连接的详细信息,请参阅 Azure 中的默认出站访问使用源网络地址转换(SNAT)进行出站连接

连接到虚拟机

  1. 在门户中,搜索并选择“虚拟机”。

  2. 在“虚拟机”页上,选择“vm-1”。

  3. 在 vm-1 的“概述”信息中,选择“连接”

  4. 在“连接到虚拟机”页面上,选择“Bastion”选项卡

  5. 选择“使用 Bastion”。

  6. 输入在创建虚拟机时指定的用户名和密码,然后选择“连接”

开始在 VM 之间进行通信

  1. 在“vm-1”的 bash 提示符下,输入 ping -c 4 vm-2

    你会收到类似于以下消息的回复:

    azureuser@vm-1:~$ ping -c 4 vm-2
    PING vm-2.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.chinacloudapp.cn (10.0.0.5) 56(84) bytes of data.
    64 bytes from vm-2.internal.chinacloudapp.cn (10.0.0.5): icmp_seq=1 ttl=64 time=1.83 ms
    64 bytes from vm-2.internal.chinacloudapp.cn (10.0.0.5): icmp_seq=2 ttl=64 time=0.987 ms
    64 bytes from vm-2.internal.chinacloudapp.cn (10.0.0.5): icmp_seq=3 ttl=64 time=0.864 ms
    64 bytes from vm-2.internal.chinacloudapp.cn (10.0.0.5): icmp_seq=4 ttl=64 time=0.890 ms
    
  2. 关闭与vm-1的 Bastion 连接。

  3. 重复连接到虚拟机中的步骤以连接到 VM2

  4. 在“vm-2”的 bash 提示符下,输入 ping -c 4 vm-1

    你会收到类似于以下消息的回复:

    azureuser@vm-2:~$ ping -c 4 vm-1
    PING vm-1.3bnkevn3313ujpr5l1kqop4n4d.cx.internal.chinacloudapp.cn (10.0.0.4) 56(84) bytes of data.
    64 bytes from vm-1.internal.chinacloudapp.cn (10.0.0.4): icmp_seq=1 ttl=64 time=0.695 ms
    64 bytes from vm-1.internal.chinacloudapp.cn (10.0.0.4): icmp_seq=2 ttl=64 time=0.896 ms
    64 bytes from vm-1.internal.chinacloudapp.cn (10.0.0.4): icmp_seq=3 ttl=64 time=3.43 ms
    64 bytes from vm-1.internal.chinacloudapp.cn (10.0.0.4): icmp_seq=4 ttl=64 time=0.780 ms
    
  5. 关闭与vm-2的 Bastion 连接。

清理资源

完成虚拟网络和 VM 后,请使用 az group delete 移除资源组及其所有资源:

az group delete \
    --name test-rg \
    --yes

后续步骤

在本快速入门中,你创建了默认子网包含两个 VM 的虚拟网络。 你已部署 Bastion,使用它连接到 VM 并在 VM 之间建立了通信。 若要详细了解虚拟网络设置,请参阅创建、更改或删除虚拟网络

默认情况下,虚拟网络中 VM 之间的专用通信不受限制。 若要详细了解如何配置不同类型的 VM 网络通信,请继续阅读下一篇文章: