Demander à Learn
Demander à Learn
Mode focus
Table des matières
Lire en anglais
Partager via
微博
教程:使用virtual network对等互连连接虚拟网络
Dans cet article
可以使用虚拟网络对等互连将虚拟网络相互连接。 这些虚拟网络可以位于同一区域或不同的区域(也称为全局虚拟网络对等互连)。 虚拟网络对等互连后,两个虚拟网络中的资源可以使用Microsoft主干网络通过低延迟、高带宽连接相互通信。
本教程介绍如何执行下列操作:
创建虚拟网络
通过虚拟网络对等互连连接两个虚拟网络
将虚拟机(VM)部署到每个virtual network
在虚拟机之间通信
先决条件
如果选择在本地安装和使用 PowerShell,本文需要Azure PowerShell模块版本 1.0.0 或更高版本。 运行 Get-Module -ListAvailable Az 查找已安装的版本。 如果需要升级,请参阅 Install Azure PowerShell 模块 。 如果在本地运行 PowerShell,则还需要运行 Connect-AzAccount -Environment AzureChinaCloud 来创建与Azure的连接。
如果您没有 Azure 试用订阅,请在开始之前创建 试用订阅 。
可以使用本地Azure CLI。
本文需要 2.0.28 或更高版本的Azure CLI。
创建资源组
登录到 Azure portal 。
在门户顶部的搜索框中输入“资源组”。 在搜索结果中选择“资源组”。
选择+ 新建 。
在“创建资源组” 的“基本信息 ”选项卡中,输入或选择以下信息:
设置
值
订阅
选择订阅。
资源组
输入 test-rg 。
区域
选择“美国东部 2”。
选择“查看 + 创建” 。
选择 创建 。
使用 New-AzResourceGroup 创建资源组。 以下示例在 chinanorth3 位置创建名为 test-rg 的资源组。
$resourceGroup = @{
Name = "test-rg"
Location = "ChinaNorth3"
}
New-AzResourceGroup @resourceGroup
使用 az group create 创建资源组。 以下示例在 chinanorth3 位置创建名为 test-rg 的资源组。
az group create \
--name test-rg \
--location chinanorth3
创建虚拟网络
在门户顶部的搜索框中,输入 Virtual network 。 在搜索结果中,选择“虚拟网络”。
选择+ 新建 。
在 create virtual network1 的 Basics 选项卡上,输入或选择以下信息:
设置
值
项目详细信息
订阅
选择订阅。
资源组
选择“test-rg”。
实例详细信息
名称
输入“vnet-1”。
区域
选择“中国北部 3”。
选择“下一步 ”,转到“安全性 ”选项卡。
选择下一步 ,转到IP 地址 选项卡。
在“子网 ”的地址空间框中,选择“默认 ”子网。
在 “编辑子网 ”中,输入或选择以下信息:
设置
值
子网详细信息
子网模板
保留默认值“默认 ”。
名称
输入“subnet-1”。
起始地址
保留默认值“10.0.0.0 ”。
子网大小
保留默认值“/24 (256 个地址) ”。
选择“保存”。
选择屏幕底部的“查看 + 创建 ”,然后在验证通过时选择“创建 ”。
使用 New-AzVirtualNetwork 创建virtual network。 以下示例创建一个名为 vnet-1 的virtual network,其地址前缀为 10.0.0.0/16 。
$vnet1 = @{
ResourceGroupName = "test-rg"
Location = "ChinaNorth3"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork1 = New-AzVirtualNetwork @vnet1
使用 Add-AzVirtualNetworkSubnetConfig 创建子网配置。 以下示例创建地址前缀为 10.0.0.0/24 的子网配置:
$subConfig = @{
Name = "subnet-1"
AddressPrefix = "10.0.0.0/24"
VirtualNetwork = $virtualNetwork1
}
$subnetConfig1 = Add-AzVirtualNetworkSubnetConfig @subConfig
使用 Add-AzVirtualNetworkSubnetConfig 为 Azure Bastion 创建子网配置。 以下示例创建地址前缀为 10.0.1.0/24 的子网配置:
$subBConfig = @{
Name = "AzureBastionSubnet"
AddressPrefix = "10.0.1.0/24"
VirtualNetwork = $virtualNetwork1
}
$subnetConfig2 = Add-AzVirtualNetworkSubnetConfig @subBConfig
使用 Set-AzVirtualNetwork 将子网配置写入virtual network,这会创建子网:
$virtualNetwork1 | Set-AzVirtualNetwork
使用 az network vnet create 创建virtual network。 以下示例创建一个名为 vnet-1 的virtual network,其地址前缀为 10.0.0.0/16 。
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefixes 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.0.0.0/24
使用 az network vnet subnet create 创建 Bastion 子网。
# Create a bastion subnet.
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name AzureBastionSubnet \
--address-prefix 10.0.1.0/24
创建第二个虚拟网络
重复上述步骤,使用以下值创建第二个virtual network:
注意事项
第二个虚拟网络可以位于与第一个虚拟网络相同的区域,也可以位于不同的区域。 可以跳过对第二个虚拟网络的 Bastion 部署。 建立虚拟网络对等互连后,可以使用同一个 Bastion 部署连接到这两台虚拟机。
设置
值
名称
vnet-2
地址空间
10.1.0.0/16
资源组
test-rg
子网名称
subnet-1
子网地址范围
10.1.0.0/24
使用 New-AzVirtualNetwork 创建第二个虚拟网络。 以下示例创建一个地址前缀为10.1.0.0/16 的虚拟网络,名为vnet-2 。
注意事项
第二个虚拟网络可以位于与第一个虚拟网络相同的区域或不同的区域中。 对于第二个虚拟网络,不需要部署 Bastion。 建立虚拟网络对等互连后,可以使用同一个 Bastion 部署连接到这两个虚拟机。
$vnet2 = @{
ResourceGroupName = "test-rg"
Location = "ChinaNorth3"
Name = "vnet-2"
AddressPrefix = "10.1.0.0/16"
}
$virtualNetwork2 = New-AzVirtualNetwork @vnet2
使用 Add-AzVirtualNetworkSubnetConfig 创建子网配置。 以下示例创建地址前缀为 10.1.0.0/24 的子网配置:
$subConfig = @{
Name = "subnet-1"
AddressPrefix = "10.1.0.0/24"
VirtualNetwork = $virtualNetwork2
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subConfig
使用 Set-AzVirtualNetwork 将子网配置写入virtual network,这会创建子网:
$virtualNetwork2 | Set-AzVirtualNetwork
使用 az network vnet create 创建第二个虚拟网络。 以下示例创建一个名为 vnet-2 的虚拟网络,地址前缀为 10.1.0.0/16 。
注意事项
第二个虚拟网络可以位于与第一个虚拟网络同一区域,也可以位于不同的区域。 您不需要为第二个虚拟网络部署 Bastion。 建立虚拟网络对等互连后,可以使用相同的 Bastion 部署连接到这两个虚拟机。
az network vnet create \
--name vnet-2 \
--resource-group test-rg \
--address-prefixes 10.1.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.1.0.0/24
部署Azure Bastion
Azure Bastion 通过浏览器使用其专用 IP 地址,通过安全外壳(SSH)或远程桌面协议(RDP)连接到您的虚拟网络中的虚拟机(VM)。 virtual machines不需要公共 IP 地址、客户端软件或特殊配置。 有关Azure Bastion的详细信息,请参阅 Azure Bastion 。
注意事项
每小时定价从部署 Bastion 的时刻开始计算,无论出站数据的使用情况如何。 有关详细信息,请参阅 Pricing 和 SKUs 。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。
在门户顶部的搜索框中,输入“堡垒” 。 在搜索结果中选择 Bastions 。
选择+ 新建 。
在“创建 Bastion” 的“基本” 选项卡中,输入或选择以下信息:
设置
值
项目详细信息
订阅
选择订阅。
资源组
选择“test-rg”。
实例详细信息
名称
输入堡垒 。
区域
选择“中国北部 3”。
层
选择 “开发人员 ”。
配置虚拟网络
虚拟网络
选择“vnet-1”。
子网
自动创建的 AzureBastionSubnet 具有 /26 或更大的地址空间。
选择“查看 + 创建” 。
选择 创建 。
使用 New-AzPublicIpAddress 为Azure Bastion主机创建公共 IP 地址。 以下示例在虚拟网络 vnet-1 中创建名为 public-ip-bastion 的公共 IP 地址。
$publicIpParams = @{
ResourceGroupName = "test-rg"
Name = "public-ip-bastion"
Location = "chinanorth3"
AllocationMethod = "Static"
Sku = "Standard"
}
New-AzPublicIpAddress @publicIpParams
使用 New-AzBastion 创建Azure Bastion主机。 以下示例在 vnet-1 虚拟网络的 AzureBastionSubnet 子网中创建了一个名为 bastion 的 Azure Bastion 主机。 Azure Bastion用于安全连接Azure虚拟机,而无需将其暴露在公共互联网。
$bastionParams = @{
ResourceGroupName = "test-rg"
Name = "bastion"
VirtualNetworkName = "vnet-1"
PublicIpAddressName = "public-ip-bastion"
PublicIpAddressRgName = "test-rg"
VirtualNetworkRgName = "test-rg"
Sku = "Basic"
}
New-AzBastion @bastionParams -AsJob
使用 az network public-ip create 为Azure Bastion主机创建公共 IP 地址。 以下示例在虚拟网络 vnet-1 中创建名为 public-ip-bastion 的公共 IP 地址。
az network public-ip create \
--resource-group test-rg \
--name public-ip-bastion \
--location chinanorth3 \
--allocation-method Static \
--sku Standard
使用 az network bastion create 创建Azure Bastion主机。 以下示例在 vnet-1 虚拟网络的 AzureBastionSubnet 子网中创建了一个名为 bastion 的 Azure Bastion 主机。 Azure Bastion用于安全连接Azure虚拟机,而无需将其暴露在公共互联网。
az network bastion create \
--resource-group test-rg \
--name bastion \
--vnet-name vnet-1 \
--public-ip-address public-ip-bastion \
--location chinanorth3 \
--sku Basic \
--no-wait
将虚拟网络对等互连
创建虚拟网络对等连接
使用以下步骤在 vnet1 和 vnet2 之间创建双向网络对等连接。
在门户顶部的搜索框中,输入 Virtual network 。 在搜索结果中,选择“虚拟网络”。
选择“vnet-1”。
在设置 中选择对等互连 。
选择“+ 添加”。
在“添加对等连接”中输入或选择以下信息:
设置
值
This virtual network
对等连接名称
输入 vnet-1-to-vnet-2 。
允许“vnet-1”访问“vnet-2”
保留默认值“已选择”。
允许“vnet-1”接收来自“vnet-2”的转发流量
选中复选框。
允许“vnet-1”中的网关将流量转发到“vnet-2”
保留默认值“已清除”。
允许“vnet-1”使用“vnet-2”远程网关
保留默认值“已清除”。
Remote virtual network
对等连接名称
输入 vnet-2-to-vnet-1 。
虚拟网络部署模型
保留默认值 Resource Manager 。
订阅
选择订阅。
虚拟网络
选择“vnet-2 ”。
允许“vnet-2”访问“vnet-1”
保留默认值“已选择”。
允许“vnet-2”接收来自“vnet-1”的转发流量
选中复选框。
允许“vnet-2”中的网关将流量转发到“vnet-1”
保留默认值“已清除”。
允许“vnet-2”使用“vnet-1”远程网关
保留默认值“已清除”。
选择 添加 。
使用 Add-AzVirtualNetworkPeering 创建对等互连。 以下示例将 vnet-1 对等互连到 vnet-2 。
$peerConfig1 = @{
Name = "vnet-1-to-vnet-2"
VirtualNetwork = $virtualNetwork1
RemoteVirtualNetworkId = $virtualNetwork2.Id
}
Add-AzVirtualNetworkPeering @peerConfig1
在上一个命令执行后返回的输出中,会看到 PeeringState 已 启动 。 对等连接将保持在“发起”状态,直到您创建从 vnet-2 到 vnet-1 的连接。 创建从 vnet-2 到 vnet-1 的对等互连 。
$peerConfig2 = @{
Name = "vnet-2-to-vnet-1"
VirtualNetwork = $virtualNetwork2
RemoteVirtualNetworkId = $virtualNetwork1.Id
}
Add-AzVirtualNetworkPeering @peerConfig2
在上一个命令执行后返回的输出中,可以看到 PeeringState 为 Connected 。 Azure还将的对等互连状态更改为。 确认 vnet-1-to-vnet-2 对等互连的状态已更改为 Connected ,请使用 Get-AzVirtualNetworkPeering 进行确认。
$peeringState = @{
ResourceGroupName = "test-rg"
VirtualNetworkName = "vnet-1"
}
Get-AzVirtualNetworkPeering @peeringState | Select PeeringState
在两个虚拟网络的对等互连中,只有当两者的PeeringState 变为Connected 时,一个虚拟网络中的资源才能与另一个虚拟网络中的资源进行通信。
在虚拟网络资源 ID 之间建立对等连接。 使用 az network vnet show 获取每个虚拟网络的 ID,并将资源 ID 存储在各自的变量中。
# Get the id for vnet-1.
vNet1Id=$(az network vnet show \
--resource-group test-rg \
--name vnet-1 \
--query id --out tsv)
# Get the id for vnet-2.
vNet2Id=$(az network vnet show \
--resource-group test-rg \
--name vnet-2 \
--query id \
--out tsv)
使用 az network vnet peering create 创建从 vnet-1 到 vnet-2 的对等互连。 如果未指定 --allow-vnet-access 参数,则会建立对等互连,但无法通过它进行通信。
az network vnet peering create \
--name vnet-1-to-vnet-2 \
--resource-group test-rg \
--vnet-name vnet-1 \
--remote-vnet $vNet2Id \
--allow-vnet-access
在上一个命令执行后返回的输出中,会看到 PeeringState 已 启动 。 对等连接将保持在“发起”状态,直到您创建从 vnet-2 到 vnet-1 的连接。 创建从 vnet-2 到 vnet-1 的对等互连 。
az network vnet peering create \
--name vnet-2-to-vnet-1 \
--resource-group test-rg \
--vnet-name vnet-2 \
--remote-vnet $vNet1Id \
--allow-vnet-access
在上一个命令执行后返回的输出中,可以看到 peeringState 为 Connected 。 Azure还将vnet-1-to-vnet-2 对等互连的状态更改为Connected 。 确认vnet-1-to-vnet-2 对等互联的状态已更改为Connected ,通过az network vnet peering show 检查。
az network vnet peering show \
--name vnet-1-to-vnet-2 \
--resource-group test-rg \
--vnet-name vnet-1 \
--query peeringState
在两个虚拟网络中,只有当对等连接的peeringState 状态为Connected 时,一个虚拟网络中的资源才能与另一个虚拟网络中的资源进行通信。
创建虚拟机
通过在每个虚拟网络中创建虚拟机来测试虚拟机之间的通信。 虚拟机可以通过您创建的虚拟网络对等连接彼此通信。
在门户顶部的搜索框中,输入 虚拟机 。 在搜索结果中选择Virtual machines 。
选择+ 创建 ,然后选择Azure虚拟机 。
在 “创建虚拟机 ”中输入,或在“ 基本信息 ”选项卡中选择以下信息:
设置
值
项目详细信息
订阅
选择订阅。
资源组
选择“test-rg”。
实例详细信息
虚拟机名称
输入“vm-1”。
区域
选择 “(亚洲)中国北部 3 。
可用性选项
选择“无需基础结构冗余”。
安全类型
选择“标准” 。
图像
选择“Ubuntu Server 24.04 LTS - x64 Gen2” 。
VM 架构
保留默认值 x64 。
大小
选择一个大小。
管理员帐户
身份验证类型
选择“SSH 公钥”。
用户名
输入用户名。
SSH 公钥源
选择“生成新密钥对”。
密钥对名称
输入 vm-1-key 。
入站端口规则
公共入站端口
选择“无”。
选择“下一步: 磁盘”,然后选择“下一步: 网络” 。
在“网络”选项卡中,输入或选择以下信息:
设置
值
网络接口
虚拟网络
选择“vnet-1”。
子网
选择“subnet-1 (10.0.0.0/24)”。
公共 IP
选择“无”。
网络接口 (NIC) 网络安全组
选择“高级”。
配置网络安全组
选择“新建”。
在 “名称” 中输入 nsg-1 。
选择“确定”。
将其余选项保留为默认值,然后选择“查看 + 创建” 。
选择 创建 。
重复上述步骤,使用以下值在第二个虚拟网络中创建第二个虚拟机:
设置
值
虚拟机名称
vm-2
区域
中国北部 3 或与 vnet-2 相同的区域。
SSH 公钥源
生成新的密钥对 。
密钥对名称
vm-2-key 。
虚拟网络
选择“vnet-2 ”。
子网
选择 subnet-1 (10.1.0.0/24) 。
公共 IP
无
网络安全组名称
nsg-2
创建第一个虚拟机
使用 New-AzVM 创建虚拟机。 以下示例在 vnet-1 虚拟网络中创建名为 vm-1 的虚拟机。 出现提示时,输入虚拟机的用户名和密码。
# Create a credential object
$cred = Get-Credential
# Define the virtual machine parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "chinanorth3"
Name = "vm-1"
Image = "Ubuntu2204"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-1"
PublicIpAddressName = "" # No public IP address
SshKeyName = "vm-1-ssh-key"
GenerateSshKey = $true
}
# Create the virtual machine
New-AzVM @vmParams
创建第二个虚拟机
# Create a credential object
$cred = Get-Credential
# Define the virtual machine parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "chinanorth3"
Name = "vm-2"
Image = "Ubuntu2204"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-2"
SubnetName = "subnet-1"
PublicIpAddressName = "" # No public IP address
SshKeyName = "vm-2-ssh-key"
GenerateSshKey = $true
}
# Create the virtual machine
New-AzVM @vmParams
创建第一个虚拟机
使用 az vm create 创建虚拟机。 以下示例在虚拟网络vnet-1 中创建一个名为vm-1 的虚拟机。 如果默认密钥位置中尚不存在 SSH 密钥,该命令会创建它们。 该 --no-wait 选项在后台创建虚拟机,以便可以继续执行下一步。
az vm create \
--resource-group test-rg \
--name vm-1 \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--public-ip-address "" \
--admin-username azureuser \
--generate-ssh-keys \
--no-wait
创建第二个虚拟机
在 vnet-2 virtual network 中创建虚拟机。
az vm create \
--resource-group test-rg \
--name vm-2 \
--image Ubuntu2204 \
--vnet-name vnet-2 \
--subnet subnet-1 \
--public-ip-address "" \
--admin-username azureuser \
--generate-ssh-keys
创建虚拟机需花费几分钟的时间。
在继续执行后续步骤之前,请等待虚拟机的创建完成。
连接到虚拟机
在门户顶部的搜索框中,输入 虚拟机 。 在搜索结果中选择Virtual machines 。
在 Virtual machines 中,选择 vm-1 。
在“概述”部分中选择“连接”,然后选择“通过 Bastion 连接” 。
在 Bastion 连接页中,输入或选择以下信息:
设置
值
身份验证类型
从本地文件选择 SSH 私钥 。
用户名
输入创建的用户名。
本地文件
选择下载的 vm-1 密钥 私钥文件。
选择 连接 。
在虚拟机之间通信
在 "vm-1" 的 bash 提示符下,输入 。
你会收到类似于以下消息的回复:
azureuser@vm-1:~$ ping -c 4 10.1.0.4
PING 10.1.0.4 (10.1.0.4) 56(84) bytes of data.
64 bytes from 10.1.0.4: icmp_seq=1 ttl=64 time=2.29 ms
64 bytes from 10.1.0.4: icmp_seq=2 ttl=64 time=1.06 ms
64 bytes from 10.1.0.4: icmp_seq=3 ttl=64 time=1.30 ms
64 bytes from 10.1.0.4: icmp_seq=4 ttl=64 time=0.998 ms
--- 10.1.0.4 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 0.998/1.411/2.292/0.520 ms
关闭 Bastion 会话。
在门户顶部的搜索框中,输入 虚拟机 。 在搜索结果中选择Virtual machines 。
在 Virtual machines 中,选择 vm-2 。
在“概述”部分中选择“连接”,然后选择“通过 Bastion 连接” 。
在 Bastion 连接页中,输入或选择以下信息:
设置
值
身份验证类型
从本地文件选择 SSH 私钥 。
用户名
输入创建的用户名。
本地文件
选择下载的 vm-2 密钥 私钥文件。
选择 连接 。
在“vm-2”的 bash 提示符下,输入 。
你会收到类似于以下消息的回复:
azureuser@vm-2:~$ ping -c 4 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_seq=1 ttl=64 time=1.81 ms
64 bytes from 10.0.0.4: icmp_seq=2 ttl=64 time=3.35 ms
64 bytes from 10.0.0.4: icmp_seq=3 ttl=64 time=0.811 ms
64 bytes from 10.0.0.4: icmp_seq=4 ttl=64 time=1.28 ms
关闭 Bastion 会话。
清理资源
使用创建的资源之后,可以删除资源组及其所有资源:
在Azure portal中,搜索并选择资源组 。
在“资源组”页上,选择“test-rg”资源组。
在“test-rg”页上,选择“删除资源组”。
在“输入资源组名称以确认删除”中输入“test-rg”,然后选择“删除” 。
如果不再需要资源组及其包含的所有资源,请使用 Remove-AzResourcegroup 将其删除。
$rgParams = @{
Name = "test-rg"
}
Remove-AzResourceGroup @rgParams -Force
不再需要时,请使用az group delete 删除资源组及其包含的所有资源。
az group delete \
--name test-rg \
--yes \
--no-wait
后续步骤
在本教程中,你将:
若要详细了解虚拟网络对等互连:
Ressources supplémentaires
Last updated on
2026-03-10