使用 PowerShell 以虛擬網路對等互連連線虛擬網路

您可以使用虛擬網路對等互連,讓虛擬網路彼此連線。 一旦虛擬網路對等互連,兩個虛擬網路中的資源就可以彼此通訊,且通訊時會有相同的延遲和頻寬,彷彿這些資源是位於相同的虛擬網路中。

在本文中,您將學會如何:

  • 建立兩個虛擬網路

  • 使用虛擬網路對等互連連線兩個虛擬網路

  • 將虛擬機器 (VM) 部署到每個虛擬網路

  • 虛擬機器之間的通訊

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Azure Cloud Shell 的「試試看」範例螢幕擷取畫面。
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 啟動 Azure Cloud Shell 的按鈕。
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 顯示 Azure 入口網站中 Cloud Shell 按鈕的螢幕擷取畫面

若要使用 Azure Cloud Shell:

  1. 啟動 Cloud Shell。

  2. 選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。

  3. 透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。

  4. 選取 Enter 鍵執行程式碼或命令。

如果您選擇在本機安裝和使用 PowerShell,本文會要求使用 Azure PowerShell 模組 1.0.0 版或更新版本。 執行 Get-Module -ListAvailable Az 以尋找安裝的版本。 如果您需要升級,請參閱安裝 Azure PowerShell 模組。 如果您在本機執行 PowerShell,則也需要執行 Connect-AzAccount 以建立與 Azure 的連線。

建立虛擬網路

建立虛擬網路之前,您必須為虛擬網路以及在本文中建立的所有其他資源,建立資源群組。 使用 New-AzResourceGroup 來建立資源群組。 下列範例會在 eastus 位置建立名為 test-rg 的資源群組。

$resourceGroup = @{
    Name = "test-rg"
    Location = "EastUS"
}
New-AzResourceGroup @resourceGroup

使用 New-AzVirtualNetwork 建立虛擬網路。 下列範例會建立名為 vnet-1 的虛擬網路,其地址前綴 為 10.0.0.0/16

$vnet1 = @{
    ResourceGroupName = "test-rg"
    Location = "EastUS"
    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
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subConfig

請使用 Set-AzVirtualNetwork 將子網路設定寫入至虛擬網路,以建立子網路:

$virtualNetwork1 | Set-AzVirtualNetwork

建立具有 10.1.0.0/16 位址前綴和一個子網的虛擬網路:

# Create the virtual network.
$vnet2 = @{
    ResourceGroupName = "test-rg"
    Location = "EastUS"
    Name = "vnet-2"
    AddressPrefix = "10.1.0.0/16"
}
$virtualNetwork2 = New-AzVirtualNetwork @vnet2

# Create the subnet configuration.
$subConfig = @{
    Name = "subnet-1"
    AddressPrefix = "10.1.0.0/24"
    VirtualNetwork = $virtualNetwork2
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subConfig

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

對等虛擬網路

使用 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-2vnet-1 建立對等互連。

$peerConfig2 = @{
    Name = "vnet-2-to-vnet-1"
    VirtualNetwork = $virtualNetwork2
    RemoteVirtualNetworkId = $virtualNetwork1.Id
}
Add-AzVirtualNetworkPeering @peerConfig2

在執行上一個命令之後所傳回的輸出中,您會看到 PeeringState 是「已連線」。 Azure 也會將 vnet-1-to-vnet-2 對等互連的對等互連狀態變更為 連線。 確認 vnet-1-to-vnet-2 對等互連的對等互連狀態已變更為使用 Get-AzVirtualNetworkPeering 連線

$peeringState = @{
    ResourceGroupName = "test-rg"
    VirtualNetworkName = "vnet-1"
}
Get-AzVirtualNetworkPeering @peeringState | Select PeeringState

兩個虛擬網路之對等互連的 PeeringState 都是「已連線」之前,其中一個虛擬網路中的資源無法與另一個虛擬網路中的資源通訊。

建立虛擬機器

在每個虛擬網路中建立虛擬機器,以便您可以在稍後的步驟中於彼此之間通訊。

建立第一個 VM

使用 New-AzVM 建立 VM。 下列範例會在 vnet-1 虛擬網路中建立名為 vm-1VM。 -AsJob 選項會在背景建立虛擬機器,以便您繼續進行下一步。 出現提示時,請輸入虛擬機的使用者名稱和密碼。

$vm1 = @{
    ResourceGroupName = "test-rg"
    Location = "EastUS"
    VirtualNetworkName = "vnet-1"
    SubnetName = "subnet-1"
    ImageName = "Win2019Datacenter"
    Name = "vm-1"
}
New-AzVm @vm1 -AsJob

建立第二個 VM

$vm2 = @{
    ResourceGroupName = "test-rg"
    Location = "EastUS"
    VirtualNetworkName = "vnet-2"
    SubnetName = "subnet-1"
    ImageName = "Win2019Datacenter"
    Name = "vm-2"
}
New-AzVm @vm2

建立 VM 需要幾分鐘的時間。 在 Azure 建立 vm-2 並將輸出傳回 PowerShell 之前,請勿繼續進行後續步驟。

注意

無論是未獲指派公用 IP 位址的 VM,或位於內部基本 Azure 負載平衡器後端集區的 VM,Azure 都會為其提供預設輸出存取 IP。 預設輸出存取 IP 機制能提供無法自行設定的輸出 IP 位址。

發生下列其中一個事件時,會停用預設輸出存取 IP:

  • 對 VM 指派了公用 IP 位址。
  • 在標準負載平衡器的後端集區中放置了 VM (無論有沒有輸出規則)。
  • Azure NAT 閘道資源會指派給 VM 的子網。

您在彈性協調流程模式中使用虛擬機器擴展集建立的 VM 沒有預設輸出存取。

如需 Azure 中輸出連線的詳細資訊,請參閱 Azure 中的預設對外存取針對輸出連線,使用來源網路位址轉譯 (SNAT)

虛擬機器之間的通訊

您可以從網際網路連線至 VM 的公用 IP 位址。 請使用 Get-AzPublicIpAddress 來傳回 VM 的公用 IP 位址。 下列範例會傳回 vm-1 VM 的公用 IP 位址:

$ipAddress = @{
    ResourceGroupName = "test-rg"
    Name = "vm-1"
}
Get-AzPublicIpAddress @ipAddress | Select IpAddress

使用下列命令,從本機計算機建立具有 vm-1 VM 的遠端桌面會話。 以上一個命令傳回的 IP 位址取代 <publicIpAddress>

mstsc /v:<publicIpAddress>

遠端桌面通訊協定 (.rdp) 檔案隨即建立並開啟。 輸入使用者名稱和密碼 (您可能需要選取 [更多選擇],然後選取 [使用不同的帳戶] 以指定您在建立虛擬機器時輸入的認證),然後按一下 [確定]。 您可能會在登入程序期間收到憑證警告。 按一下 [是] 或 [繼續] 以繼續進行連線。

在 vm-1,使用 PowerShell 透過 Windows 防火牆啟用因特網控制訊息通訊協定 (ICMP),讓您可以在稍後的步驟中從 vm-2 偵測此 VM:

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

雖然 ping 是用來在本文中的 VM 之間進行通訊,但不建議允許 ICMP 透過 Windows 防火牆進行生產環境部署。

若要連線到 vm-2,請從 vm-1 上的命令提示字元輸入下列命令:

mstsc /v:10.1.0.4

您已在 vm-1啟用 Ping。 您現在可以從 vm-2 上的命令提示字元,依 IP 位址 ping vm-1

ping 10.0.0.4

您會收到四個回覆。 將您的 RDP 工作階段中斷連線至 vm-1vm-2

清除資源

您可以使用 Remove-AzResourcegroup 來移除不再需要的資源群組及其包含的所有資源。

Remove-AzResourceGroup -Name test-rg -Force

下一步

在本文中,您已了解如何使用虛擬網路對等互連來連線相同 Azure 區域中的兩個網路。 您也可以針對不同支援區域不同 Azure 訂用帳戶中的虛擬網路進行對等互連,以及使用對等互連來建立中樞和輪輻網路設計。 若要深入了解虛擬網路對等互連,請參閱虛擬網路對等互連概觀管理虛擬網路對等互連

您可以透過 VPN 將自己的電腦連線到虛擬網路,並且與虛擬網路中或已對等互連虛擬網路中的資源進行互動。 如需可重複使用的指令碼來完成虛擬網路文章中涵蓋的許多工作,請參閱指令碼範例