Share via


診斷虛擬機網路路由問題 - Azure CLI

在本文中,您會部署虛擬機 (VM),然後檢查 IP 位址和 URL 的通訊。 您可以判斷通訊失敗的原因,以及如何加以解決。

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

必要條件

  • 本文需要 2.0 版或更新版本的 Azure CLI。 如果您是使用 Azure Cloud Shell,就已安裝最新版本。

  • 本文中的 Azure CLI 命令會格式化為在 Bash 殼層中執行。

建立 VM

您必須先建立資源群組來包含 VM,才能建立 VM。 使用 az group create 來建立資源群組。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組:

az group create --name myResourceGroup --location eastus

使用 az vm create 建立 VM。 如果預設金鑰位置中還沒有 SSH 金鑰,此命令將會建立這些金鑰。 若要使用一組特定金鑰,請使用 --ssh-key-value 選項。 下列範例會建立名為 myVm 的 VM:

az vm create \
  --resource-group myResourceGroup \
  --name myVm \
  --image Ubuntu2204 \
  --generate-ssh-keys

建立 VM 需要幾分鐘的時間。 在建立 VM 並 Azure CLI 傳回輸出之前,請勿繼續進行其餘步驟。

測試網路通訊

若要測試與 網路監看員 的網路通訊,您必須先在您要測試的 VM 區域中啟用網路監看員,然後使用 網路監看員 的下一個躍點功能來測試通訊。

啟用網路監看員

如果您已在美國東部區域啟用網路監看員,請跳至 [使用下一個躍點]。 使用 az network watcher configure 命令在美國東部區域中建立網路監看員:

az network watcher configure \
  --resource-group NetworkWatcherRG \
  --locations eastus \
  --enabled

使用下一個躍點

Azure 會自動建立預設目的地的路由。 您可以建立覆寫預設路由的自定義路由。 有時候,自定義路由可能會導致通訊失敗。 若要測試來自 VM 的路由,請使用 az network watcher show-next-hop 來判斷流量為特定位址的下一個路由躍點。

測試從 VM 到其中一個 IP 位址 的輸出通訊,以進行 www.bing.com

az network watcher show-next-hop \
  --dest-ip 13.107.21.200 \
  --resource-group myResourceGroup \
  --source-ip 10.0.0.4 \
  --vm myVm \
  --nic myVmVMNic \
  --out table

幾秒鐘之後,輸出會 通知您 nextHopType因特網,且 routeTableId系統路由。 此結果可讓您知道目的地有有效的路由。

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

az network watcher show-next-hop \
  --dest-ip 172.31.0.100 \
  --resource-group myResourceGroup \
  --source-ip 10.0.0.4 \
  --vm myVm \
  --nic myVmVMNic \
  --out table

傳回的輸出會 通知您 NonenextHopType,而 routeTableId 也是 系統路由。 此結果可讓您知道,雖然目的地有有效的系統路由,但沒有下一個躍點可以將流量路由傳送至目的地。

檢視路由的詳細數據

若要進一步分析路由,請使用 az network nic show-effective-route-table 命令檢閱網路介面的有效路由:

az network nic show-effective-route-table \
  --resource-group myResourceGroup \
  --name myVmVMNic

下列文字包含在傳回的輸出中:

{
  "additionalProperties": {
    "disableBgpRoutePropagation": false
  },
  "addressPrefix": [
    "0.0.0.0/0"
  ],
  "name": null,
  "nextHopIpAddress": [],
  "nextHopType": "Internet",
  "source": "Default",
  "state": "Active"
},

當您在 [使用下一個躍點] 中使用 az network watcher show-next-hop 命令來測試輸出通訊至 13.107.21.200 時,位址為 addressPrefix 0.0.0.0/0** 的路由是用來將流量路由傳送至地址,因為輸出中沒有其他路由包含位址。 根據預設,未在另一個路由的位址前綴內指定的所有地址都會路由傳送至因特網。

不過,當您使用 az network watcher show-next-hop 命令來測試輸出通訊至 172.31.0.100 時,結果會通知您沒有下一個躍點類型。 在傳回的輸出中,您也會看到下列文字:

{
  "additionalProperties": {
    "disableBgpRoutePropagation": false
      },
  "addressPrefix": [
    "172.16.0.0/12"
  ],
  "name": null,
  "nextHopIpAddress": [],
  "nextHopType": "None",
  "source": "Default",
  "state": "Active"
},

如您在命令的輸出 az network watcher nic show-effective-route-table 中看到,雖然有預設路由至 172.16.0.0/12 前置詞,其中包含 172.31.0.100 位址, 但 nextHopTypeNone。 Azure 會建立預設路由至 172.16.0.0/12,但在有理由之前,不會指定下一個躍點類型。 例如,如果您將 172.16.0.0/12 位址範圍新增至虛擬網路的位址空間,Azure 會將 nextHopType 變更為 路由的虛擬網路 。 接著 ,檢查會顯示虛擬網路 作為 nextHopType

清除資源

您可以使用 az group delete 來移除不再需要的資源群組,以及其所包含的所有資源:

az group delete --name myResourceGroup --yes

下一步

在本文中,您已建立 VM,並從 VM 診斷網路路由。 您已瞭解 Azure 會建立數個預設路由,並測試路由至兩個不同的目的地。 深入瞭解 Azure 中的路由,以及如何 建立自定義路由

針對輸出 VM 連線,您也可以使用 網路監看員 的連線疑難解答功能,來判斷 VM 與端點之間的延遲和允許和拒絕的網路流量。 您可以使用 網路監看員 連線監視功能,監視 VM 與端點之間的通訊,例如一段時間的 IP 位址或 URL。 如需詳細資訊,請參閱 監視網路連線