Create an Azure Virtual Machine with a dual-stack network using the Azure CLI
In this article, you create a virtual machine in Azure with the Azure CLI. The virtual machine is created along with the dual-stack network as part of the procedures. When completed, the virtual machine supports IPv4 and IPv6 communication.
Prerequisites
An Azure account with an active subscription. Create a trial subscription.
If you prefer to run CLI reference commands locally, install the Azure CLI. If you're running on Windows or macOS, consider running Azure CLI in a Docker container. For more information, see How to run the Azure CLI in a Docker container.
If you're using a local installation, sign in to the Azure CLI by using the az login command. To finish the authentication process, follow the steps displayed in your terminal. For other sign-in options, see Sign in with the Azure CLI.
When you're prompted, install the Azure CLI extension on first use. For more information about extensions, see Use extensions with the Azure CLI.
Run az version to find the version and dependent libraries that are installed. To upgrade to the latest version, run az upgrade.
This tutorial requires version 2.0.28 or later of the Azure CLI.
Create a resource group
An Azure resource group is a logical container into which Azure resources are deployed and managed.
Create a resource group with az group create named myResourceGroup in the chinanorth3 location.
az group create \
--name myResourceGroup \
--location chinanorth3
Create a virtual network
In this section, you create a dual-stack virtual network for the virtual machine.
Use az network vnet create to create a virtual network.
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
Create public IP addresses
You create two public IP addresses in this section, IPv4 and IPv6.
Use az network public-ip create to create the public IP addresses.
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
Create a network security group
In this section, you create a network security group for the virtual machine and virtual network.
Use az network nsg create to create the network security group.
az network nsg create \
--resource-group myResourceGroup \
--name myNSG
Create network security group rules
You create a rule to allow connections to the virtual machine on port 22 for SSH. An extra rule is created to allow all ports for outbound connections.
Use az network nsg rule create to create the network security group rules.
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
Create virtual machine
In this section, you create the virtual machine and its supporting resources.
Create network interface
You use az network nic create to create the network interface for the virtual machine. The public IP addresses and the NSG created previously are associated with the NIC. The network interface is attached to the virtual network you created previously.
az network nic create \
--resource-group myResourceGroup \
--name myNIC1 \
--vnet-name myVNet \
--subnet myBackEndSubnet \
--network-security-group myNSG \
--public-ip-address myPublicIP-IPv4
Create IPv6 IP configuration
Use az network nic ip-config create to create the IPv6 configuration for the NIC.
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
Create virtual machine
Use az vm create to create the virtual machine.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--nics myNIC1 \
--image UbuntuLTS \
--admin-username azureuser \
--authentication-type ssh \
--generate-ssh-keys
Test SSH connection
Use az network public-ip show to display the IP addresses of the virtual machine.
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
Open an SSH connection to the virtual machine by using the following command. Replace the IP address with the IP address of your virtual machine.
ssh azureuser@20.119.201.208
Clean up resources
When no longer needed, use the az group delete command to remove the resource group, virtual machine, and all related resources.
az group delete \
--name myResourceGroup
Next steps
In this article, you learned how to create an Azure Virtual machine with a dual-stack network.
For more information about IPv6 and IP addresses in Azure, see: