使用 PowerShell 診斷虛擬機網路路由問題
在本文中,您將瞭解如何使用 Azure 網路監看員 下一個躍點工具來疑難解答及診斷虛擬機 (VM) 路由問題,以防止它正確地與其他資源通訊。
必要條件
具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
Azure Cloud Shell 或 Azure PowerShell。
本文中的步驟會在 Azure Cloud Shell 中以互動方式執行 Azure PowerShell Cmdlet。 若要在 Cloud Shell 中執行 Cmdlet,請選取程式碼區塊右上角的 [開啟 Cloud Shell]。 選取 [複製] 以複製程式碼,然後將其貼入 Cloud Shell 以執行。 您也可以從 Azure 入口網站內執行 Cloud Shell。
您也可以在本機安裝 Azure PowerShell 來執行 Cmdlet。 執行 Get-Module -ListAvailable Az 以尋找已安裝的版本。 如果您在本機執行 PowerShell,請使用 Connect-AzAccount Cmdlet 登入 Azure。
建立虛擬機器
您必須先建立資源群組來包含 VM,才能建立 VM。 使用 New-AzResourceGroup 來建立資源群組。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組。
New-AzResourceGroup -Name myResourceGroup -Location EastUS
使用 New-AzVM 建立 VM。 執行此步驟時,系統會提示您輸入認證。 您輸入的值會設定為 VM 的使用者名稱和密碼。
$vM = New-AzVm `
-ResourceGroupName "myResourceGroup" `
-Name "myVm" `
-Location "East US"
建立 VM 需要幾分鐘的時間。 在建立 VM 且 PowerShell 傳回輸出之前,請勿繼續進行其餘步驟。
測試網路通訊
若要測試網路監看員的網路通訊,您必須先在欲測試的 VM 所在區域啟用網路監看員,然後使用網路監看員的下一個躍點功能來測試通訊。
啟用網路監看員
如果您已經在美國東部區域啟用網路監看員,請使用 New-AzNetworkWatcher 來擷取網路監看員。 下列範例會擷取名為 NetworkWatcher_eastus 的現有網路監看員,其位於 NetworkWatcherRG 資源群組中:
$networkWatcher = Get-AzNetworkWatcher `
-Name NetworkWatcher_eastus `
-ResourceGroupName NetworkWatcherRG
如果您尚未在美國東部區域啟用網路監看員,請使用 New-AzNetworkWatcher 在美國東部區域建立網路監看員:
$networkWatcher = New-AzNetworkWatcher `
-Name "NetworkWatcher_eastus" `
-ResourceGroupName "NetworkWatcherRG" `
-Location "East US"
使用下一個躍點
Azure 會自動建立通往預設目的地的路由。 您可以建立覆寫預設路由的自訂路由。 有時候,自訂路由可能會導致通訊失敗。 當流量的目的地為特定位址時,若要測試來自 VM 的路由,請使用 Get-AzNetworkWatcherNextHop 命令判斷下一個路由躍點。
測試從 VM 輸出至 www.bing.com 其中一個 IP 位址的通訊:
Get-AzNetworkWatcherNextHop `
-NetworkWatcher $networkWatcher `
-TargetVirtualMachineId $VM.Id `
-SourceIPAddress 192.168.1.4 `
-DestinationIPAddress 13.107.21.200
幾秒之後,輸出會通知您 NextHopType 是 Internet,而 RouteTableId 是 System Route。 此結果可讓您知道通往目的地的路由是有效的。
測試從 VM 輸出至 172.31.0.100 的通訊:
Get-AzNetworkWatcherNextHop `
-NetworkWatcher $networkWatcher `
-TargetVirtualMachineId $VM.Id `
-SourceIPAddress 192.168.1.4 `
-DestinationIPAddress 172.31.0.100
傳回的輸出會通知您 NextHopType 是 None,而 RouteTableId 也是 System Route。 此結果可讓您知道,雖然通往目的地的系統路由是有效的,但沒有下一個躍點可將流量路由至目的地。
檢視路由的詳細資料
若要分析進一步路由,請使用 Get-AzEffectiveRouteTable 命令,以檢閱網路介面的有效路由:
Get-AzEffectiveRouteTable `
-NetworkInterfaceName myVm `
-ResourceGroupName myResourceGroup |
Format-table
會傳回包含下列文字的輸出:
Name State Source AddressPrefix NextHopType NextHopIpAddress
---- ----- ------ ------------- ----------- ----------------
Active Default {192.168.0.0/16} VnetLocal {}
Active Default {0.0.0.0/0} Internet {}
Active Default {10.0.0.0/8} None {}
Active Default {100.64.0.0/10} None {}
Active Default {172.16.0.0/12} None {}
如先前輸出所示,AddressPrefix 為 0.0.0.0/0 的路由會路由傳送下列所有流量:目的地位址不在其他路由位址前置詞內且下一個躍點為 Internet。 亦如輸出所示,雖然有通往 172.16.0.0/12 前置詞的預設路由,且其中包含 172.31.0.100 位址,但 nextHopType 是 None。 Azure 會建立通往 172.16.0.0/12 的預設路由,但不會指定下一個躍點類型,除非有理由這麼做。 例如,如果您將 172.16.0.0/12 位址範圍新增至虛擬網路的位址空間,則 Azure 會將此路由的 nextHopType 變更為 Virtual network。 執行檢查就會看到 Virtual network 顯示為 nextHopType。
清除資源
您可以使用 Remove-AzResourceGroup 來移除不再需要的資源群組,以及其所包含的所有資源:
Remove-AzResourceGroup -Name myResourceGroup -Force
下一步
在本文章中,您已建立 VM 並診斷來自 VM 的網路路由。 您已了解 Azure 會建立數個預設路由,並測試通往兩個不同目的地的路由。 深入了解 Azure 中的路由以及如何建立自訂路由。
針對輸出 VM 連線,您也可以使用網路監看員的連線疑難排解功能,以判斷 VM 與端點之間的延遲,以及所允許和拒絕的網路流量。 您可以使用網路監看員的連線監視功能,以監視某段時間內 VM 與端點 (例如 IP 位址或 URL) 之間的通訊情形。 如需詳細資訊,請參閱監視網路連線。