通过 PowerShell 使用虚拟网络对等互连连接虚拟网络

可以使用虚拟网络对等互连将虚拟网络互相连接。 将虚拟网络对等互连后,两个虚拟网络中的资源将能够以相同的延迟和带宽相互通信,就像这些资源位于同一个虚拟网络中一样。 在本文中,学习如何:

  • 创建两个虚拟网络
  • 使用虚拟网络对等互连连接两个虚拟网络。
  • 将虚拟机 (VM) 部署到每个虚拟网络
  • VM 之间进行通信

如果没有 Azure 订阅,请在开始前创建一个试用版订阅

如果选择在本地安装和使用 PowerShell,则本文需要 Azure PowerShell 模块 1.0.0 或更高版本。 运行 Get-Module -ListAvailable Az 查找已安装的版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 如果在本地运行 PowerShell,则还需运行 Connect-AzAccount -Environment AzureChinaCloud 来创建与 Azure 的连接。

创建虚拟网络

创建虚拟网络之前,必须为虚拟网络创建资源组以及本文中创建的所有其他资源。 使用 New-AzResourceGroup 创建资源组。 以下示例在“chinaeast”位置创建名为“myResourceGroup”的资源组。

Connect-AzAccount -Environment AzureChinaCloud
New-AzResourceGroup -ResourceGroupName myResourceGroup -Location chinaeast

使用 New-AzVirtualNetwork 创建虚拟网络。 以下示例创建地址前缀为 10.0.0.0/16 且名为 myVirtualNetwork1 的虚拟网络。

$virtualNetwork1 = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location chinaeast`
  -Name myVirtualNetwork1 `
  -AddressPrefix 10.0.0.0/16

使用 Add-AzVirtualNetworkSubnetConfig 创建子网配置。 以下示例创建地址前缀为 10.0.0.0/24 的子网配置:

$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
  -Name Subnet1 `
  -AddressPrefix 10.0.0.0/24 `
  -VirtualNetwork $virtualNetwork1

使用 Set-AzVirtualNetwork 将子网配置写入虚拟网络,从而创建子网:

$virtualNetwork1 | Set-AzVirtualNetwork

创建地址前缀为 10.1.0.0/16 的虚拟网络和一个子网:

# Create the virtual network.
$virtualNetwork2 = New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroup `
  -Location chinaeast`
  -Name myVirtualNetwork2 `
  -AddressPrefix 10.1.0.0/16

# Create the subnet configuration.
$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
  -Name Subnet1 `
  -AddressPrefix 10.1.0.0/24 `
  -VirtualNetwork $virtualNetwork2

# Write the subnet configuration to the virtual network.
$virtualNetwork2 | Set-AzVirtualNetwork

将虚拟网络对等互连

使用 Add-AzVirtualNetworkPeering 创建对等互连。 以下示例将 myVirtualNetwork1 对等互连到 myVirtualNetwork2

Add-AzVirtualNetworkPeering `
  -Name myVirtualNetwork1-myVirtualNetwork2 `
  -VirtualNetwork $virtualNetwork1 `
  -RemoteVirtualNetworkId $virtualNetwork2.Id

在上一个命令执行后返回的输出中,可以看到 PeeringStateInitiated。 对等互连将保持 Initiated 状态,直到你创建从 myVirtualNetwork2myVirtualNetwork1 的对等互连。 创建从 myVirtualNetwork2myVirtualNetwork1 的对等互连。

Add-AzVirtualNetworkPeering `
  -Name myVirtualNetwork2-myVirtualNetwork1 `
  -VirtualNetwork $virtualNetwork2 `
  -RemoteVirtualNetworkId $virtualNetwork1.Id

在上一个命令执行后返回的输出中,可以看到 peeringStateConnected。 Azure 还将 myVirtualNetwork1-myVirtualNetwork2 对等互连的对等互连状态更改为 Connected。 使用 Get-AzVirtualNetworkPeering 确认 myVirtualNetwork1-myVirtualNetwork2 对等互连的对等互连状态是否已更改为“Connected”

Get-AzVirtualNetworkPeering `
  -ResourceGroupName myResourceGroup `
  -VirtualNetworkName myVirtualNetwork1 `
  | Select PeeringState

在两个虚拟网络中的对等互连的 PeeringStateConnected 之前,在一个虚拟网络中的资源无法与另一个虚拟网络中的资源通信。

创建虚拟机

在稍后的步骤中,会在每个虚拟网络中创建一个 VM,以便可以在它们之间进行通信。

创建第一个 VM

使用 New-AzVM 创建 VM。 以下示例在 myVirtualNetwork1 虚拟网络中创建一个名为 myVm1 的 VM。 -AsJob 选项会在后台创建 VM,因此可继续执行下一步。 系统提示时,请输入想要用来登录到 VM 的用户名和密码。

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "China East" `
  -VirtualNetworkName "myVirtualNetwork1" `
  -SubnetName "Subnet1" `
  -ImageName "Win2016Datacenter" `
  -Name "myVm1" `
  -AsJob

创建第二个 VM

New-AzVm `
  -ResourceGroupName "myResourceGroup" `
  -Location "China East" `
  -VirtualNetworkName "myVirtualNetwork2" `
  -SubnetName "Subnet1" `
  -ImageName "Win2016Datacenter" `
  -Name "myVm2"

创建 VM 需要几分钟时间。 在 Azure 创建 VM 并将输出返回到 PowerShell 之前,不要继续执行后续步骤。

注意

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

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

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

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

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

VM 之间进行通信

可以从 Internet 连接到 VM 的公共 IP 地址。 使用 Get-AzPublicIpAddress 返回 VM 的公共 IP 地址。 以下示例返回 myVm1 VM 的公共 IP 地址

Get-AzPublicIpAddress `
  -Name myVm1 `
  -ResourceGroupName myResourceGroup | Select IpAddress

从本地计算机使用以下命令创建与 myVm1 VM 的远程桌面会话。 将 <publicIpAddress> 替换为上一命令返回的 IP 地址。

mstsc /v:<publicIpAddress>

此时会创建远程桌面协议 (.rdp) 文件,并下载到计算机,同时打开该文件。 输入用户名和密码(可能需要选择“更多选择”,然后选择“使用其他帐户”,以便指定在创建 VM 时输入的凭据),然后单击“确定”。 你可能会在登录过程中收到证书警告。 单击“是”或“继续”继续进行连接。

myVm1 VM 上,允许 Internet 控制消息协议 (ICMP) 通过 Windows 防火墙,以便在稍后的步骤中使用 PowerShell 从 myVm2 ping 此 VM:

New-NetFirewallRule -DisplayName "Allow ICMPv4-In" -Protocol ICMPv4

虽然本文中使用 ping 在 VM 之间进行通信,但在进行生产部署时,不建议允许 ICMP 通过 Windows 防火墙。

若要连接到 myVm2 VM,请在 myVm1 VM 上通过命令提示符输入以下命令:

mstsc /v:10.1.0.4

由于已在 myVm1 上启用了 ping,因此,现在可以在 myVm2 VM 上通过命令提示符按 IP 地址对它执行 ping 操作:

ping 10.0.0.4

会收到四条回复。 断开到 myVm1myVm2 的 RDP 会话。

清理资源

如果不再需要资源组及其包含的所有资源,请使用 Remove-AzResourcegroup 将其删除。

Remove-AzResourceGroup -Name myResourceGroup -Force

后续步骤

在本文中,你已学习了如何使用虚拟网络对等互连来连接同一 Azure 区域中的两个网络。 还可以将不同受支持的区域不同 Azure 订阅中的虚拟网络对等互连,并且可以使用对等互连创建中心辐射型网络设计。 若要详细了解虚拟网络对等互连,请参阅虚拟网络对等互连概述管理虚拟网络对等互连

可以通过 VPN 将自己的计算机连接到虚拟网络,并可与虚拟网络或对等虚拟网络中的资源进行交互。 有关用来完成虚拟网络文章中涉及的许多任务的可重用脚本,请参阅脚本示例