使用 Azure CLI 创建具有双堆栈网络的 Azure 虚拟机

本文介绍如何使用 Azure CLI 在 Azure 中创建虚拟机。 在创建过程中,会将虚拟机与双堆栈网络一起创建。 完成后,虚拟机支持 IPv4 和 IPv6 通信。

先决条件

  • 具有活动订阅的 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

  • 本教程需要 Azure CLI 版本 2.0.28 或更高版本。

创建资源组

Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。

使用 az group create 在 chinanorth3 位置创建名为“myResourceGroup”的资源组。

  az group create \
    --name myResourceGroup \
    --location chinanorth3

创建虚拟网络

在本部分中,你要为虚拟机创建双堆栈虚拟网络。

使用 az network vnet create 创建虚拟网络。

  az network vnet create \
    --resource-group myResourceGroup \
    --location chinanorth3 \
    --name myVNet \
    --address-prefixes 10.0.0.0/16 2404:f800:8000:122::/63 \
    --subnet-name myBackendSubnet \
    --subnet-prefixes 10.0.0.0/24 2404:f800:8000:122::/64

创建公共 IP 地址

在此部分中,你要创建两个公共 IP 地址:IPv4 和 IPv6。

使用 az network public-ip create 创建公共 IP 地址。

  az network public-ip create \
    --resource-group myResourceGroup \
    --name myPublicIP-Ipv4 \
    --sku Standard \
    --version IPv4 \
    --zone 1 2 3

  az network public-ip create \
    --resource-group myResourceGroup \
    --name myPublicIP-Ipv6 \
    --sku Standard \
    --version IPv6 \
    --zone 1 2 3

创建网络安全组

在本部分中,为虚拟机和虚拟网络创建网络安全组。

使用 az network nsg create 创建网络安全组。

  az network nsg create \
    --resource-group myResourceGroup \
    --name myNSG

创建网络安全组规则

创建一个规则,以允许连接到适用于 SSH 的端口 22 上的虚拟机。 将创建一个额外的规则,以允许所有端口进行出站连接。

使用 az network nsg rule create 创建网络安全组规则。

  az network nsg rule create \
    --resource-group myResourceGroup \
    --nsg-name myNSG \
    --name myNSGRuleSSH \
    --protocol '*' \
    --direction inbound \
    --source-address-prefix '*' \
    --source-port-range '*' \
    --destination-address-prefix '*' \
    --destination-port-range 22 \
    --access allow \
    --priority 200

  az network nsg rule create \
    --resource-group myResourceGroup \
    --nsg-name myNSG \
    --name myNSGRuleAllOUT \
    --protocol '*' \
    --direction outbound \
    --source-address-prefix '*' \
    --source-port-range '*' \
    --destination-address-prefix '*' \
    --destination-port-range '*' \
    --access allow \
    --priority 200

创建虚拟机

在本部分中,你要创建虚拟机及其支持资源。

创建网络接口

使用 az network nic create 为虚拟机创建网络接口。 先前创建的公共 IP 地址和 NSG 与 NIC 关联。 网络接口已连接到之前创建的虚拟网络。

  az network nic create \
    --resource-group myResourceGroup \
    --name myNIC1 \
    --vnet-name myVNet \
    --subnet myBackEndSubnet \
    --network-security-group myNSG \
    --public-ip-address myPublicIP-IPv4

创建 IPv6 IP 配置

使用 az network nic ip-config create 创建 NIC 的 IPv6 配置。

  az network nic ip-config create \
    --resource-group myResourceGroup \
    --name myIPv6config \
    --nic-name myNIC1 \
    --private-ip-address-version IPv6 \
    --vnet-name myVNet \
    --subnet myBackendSubnet \
    --public-ip-address myPublicIP-IPv6

创建虚拟机

使用 az vm create 创建虚拟机。

  az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --nics myNIC1 \
    --image UbuntuLTS \
    --admin-username azureuser \
    --authentication-type ssh \
    --generate-ssh-keys

测试 SSH 连接

使用 az network public-ip show 显示虚拟机的 IP 地址。

  az network public-ip show \
    --resource-group myResourceGroup \
    --name myPublicIP-IPv4 \
    --query ipAddress \
    --output tsv
user@Azure:~$ az network public-ip show \
>     --resource-group myResourceGroup \
>     --name myPublicIP-IPv4 \
>     --query ipAddress \
>     --output tsv
20.119.201.208
  az network public-ip show \
    --resource-group myResourceGroup \
    --name myPublicIP-IPv6 \
    --query ipAddress \
    --output tsv
user@Azure:~$ az network public-ip show \
>     --resource-group myResourceGroup \
>     --name myPublicIP-IPv6 \
>     --query ipAddress \
>     --output tsv
2603:1030:408:6::9d

使用以下命令打开到虚拟机的 SSH 连接。 将 IP 地址替换为虚拟机的 IP 地址。

  ssh azureuser@20.119.201.208

清理资源

不再需要上述资源组、虚拟机和所有相关资源时,请使用 az group delete 命令将其删除。

  az group delete \
    --name myResourceGroup

后续步骤

本文已介绍如何创建具有双堆栈网络的 Azure 虚拟机。

有关 Azure 中 IPv6 和 IP 地址的详细信息,请参阅: