共用方式為


使用 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

幾秒之後,輸出會通知您 NextHopTypeInternet,而 RouteTableIdSystem Route。 此結果可讓您知道通往目的地的路由是有效的。

測試從 VM 輸出至 172.31.0.100 的通訊:

Get-AzNetworkWatcherNextHop `
  -NetworkWatcher $networkWatcher `
  -TargetVirtualMachineId $VM.Id `
  -SourceIPAddress 192.168.1.4 `
  -DestinationIPAddress 172.31.0.100

傳回的輸出會通知您 NextHopTypeNone,而 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        {}              

如先前輸出所示,AddressPrefix0.0.0.0/0 的路由會路由傳送下列所有流量:目的地位址不在其他路由位址前置詞內且下一個躍點為 Internet。 亦如輸出所示,雖然有通往 172.16.0.0/12 前置詞的預設路由,且其中包含 172.31.0.100 位址,但 nextHopTypeNone。 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) 之間的通訊情形。 如需詳細資訊,請參閱監視網路連線