你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
创建具有双堆栈网络的 Azure 虚拟机
本文介绍如何使用 Azure 门户在 Azure 中创建虚拟机。 在创建过程中,会将虚拟机与双堆栈网络一起创建。 从 Azure 门户、Azure CLI 或 Azure PowerShell 中进行选择,以完成本文中的步骤。 完成后,虚拟机支持 IPv4 和 IPv6 通信。
先决条件
- 本教程需要 Azure CLI 版本 2.0.28 或更高版本。 如果使用 Azure Cloud Shell,则最新版本已安装。
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- Azure PowerShell(本地安装)或 Azure Cloud Shell。
- 登录 Azure PowerShell,并选择要使用的订阅。 有关详细信息,请参阅使用 Azure PowerShell 登录。
- 确保 Az. Network 模块为 4.3.0 或更高版本。 要验证已安装的模块,使用命令 Get-InstalledModule -Name "Az.Network"。 如果模块需要更新,请使用命令 Update-Module -Name "Az. 网络
如果选择在本地安装并使用 PowerShell,则本文需要 Azure PowerShell 模块 5.4.1 或更高版本。 运行 Get-Module -ListAvailable Az
查找已安装的版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 如果在本地运行 PowerShell,则还需运行 Connect-AzAccount
以创建与 Azure 的连接。
创建资源组和虚拟网络
在本部分中,你将在 Azure 门户中为虚拟机创建资源组和双堆栈虚拟网络。
登录到 Azure 门户。
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。
选择“+ 新建”。
在“创建虚拟网络”的“基本信息”选项卡中输入或选择以下信息。
设置 |
值 |
项目详细信息 |
|
订阅 |
选择订阅。 |
资源组 |
选择“新建”。 在“名称”中,输入“myResourceGroup”。 选择“确定”。 |
实例详细信息 |
|
名称 |
输入 myVNet。 |
区域 |
选择“美国东部 2”。 |
选择“IP 地址”选项卡或选择“下一步”>“下一步”。
保留默认 IPv4 地址空间“10.0.0.0/16”。 如果默认值不存在或不同,请输入 IPv4 地址空间“10.0.0.0/16”。
选择默认子网。
在“编辑子网”页上,在“子网名称”中输入“myBackendSubnet”,然后选择“保存”。
从下拉菜单中选择“添加 IPv6 地址空间”。
在“IPv6 地址空间”中,编辑默认地址空间并将其值更改为“2404:f800:8000:122::/63”。
若要添加 IPv6 子网,请选择“+ 添加子网”,然后输入或选择以下信息:
设置 |
值 |
子网 |
|
子网名称 |
输入 myBackendSubnet。 |
地址范围 |
保留默认值“2404:f800:8000:122::”。 |
大小 |
保留默认值“/64”。 |
选择添加。
选择“查看 + 创建”。
选择创建。
在本部分中,你将在 Azure CLI 中为虚拟机创建资源组双堆栈虚拟网络。
使用 az group create 在 eastus2 位置创建名为“myResourceGroup”的资源组。
az group create \
--name myResourceGroup \
--location eastus2
使用 az network vnet create 创建虚拟网络。
az network vnet create \
--resource-group myResourceGroup \
--location eastus2 \
--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
在本部分中,你将使用 Azure PowerShell 为虚拟机创建双堆栈虚拟网络。
在 eastus2 位置,使用名为 myResourceGroup 的 New-AzResourceGroup 创建资源组。
$rg =@{
Name = 'myResourceGroup'
Location = 'eastus2'
}
New-AzResourceGroup @rg
使用 New-AzVirtualNetwork 和 New-AzVirtualNetworkSubnetConfig 创建虚拟网络。
## Create backend subnet config ##
$subnet = @{
Name = 'myBackendSubnet'
AddressPrefix = '10.0.0.0/24','2404:f800:8000:122::/64'
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
## Create the virtual network ##
$net = @{
Name = 'myVNet'
ResourceGroupName = 'myResourceGroup'
Location = 'eastus2'
AddressPrefix = '10.0.0.0/16','2404:f800:8000:122::/63'
Subnet = $subnetConfig
}
New-AzVirtualNetwork @net
创建公共 IP 地址
在本部分中,你要在 Azure 门户中创建两个公共 IP 地址:IPv4 和 IPv6。
创建 IPv4 公共 IP 地址
在门户顶部的搜索框中,输入“公共 IP 地址”。 在搜索结果中,选择“公共 IP 地址”。
选择“+ 新建”。
在“创建公共 IP 地址”中,输入或选择以下信息。
设置 |
值 |
项目详细信息 |
|
订阅 |
选择订阅。 |
资源组 |
选择“myResourceGroup”。 |
位置 |
选择“美国东部 2”。 |
可用性区域 |
选择“区域冗余”。 |
实例详细信息 |
|
名称 |
输入“myPublicIP-IPv4”。 |
IP 版本 |
选择“IPv4”。 |
SKU |
保留默认值“标准”。 |
层 |
保留默认值“区域”。 |
IP 地址分配 |
|
路由首选项 |
保留默认值“Microsoft 网络”。 |
空闲超时(分钟) |
保留默认值“4”。 |
DNS 名称标签 |
输入“myPublicIP-IPv4”。 |
选择“查看 + 创建”,然后选择“创建”。
创建 IPv6 公共 IP 地址
在门户顶部的搜索框中,输入“公共 IP 地址”。 在搜索结果中,选择“公共 IP 地址”。
选择“+ 新建”。
在“创建公共 IP 地址”中,输入或选择以下信息。
设置 |
值 |
项目详细信息 |
|
订阅 |
选择订阅。 |
资源组 |
选择“myResourceGroup”。 |
位置 |
选择“美国东部 2”。 |
可用性区域 |
选择“区域冗余”。 |
实例详细信息 |
|
名称 |
输入“myPublicIP-IPv6”。 |
IP 版本 |
选择“IPv6”。 |
SKU |
保留默认值“标准”。 |
层 |
保留默认值“区域”。 |
IP 地址分配 |
|
DNS 名称标签 |
输入“myPublicIP-IPv6”。 |
选择“查看 + 创建”,然后选择“创建”。
在本部分中,使用 Azure CLI 创建两个公共 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
在此部分中,你要创建两个公共 IP 地址:IPv4 和 IPv6。
使用 New-AzPublicIpAddress 创建这两个公共 IP 地址。
$ip4 = @{
Name = 'myPublicIP-IPv4'
ResourceGroupName = 'myResourceGroup'
Location = 'eastus2'
Sku = 'Standard'
AllocationMethod = 'Static'
IpAddressVersion = 'IPv4'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip4
$ip6 = @{
Name = 'myPublicIP-IPv6'
ResourceGroupName = 'myResourceGroup'
Location = 'eastus2'
Sku = 'Standard'
AllocationMethod = 'Static'
IpAddressVersion = 'IPv6'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip6
创建虚拟机
在本部分中,你要创建虚拟机及其支持资源。
创建虚拟机
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择“+ 创建”,然后选择“Azure 虚拟机”。
在“基本信息”选项卡中,输入或选择以下信息。
设置 |
值 |
项目详细信息 |
|
订阅 |
选择订阅。 |
资源组 |
选择“myResourceGroup”。 |
实例详细信息 |
|
虚拟机名称 |
输入myVM。 |
区域 |
选择“美国东部 2”。 |
可用性选项 |
选择“无需基础结构冗余”。 |
安全类型 |
选择“标准”。 |
映像 |
选择“Ubuntu Server 20.04 LTS - Gen2”。 |
大小 |
选择默认大小。 |
管理员帐户 |
|
身份验证类型 |
选择“SSH 公钥”。 |
用户名 |
输入用户名。 |
SSH 公钥源 |
选择“生成新密钥对”。 |
密钥对名称 |
输入“mySSHKey”。 |
入站端口规则 |
|
公共入站端口 |
选择“无”。 |
选择“网络”选项卡,或者选择“下一步: 磁盘”,然后选择“下一步: 网络”。
在“网络”选项卡中,输入或选择以下信息。
设置 |
值 |
网络接口 |
|
虚拟网络 |
选择“myVNet”。 |
子网 |
选择“myBackendSubnet (10.1.0.0/24,2404:f800:8000:122:/64)”。 |
公共 IP |
选择“myPublicIP-IPv4”。 |
NIC 网络安全组 |
选择“高级”。 |
配置网络安全组 |
选择“新建”。 在“名称”中,输入“myNSG”。 选择“确定”。 |
选择“查看 + 创建”。
选择“创建”。
此时会显示“生成新密钥对”。 选择“下载私钥并创建资源”。
私钥将下载到本地计算机。 将私钥复制到计算机上的目录。 以下示例中,它是 ~/.ssh。
在创建期间,网络接口会自动创建并附加到所选虚拟网络。 在本部分,你将向现有网络接口添加 IPv6 配置。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择“myVM”或现有虚拟机名称。
在“设置”中选择“网络” 。
默认网络接口的名称将是“myvmxx”,其中 xx 是一个随机数。 在此示例中,它是 myvm281。 选择“网络接口:”旁的“myvm281”。
在网络接口属性中,在“设置”中选择“IP 配置”。
在“IP 配置”中,选择“+ 添加” 。
在“添加 IP 配置”中,输入或选择以下信息。
设置 |
值 |
名称 |
输入“Ipv6config”。 |
IP 版本 |
选择“IPv6”。 |
专用 IP 地址设置 |
|
分配 |
保留默认值“动态”。 |
公共 IP 地址 |
选择“关联”。 |
公共 IP 地址 |
选择“myPublicIP-IPv6”。 |
选择“确定”。
在本部分中,你要创建虚拟机及其支持资源。
创建网络接口
使用 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 Ubuntu2204 \
--admin-username azureuser \
--authentication-type ssh \
--generate-ssh-keys
在本部分中,你要创建虚拟机及其支持资源。
创建网络接口
使用 New-AzNetworkInterface 和 New-AzNetworkInterfaceIpConfig 创建虚拟机的网络接口。 先前创建的公共 IP 地址和 NSG 与 NIC 关联。 网络接口已连接到之前创建的虚拟网络。
## Place the virtual network into a variable. ##
$net = @{
Name = 'myVNet'
ResourceGroupName = 'myResourceGroup'
}
$vnet = Get-AzVirtualNetwork @net
## Place the network security group into a variable. ##
$ns = @{
Name = 'myNSG'
ResourceGroupName = 'myResourceGroup'
}
$nsg = Get-AzNetworkSecurityGroup @ns
## Place the IPv4 public IP address into a variable. ##
$pub4 = @{
Name = 'myPublicIP-IPv4'
ResourceGroupName = 'myResourceGroup'
}
$pubIPv4 = Get-AzPublicIPAddress @pub4
## Place the IPv6 public IP address into a variable. ##
$pub6 = @{
Name = 'myPublicIP-IPv6'
ResourceGroupName = 'myResourceGroup'
}
$pubIPv6 = Get-AzPublicIPAddress @pub6
## Create IPv4 configuration for NIC. ##
$IP4c = @{
Name = 'ipconfig-ipv4'
Subnet = $vnet.Subnets[0]
PrivateIpAddressVersion = 'IPv4'
PublicIPAddress = $pubIPv4
}
$IPv4Config = New-AzNetworkInterfaceIpConfig @IP4c
## Create IPv6 configuration for NIC. ##
$IP6c = @{
Name = 'ipconfig-ipv6'
Subnet = $vnet.Subnets[0]
PrivateIpAddressVersion = 'IPv6'
PublicIPAddress = $pubIPv6
}
$IPv6Config = New-AzNetworkInterfaceIpConfig @IP6c
## Command to create network interface for VM ##
$nic = @{
Name = 'myNIC1'
ResourceGroupName = 'myResourceGroup'
Location = 'eastus2'
NetworkSecurityGroup = $nsg
IpConfiguration = $IPv4Config,$IPv6Config
}
New-AzNetworkInterface @nic
创建虚拟机
使用以下命令创建虚拟机:
$cred = Get-Credential
## Place network interface into a variable. ##
$nic = @{
Name = 'myNIC1'
ResourceGroupName = 'myResourceGroup'
}
$nicVM = Get-AzNetworkInterface @nic
## Create a virtual machine configuration for VMs ##
$vmsz = @{
VMName = 'myVM'
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = 'myVM'
Credential = $cred
}
$vmimage = @{
PublisherName = 'Debian'
Offer = 'debian-11'
Skus = '11'
Version = 'latest'
}
$vmConfig = New-AzVMConfig @vmsz `
| Set-AzVMOperatingSystem @vmos -Linux `
| Set-AzVMSourceImage @vmimage `
| Add-AzVMNetworkInterface -Id $nicVM.Id
## Create the virtual machine for VMs ##
$vm = @{
ResourceGroupName = 'myResourceGroup'
Location = 'eastus2'
VM = $vmConfig
SshKeyName = 'mySSHKey'
}
New-AzVM @vm -GenerateSshKey
测试 SSH 连接
你将使用 SSH 连接到虚拟机,以测试 IPv4 公共 IP 地址。
在门户顶部的搜索框中,输入“公共 IP 地址”。 在搜索结果中,选择“公共 IP 地址”。
选择“myPublicIP-IPv4”。
公共 IPv4 地址位于“IP 地址”的“概述”中。 在本示例中,它是 20.22.46.19。
使用以下命令打开到虚拟机的 SSH 连接。 将 IP 地址替换为虚拟机的 IP 地址。 将 azureuser
替换为创建虚拟机期间选择的用户名。 -i
是之前下载的私钥路径。 在此示例中,它是 ~/. ssh/mySSHKey.pem。
ssh -i ~/.ssh/mySSHkey.pem azureuser@20.22.46.19
使用 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
使用 Get-AzPublicIpAddress 显示虚拟机的 IP 地址。
$ip4 = @{
ResourceGroupName = 'myResourceGroup'
Name = 'myPublicIP-IPv4'
}
Get-AzPublicIPAddress @ip4 | select IpAddress
PS /home/user> Get-AzPublicIPAddress @ip4 | select IpAddress
IpAddress
---------
20.72.115.187
$ip6 = @{
ResourceGroupName = 'myResourceGroup'
Name = 'myPublicIP-IPv6'
}
Get-AzPublicIPAddress @ip6 | select IpAddress
PS /home/user> Get-AzPublicIPAddress @ip6 | select IpAddress
IpAddress
---------
2603:1030:403:3::1ca
使用以下命令打开到虚拟机的 SSH 连接。 将 IP 地址替换为虚拟机的 IP 地址。
ssh azureuser@20.72.115.187
清理资源
完成本文创建的资源后,请删除资源组及其包含的所有资源:
在门户顶部的搜索框中输入“myResourceGroup” 。 在“资源组”的搜索结果中选择“myResourceGroup”。
选择“删除资源组”。
对于“键入资源组名称”,请输入“myResourceGroup”,然后选择“删除” 。
不再需要上述资源组、虚拟机和所有相关资源时,请使用 az group delete 命令将其删除。
az group delete \
--name myResourceGroup
后续步骤
本文已介绍如何创建具有双堆栈网络的 Azure 虚拟机。
有关 Azure 中 IPv6 和 IP 地址的详细信息,请参阅: