使用 PowerShell 以虛擬網路對等互連連線虛擬網路
您可以使用虛擬網路對等互連,讓虛擬網路彼此連線。 一旦虛擬網路對等互連,兩個虛擬網路中的資源就可以彼此通訊,且通訊時會有相同的延遲和頻寬,彷彿這些資源是位於相同的虛擬網路中。
在本文中,您將學會如何:
建立兩個虛擬網路
使用虛擬網路對等互連連線兩個虛擬網路
將虛擬機器 (VM) 部署到每個虛擬網路
虛擬機器之間的通訊
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
Azure Cloud Shell
Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。
要啟動 Azure Cloud Shell:
選項 | 範例/連結 |
---|---|
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 | |
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 | |
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 |
若要使用 Azure Cloud Shell:
啟動 Cloud Shell。
選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。
透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。
選取 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-2 到 vnet-1 的對等互連。
$peerConfig2 = @{
Name = "vnet-2-to-vnet-1"
VirtualNetwork = $virtualNetwork2
RemoteVirtualNetworkId = $virtualNetwork1.Id
}
Add-AzVirtualNetworkPeering @peerConfig2
在執行上一個命令之後所傳回的輸出中,您會看到 PeeringState 是「已連線」。 Azure 也已將 vnet-1-to-vnet-2 對等互連的對等互連狀態變更為已連線。 確認已透過 Get-AzVirtualNetworkPeering 命令,將 vnet-1-to-vnet-2 對等互連的對等互連狀態變更為已連線。
$peeringState = @{
ResourceGroupName = "test-rg"
VirtualNetworkName = "vnet-1"
}
Get-AzVirtualNetworkPeering @peeringState | Select PeeringState
兩個虛擬網路之對等互連的 PeeringState 都是「已連線」之前,其中一個虛擬網路中的資源無法與另一個虛擬網路中的資源通訊。
建立虛擬機器
在每個虛擬網路中建立虛擬機器,以便您可以在稍後的步驟中於彼此之間通訊。
建立第一個 VM
使用 New-AzVM 建立 VM。 以下範例會在 vnet-1 虛擬網路中建立一個名為 vm-1 的 VM。 -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:
- 公用 IP 位址會指派給 VM。
- 無論有沒有輸出規則,都會將 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 上,讓網際網路控制訊息通訊協定 (ICMP) 通過 Windows 防火牆,以便您可以在後續步驟中使用 PowerShell 從 vm-2 對此 VM 執行 ping 動作:
New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4
雖然本文使用 Ping 在虛擬機器之間進行通訊,但不建議在生產環境部署中允許 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
您會收到四個回覆。 中斷與 vm-1 和 vm-2 的 RDP 工作階段連線。
清除資源
您可以使用 Remove-AzResourcegroup 來移除不再需要的資源群組及其包含的所有資源。
Remove-AzResourceGroup -Name test-rg -Force
下一步
在本文中,您已了解如何使用虛擬網路對等互連來連線相同 Azure 區域中的兩個網路。 您也可以針對不同支援區域和不同 Azure 訂用帳戶中的虛擬網路進行對等互連,以及使用對等互連來建立中樞和輪輻網路設計。 若要深入了解虛擬網路對等互連,請參閱虛擬網路對等互連概觀和管理虛擬網路對等互連。
您可以透過 VPN 將自己的電腦連線到虛擬網路,並且與虛擬網路中或已對等互連虛擬網路中的資源進行互動。 如需可重複使用的指令碼來完成虛擬網路文章中涵蓋的許多工作,請參閱指令碼範例。