教學課程:使用路由表路由傳送網路流量
根據預設,Azure 會路由虛擬網路內所有子網路之間的流量。 您可以建立您自己的路由,以覆寫 Azure 的預設路由。 舉例來說,當您想要通過網路虛擬設備 (NVA) 路由傳送子網路之間的流量時,自訂路由便很有用。
在本教學課程中,您會了解如何:
- 建立虛擬網路和子網路
- 建立會路由傳送流量的 NVA
- 將虛擬機器 (VM) 部署到不同子網路
- 建立路由表
- 建立路由
- 建立路由表與子網路的關聯
- 透過 NVA 從一個子網路將流量路由傳送到另一個子網路
必要條件
- 具有有效訂用帳戶的 Azure 帳戶。 您可以免費建立帳戶。
- 具有有效訂用帳戶的 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 的連線。
如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶。
- 本文需要 2.0.28 版或更新版本的 Azure CLI。 如果您是使用 Azure Cloud Shell,就已安裝最新版本。
建立子網路
本教學課程需要 DMZ 和私人子網路。 DMZ 子網路是您部署 NVA 的位置,而私人子網路是您部署要路由流量的虛擬機器位置。 subnet-1 是在上一個步驟中建立的子網路。 針對公用虛擬機器,請使用 subnet-1。
建立虛擬網路和 Azure Bastion 主機
下列程序會建立具有資源子網路、Azure Bastion 子網路和 Bastion 主機的虛擬網路:
在入口網站中,搜尋並選取 [虛擬網路]。
在 [虛擬網路] 頁面上,選取 [+ 建立]。
在 [建立虛擬網路] 的 [基本] 索引標籤上,輸入或選取下列資訊:
設定 |
值 |
專案詳細資料 |
|
訂用帳戶 |
選取您的訂用帳戶。 |
資源群組 |
選取 [新建] 輸入 test-rg 作為名稱。 選取 [確定]。 |
[執行個體詳細資料] |
|
名稱 |
輸入 vnet-1。 |
區域 |
選取 [美國東部 2]。 |
選取 [下一步],繼續前往 [安全性] 索引標籤。
在 [Azure Bastion] 區段中,選取 [啟用 Azure Bastion]。
Bastion 會使用您的瀏覽器,透過安全殼層 (SSH) 或遠端桌面通訊協定 (RDP) 連線至虛擬網路中的 VM (使用其私人 IP 位址)。 VM 不需要公用 IP 位址、用戶端軟體或特殊設定。 如需詳細資訊,請參閱什麼是 Azure Bastion?。
注意
無論輸出資料使用量為何,每小時價格都是從部署 Bastion 的那一刻開始計費。 如需詳細資訊,請參閱價格和 SKU。 如果您要在教學課程或測試期間部署 Bastion,建議您在使用完畢後刪除此資源。
在 Azure Bastion 中,輸入或選取下列資訊:
設定 |
值 |
Azure Bastion 主機名稱 |
輸入 bastion。 |
Azure Bastion 公用 IP 位址 |
選取 [建立公用 IP 位址]。 在 [名稱] 中輸入 public-ip-bastion。 選取 [確定]。 |
選取 [下一步],繼續前往 [IP 位址] 索引標籤。
在 [子網路] 的 [位址空間] 方塊中,選取 [預設] 子網路。
在 [編輯子網路] 中,輸入或選取下列資訊:
設定 |
值 |
子網路用途 |
保留 Default 的預設值。 |
名稱 |
輸入 subnet-1。 |
IPv4 |
|
IPv4 位址範圍 |
保留 10.0.0.0/16 的預設值。 |
起始位址 |
保留預設值 [10.0.0.0]。 |
大小 |
保留 /24 (256 個位址) 的預設值。 |
選取 [儲存]。
選取視窗底部的 [檢閱 + 建立]。 通過驗證後,選取 [建立]。
在入口網站頂端的搜尋方塊中,輸入虛擬網路。 選取搜尋結果中的 [虛擬網路]。
在 [虛擬網路] 中,選取 [vnet-1]。
在 vnet-1 中,從 [設定] 區段中選取 [子網路]。
在虛擬網路的子網路清單中,選取 [+ 子網路]。
在 [新增子網路] 中,輸入或選取下列資訊:
設定 |
值 |
子網路用途 |
保留 Default 的預設值。 |
名稱 |
輸入 subnet-private。 |
IPv4 |
|
IPv4 位址範圍 |
保留 10.0.0.0/16 的預設值。 |
起始位址 |
輸入 10.0.2.0。 |
大小 |
保留 /24 (256 個位址) 的預設值。 |
選取 [新增]。
選取 [+ 子網路]。
在 [新增子網路] 中,輸入或選取下列資訊:
設定 |
值 |
子網路用途 |
保留 Default 的預設值。 |
名稱 |
輸入 subnet-dmz。 |
IPv4 |
|
IPv4 位址範圍 |
保留 10.0.0.0/16 的預設值。 |
起始位址 |
輸入 10.0.3.0。 |
大小 |
保留 /24 (256 個位址) 的預設值。 |
選取 [新增]。
使用 New-AzResourceGroup 來建立資源群組。 下列範例會針對本文中建立的所有資源,建立名為 test-rg 的資源群組。
$rg = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
}
New-AzResourceGroup @rg
使用 New-AzVirtualNetwork 建立虛擬網路。 以下範例會建立一個名為 vnet-1 且位址首碼為 10.0.0.0/16 的虛擬網路。
$vnet = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
使用 New-AzVirtualNetworkSubnetConfig 建立四個子網組態,以建立四個子網。 下列範例會為 公用、 私人、 DMZ 和 Azure Bastion 子網建立四個子網組態。
$subnetConfigPublicParams = @{
Name = "subnet-1"
AddressPrefix = "10.0.0.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigBastionParams = @{
Name = "AzureBastionSubnet"
AddressPrefix = "10.0.1.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigPrivateParams = @{
Name = "subnet-private"
AddressPrefix = "10.0.2.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigDmzParams = @{
Name = "subnet-dmz"
AddressPrefix = "10.0.3.0/24"
VirtualNetwork = $virtualNetwork
}
$subnetConfigPublic = Add-AzVirtualNetworkSubnetConfig @subnetConfigPublicParams
$subnetConfigBastion = Add-AzVirtualNetworkSubnetConfig @subnetConfigBastionParams
$subnetConfigPrivate = Add-AzVirtualNetworkSubnetConfig @subnetConfigPrivateParams
$subnetConfigDmz = Add-AzVirtualNetworkSubnetConfig @subnetConfigDmzParams
使用 Set-AzVirtualNetwork 來將子網路設定寫入虛擬網路,這樣會在虛擬網路中建立子網路:
$virtualNetwork | Set-AzVirtualNetwork
建立 Azure Bastion
使用 New-AzPublicIpAddress 建立 Azure Bastion 主機的公用 IP 位址。 下列範例會在 vnet-1 虛擬網路中建立名為 public-ip-bastion 的公用 IP 位址。
$publicIpParams = @{
ResourceGroupName = "test-rg"
Name = "public-ip-bastion"
Location = "EastUS2"
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"
}
New-AzBastion @bastionParams -AsJob
針對本文中建立的所有資源,使用 az group create 建立 資源群組。
# Create a resource group.
az group create \
--name test-rg \
--location eastus2
使用 az network vnet create 建立具有一個子網路的虛擬網路。
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.0.0.0/24
使用 az network vnet subnet create 建立另外兩個子網。
# 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
# Create a private subnet.
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-private \
--address-prefix 10.0.2.0/24
# Create a DMZ subnet.
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-dmz \
--address-prefix 10.0.3.0/24
建立 Azure Bastion
使用 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 eastus2 \
--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 eastus2
--no-wait
建立 NVA 虛擬機器
網路虛擬設備 (NVA) 是可協助路由和防火牆最佳化等網路功能的虛擬機器。 在本節中,使用 Ubuntu 24.04 虛擬機器建立 NVA。
在入口網站頂端的搜尋方塊中,輸入虛擬機器。 在搜尋結果中,選取 [虛擬機器]。
選取 [+ 建立],然後選取 [Azure 虛擬機器]。
在 [建立虛擬機器] 的 [基本] 索引標籤中,輸入或選取下列資訊:
設定 |
值 |
專案詳細資料 |
|
訂用帳戶 |
選取您的訂用帳戶。 |
資源群組 |
選取 [test-rg]。 |
[執行個體詳細資料] |
|
虛擬機器名稱 |
輸入 vm-nva。 |
區域 |
選取 [(美國) 美國東部 2]。 |
可用性選項 |
選取 [不需要基礎結構備援]。 |
安全性類型 |
選取 [標準]。 |
映像 |
選取 [Ubuntu Server 24.04 LTS - x64 Gen2]。 |
VM 架構 |
保留預設值 [x64]。 |
大小 |
選取大小。 |
系統管理員帳戶 |
|
驗證類型 |
選取 [密碼]。 |
使用者名稱 |
輸入使用者名稱。 |
密碼 |
輸入密碼。 |
確認密碼 |
重新輸入密碼。 |
輸入連接埠規則 |
|
公用輸入連接埠 |
選取 [無]。 |
選取 [下一步:磁碟],然後選取 [下一步:網路]。
在 [網路] 索引標籤中,輸入或選取以下資訊:
設定 |
值 |
網路介面 |
|
虛擬網路 |
選取 [vnet-1]。 |
子網路 |
選取 [subnet-dmz (10.0.3.0/24)]。 |
公用 IP |
選取 [無]。 |
NIC 網路安全性群組 |
選取進階。 |
設定網路安全性群組 |
選取 [新建] 在 [名稱] 中,輸入 nsg-nva。 選取 [確定]。 |
將其餘選項保留預設值,然後選取 [檢閱 + 建立]。
選取 建立。
使用 New-AzVM 建立 VM。 下列範例會建立名為 vm-nva 的 VM。
# Create a credential object
$cred = Get-Credential
# Define the VM parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
Name = "vm-nva"
ImageName = "Canonical:ubuntu-24_04-lts:server-gen1:latest"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-dmz"
PublicIpAddressName = $null # No public IP address
}
# Create the VM
New-AzVM @vmParams
使用 az vm create 建立要當做 subnet-dmz 子網中的 NVA 使用的 VM。
az vm create \
--resource-group test-rg \
--name vm-nva \
--image Ubuntu2204 \
--public-ip-address "" \
--subnet subnet-dmz \
--vnet-name vnet-1 \
--admin-username azureuser \
--authentication-type password
建立 VM 需要幾分鐘的時間。 在 Azure 完成建立 VM 並傳回 VM 的相關輸出之前,請勿繼續進行下一個步驟。
建立公用和私人虛擬機器
在 vnet-1 虛擬網路中建立兩個虛擬機器。 一部虛擬機器位於 subnet-1 子網路中,另一部虛擬機器位於 subnet-private 子網路中。 針對這兩部虛擬機器,使用相同的虛擬機器映像。
建立公用虛擬機器
公用虛擬機器是用來模擬公用網際網路中的機器。 公用和私人虛擬機器是用來測試透過 NVA 虛擬機器的網路流量路由。
在入口網站頂端的搜尋方塊中,輸入虛擬機器。 在搜尋結果中,選取 [虛擬機器]。
選取 [+ 建立],然後選取 [Azure 虛擬機器]。
在 [建立虛擬機器] 的 [基本] 索引標籤中,輸入或選取下列資訊:
設定 |
值 |
專案詳細資料 |
|
訂用帳戶 |
選取您的訂用帳戶。 |
資源群組 |
選取 [test-rg]。 |
[執行個體詳細資料] |
|
虛擬機器名稱 |
輸入 vm-public。 |
區域 |
選取 [(美國) 美國東部 2]。 |
可用性選項 |
選取 [不需要基礎結構備援]。 |
安全性類型 |
選取 [標準]。 |
映像 |
選取 [Ubuntu Server 24.04 LTS - x64 Gen2]。 |
VM 架構 |
保留預設值 [x64]。 |
大小 |
選取大小。 |
系統管理員帳戶 |
|
驗證類型 |
選取 [密碼]。 |
使用者名稱 |
輸入使用者名稱。 |
密碼 |
輸入密碼。 |
確認密碼 |
重新輸入密碼。 |
輸入連接埠規則 |
|
公用輸入連接埠 |
選取 [無]。 |
選取 [下一步:磁碟],然後選取 [下一步:網路]。
在 [網路] 索引標籤中,輸入或選取以下資訊:
設定 |
值 |
網路介面 |
|
虛擬網路 |
選取 [vnet-1]。 |
子網路 |
選取 [subnet-1 (10.0.0.0/24)]。 |
公用 IP |
選取 [無]。 |
NIC 網路安全性群組 |
選取 [無]。 |
將其餘選項保留預設值,然後選取 [檢閱 + 建立]。
選取 建立。
建立私人虛擬機器
在入口網站頂端的搜尋方塊中,輸入虛擬機器。 在搜尋結果中,選取 [虛擬機器]。
選取 [+ 建立],然後選取 [Azure 虛擬機器]。
在 [建立虛擬機器] 的 [基本] 索引標籤中,輸入或選取下列資訊:
設定 |
值 |
專案詳細資料 |
|
訂用帳戶 |
選取您的訂用帳戶。 |
資源群組 |
選取 [test-rg]。 |
[執行個體詳細資料] |
|
虛擬機器名稱 |
輸入 vm-private。 |
區域 |
選取 [(美國) 美國東部 2]。 |
可用性選項 |
選取 [不需要基礎結構備援]。 |
安全性類型 |
選取 [標準]。 |
映像 |
選取 [Ubuntu Server 24.04 LTS - x64 Gen2]。 |
VM 架構 |
保留預設值 [x64]。 |
大小 |
選取大小。 |
系統管理員帳戶 |
|
驗證類型 |
選取 [密碼]。 |
使用者名稱 |
輸入使用者名稱。 |
密碼 |
輸入密碼。 |
確認密碼 |
重新輸入密碼。 |
輸入連接埠規則 |
|
公用輸入連接埠 |
選取 [無]。 |
選取 [下一步:磁碟],然後選取 [下一步:網路]。
在 [網路] 索引標籤中,輸入或選取以下資訊:
設定 |
值 |
網路介面 |
|
虛擬網路 |
選取 [vnet-1]。 |
子網路 |
選取 [subnet-private (10.0.2.0/24)]。 |
公用 IP |
選取 [無]。 |
NIC 網路安全性群組 |
選取 [無]。 |
將其餘選項保留預設值,然後選取 [檢閱 + 建立]。
選取 建立。
使用 New-AzVM 在 subnet-1 子網中建立 VM。 下列範例會在 vnet-1 虛擬網路的 subnet-public 子網中建立名為 vm-public 的 VM。
# Create a credential object
$cred = Get-Credential
# Define the VM parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
Name = "vm-public"
ImageName = "Canonical:ubuntu-24_04-lts:server-gen1:latest"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-1"
PublicIpAddressName = $null # No public IP address
}
# Create the VM
New-AzVM @vmParams
在子網私人子網中建立 VM。
# Create a credential object
$cred = Get-Credential
# Define the VM parameters
$vmParams = @{
ResourceGroupName = "test-rg"
Location = "EastUS2"
Name = "vm-private"
ImageName = "Canonical:ubuntu-24_04-lts:server-gen1:latest"
Size = "Standard_DS1_v2"
Credential = $cred
VirtualNetworkName = "vnet-1"
SubnetName = "subnet-private"
PublicIpAddressName = $null # No public IP address
}
# Create the VM
New-AzVM @vmParams
建立 VM 需要幾分鐘的時間。 在建立虛擬機器且 Azure 將輸出傳回 PowerShell 之前,請勿繼續進行下一個步驟。
使用 az vm create 在 subnet-1 子網路中建立虛擬機器。 --no-wait
參數可以讓 Azure 在背景中執行命令,因此您可以繼續執行下一個命令。
az vm create \
--resource-group test-rg \
--name vm-public \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--public-ip-address "" \
--admin-username azureuser \
--authentication-type password \
--no-wait
在子網私人子網中建立 VM。
az vm create \
--resource-group test-rg \
--name vm-private \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-private \
--public-ip-address "" \
--admin-username azureuser \
--authentication-type password
啟用 IP 轉送
若要透過 NVA 路由流量,請在 Azure 和 vm-nva 的作業系統中開啟 IP 轉送。 啟用 IP 轉送時,vm-nva 所接收的任何流量都會以不同的 IP 位址為目標,不會卸載,而且會轉送到正確的目的地。
在 Azure 中啟用 IP 轉送
在本節中,您會開啟 vm-nva 虛擬機器網路介面的 IP 轉送。
在入口網站頂端的搜尋方塊中,輸入虛擬機器。 在搜尋結果中,選取 [虛擬機器]。
在 [虛擬機器] 中,選取 [vm-nva]。
在 [vm-nva] 中,展開 [網络],然後選取 [網路設定]。
選取 [網路介面:] 旁邊的介面名稱。 此名稱開頭為 vm-nva,且有指派給介面的隨機數字。 此範例中的介面名稱為 vm-nva313。
在網路介面概觀頁面中,從 [設定] 選取 [IP 設定]。
在 [IP 組態] 中,選取 [啟用 IP 轉送] 旁的方塊。
選取套用。
使用 Set-AzNetworkInterface 為 vm-nva 虛擬機器的網路介面啟用 IP 轉送。 下列範例會啟用名為 vm-nva313 之網路介面的 IP 轉送。
$nicParams = @{
Name = "vm-nva"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @nicParams
$nic.EnableIPForwarding = $true
Set-AzNetworkInterface -NetworkInterface $nic
使用 az network nic update 為 vm-nva 虛擬機的網路介面啟用 IP 轉送。 下列範例會啟用名為 vm-nvaVMNic 之網路介面的 IP 轉送。
az network nic update \
--name vm-nvaVMNic \
--resource-group test-rg \
--ip-forwarding true
在作業系統中啟用 IP 轉送
在本節中,開啟 vm-nva 虛擬機器作業系統的 IP 轉送,以轉送網路流量。 使用 Azure Bastion 服務連線到 vm-nva 虛擬機器。
在入口網站頂端的搜尋方塊中,輸入虛擬機器。 在搜尋結果中,選取 [虛擬機器]。
在 [虛擬機器] 中,選取 [vm-nva]。
在 [概觀] 區段中依次選取 [連結],[透過 Bastion 連接]。
輸入建立虛擬機器時所輸入的使用者名稱和密碼。
選取 Connect。
在虛擬機器提示時,輸入下列資訊,以啟用 IP 轉送:
sudo vim /etc/sysctl.conf
在 Vim 編輯器中,從行 net.ipv4.ip_forward=1
移除 #
:
按下 [Insert] 鍵。
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
按下 [ESC] 鍵。
輸入 :wq
,然後按 Enter。
關閉 Bastion 工作階段。
重新啟動虛擬機器。
建立路由表
在本節中,建立路由表來定義透過 NVA 虛擬機器的流量路由。 路由表會與部署 vm-public 虛擬機器的 subnet-1 子網路相關聯。
在入口網站頂端的搜尋方塊中,輸入「路由表」。 在搜尋結果中,選取 [路由表]。
選取 + 建立。
在 [建立路由表] 中,輸入或選取下列資訊:
設定 |
值 |
專案詳細資料 |
|
訂用帳戶 |
選取您的訂用帳戶。 |
資源群組 |
選取 [test-rg]。 |
[執行個體詳細資料] |
|
區域 |
選取 [美國東部 2]。 |
名稱 |
輸入 route-table-public。 |
散佈閘道路由 |
保留預設值 [是]。 |
選取 [檢閱 + 建立]。
選取 建立。
建立路由
在本節中,我們會在先前步驟中建立的路由表中建立路由。
在入口網站頂端的搜尋方塊中,輸入路由表。 在搜尋結果中,選取 [路由表]。
選取 [route-table-public]。
展開 [設定] ,然後選取 [路由]。
在 [路由] 中,選取 [+ 新增]。
在 [新增路由] 中,輸入或選取下列資訊:
設定 |
值 |
路由名稱 |
輸入 to-private-subnet。 |
目的地類型 |
選取 [IP 位址]。 |
目的地 IP 位址/CIDR 範圍 |
輸入 10.0.2.0/24。 |
下一個躍點類型 |
選取 [虛擬設備]。 |
下一個躍點位址 |
輸入 10.0.3.4。 這是您在先前步驟中建立之 vm-nva 的 IP 位址。 |
選取 [新增]。
在 [設定] 中選取 [子網路]。
選取 [+ 建立關聯]。
在 [關聯子網路] 中,輸入或選取下列資訊:
設定 |
值 |
虛擬網路 |
選取 [vnet-1 (test-rg)]。 |
子網路 |
選取 [subnet-1]。 |
選取 [確定]。
使用 New-AzRouteTable 建立路由表。 下列範例會建立名為 route-table-public 的路由表。
$routeTableParams = @{
Name = 'route-table-public'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
}
$routeTablePublic = New-AzRouteTable @routeTableParams
使用 Get-AzRouteTable 擷取路由表物件來建立路由、使用 Add-AzRouteConfig 建立路由,然後使用 Set-AzRouteTable 來將路由設定寫入路由表。
$routeTableParams = @{
ResourceGroupName = "test-rg"
Name = "route-table-public"
}
$routeConfigParams = @{
Name = "to-private-subnet"
AddressPrefix = "10.0.2.0/24"
NextHopType = "VirtualAppliance"
NextHopIpAddress = "10.0.3.4"
}
$routeTable = Get-AzRouteTable @routeTableParams
$routeTable | Add-AzRouteConfig @routeConfigParams | Set-AzRouteTable
將路由表與 subnet-1 子網與 Set-AzVirtualNetworkSubnetConfig 產生關聯。 下列範例會將 route-table-public 路由表與 subnet-1 子網產生關聯。
$vnetParams = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
}
$virtualNetwork = Get-AzVirtualNetwork @vnetParams
$subnetParams = @{
VirtualNetwork = $virtualNetwork
Name = 'subnet-1'
AddressPrefix = '10.0.0.0/24'
RouteTable = $routeTablePublic
}
Set-AzVirtualNetworkSubnetConfig @subnetParams | Set-AzVirtualNetwork
使用 az network route-table create 建立路由表。 下列範例會建立名為 route-table-public 的路由表。
# Create a route table
az network route-table create \
--resource-group test-rg \
--name route-table-public
使用 az network route-table route create 建立路由表中的路由。
az network route-table route create \
--name to-private-subnet \
--resource-group test-rg \
--route-table-name route-table-public \
--address-prefix 10.0.2.0/24 \
--next-hop-type VirtualAppliance \
--next-hop-ip-address 10.0.3.4
將 route-table-subnet-public 路由表與 az network vnet subnet update 建立子網-1 子網的關聯。
az network vnet subnet update \
--vnet-name vnet-1 \
--name subnet-1 \
--resource-group test-rg \
--route-table route-table-public
測試網路流量的路由
測試從 vm-public 到 vm-private 的網路流量路由。 測試從 vm-private 到 vm-public 的網路流量路由。
測試從 vm-public 到 vm-private 的網路流量
在入口網站頂端的搜尋方塊中,輸入虛擬機器。 在搜尋結果中,選取 [虛擬機器]。
在 [虛擬機器] 中,選取 [vm-public]。
在 [概觀] 區段中依次選取 [連結],[透過 Bastion 連接]。
輸入建立虛擬機器時所輸入的使用者名稱和密碼。
選取 Connect。
在提示中,輸入下列命令來追蹤從 vm-public 到 vm-private 的網路流量路由:
tracepath vm-private
回應如下列範例所示:
azureuser@vm-public:~$ tracepath vm-private
1?: [LOCALHOST] pmtu 1500
1: vm-nva.internal.cloudapp.net 1.766ms
1: vm-nva.internal.cloudapp.net 1.259ms
2: vm-private.internal.cloudapp.net 2.202ms reached
Resume: pmtu 1500 hops 2 back 1
您可以看到,針對從 vm-public 到 vm-private 的 tracepath
ICMP 流量,上述回應中有兩個躍點。 第一個躍點為 vm-nva。 第二個躍點為目的地 vm-private。
Azure 會透過 NVA 傳送來自 subnet-1 的流量,而不是直接傳送至 subnet-private,因為您先前已將 to-private-subnet 路由新增至 route-table-public,並將其關聯至 subnet-1。
關閉 Bastion 工作階段。
測試從 vm-private 到 vm-public 的網路流量
在入口網站頂端的搜尋方塊中,輸入虛擬機器。 在搜尋結果中,選取 [虛擬機器]。
在 [虛擬機器] 中,選取 [vm-private]。
在 [概觀] 區段中依次選取 [連結],[透過 Bastion 連接]。
輸入建立虛擬機器時所輸入的使用者名稱和密碼。
選取 Connect。
在提示中,輸入下列命令來追蹤從 vm-private 到 vm-public 的網路流量路由:
tracepath vm-public
回應如下列範例所示:
azureuser@vm-private:~$ tracepath vm-public
1?: [LOCALHOST] pmtu 1500
1: vm-public.internal.cloudapp.net 2.584ms reached
1: vm-public.internal.cloudapp.net 2.147ms reached
Resume: pmtu 1500 hops 1 back 2
您可以看到上述回應中有一個躍點,也就是目的地 vm-public。
Azure 會將流量直接從 subnet-private 傳送至 subnet-1。 根據預設,Azure 會直接路由傳送子網路之間的流量。
關閉 Bastion 工作階段。
當完成了使用您所建立的資源時,您可以刪除資源群組及其所有資源。
在 Azure 入口網站中,搜尋並選取 [資源群組]。
在 [資源群組] 頁面上,選取 [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
下一步
在本教學課程中,您已:
您可以從 Azure Marketplace 部署不同的預先設定 NVA,以獲得許多有用的網路功能。
若要深入了解路由,請參閱路由概觀和管理路由表。
若要了解如何透過虛擬網路服務端點來限制對 PaaS 資源的網路存取,請前進到下一個教學課程。