使用 Azure CLI 診斷虛擬機網路路由問題
在本文中,您將瞭解如何使用 Azure 網路監看員 下一個躍點工具來疑難解答和診斷 VM 路由問題,以防止它正確地與其他資源通訊。
必要條件
具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
Azure Cloud Shell 或 Azure CLI。
本文中的步驟會在 Azure Cloud Shell 中以互動方式執行 Azure CLI 命令。 若要在 Cloud Shell 中執行命令,請選取程式碼區塊右上角的 [開啟 Cloud Shell]。 選取 [複製] 以複製程式碼,並將它貼到 Cloud Shell 中以執行。 您也可以從 Azure 入口網站內執行 Cloud Shell。
您也可以在本機安裝 Azure CLI 以執行命令。 本文需要 Azure CLI 2.0 版或更新版本。 執行 az --version (部分機器翻譯) 命令以尋找已安裝的版本。 如果您在本機執行 Azure CLI,請使用 az login 命令登入 Azure。
建立虛擬機器
您必須先建立資源群組來包含 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 輸出至 www.bing.com 其中一個 IP 位址的通訊:
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
傳回的輸出會通知您 [nextHopType] 是 [無],而 [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 位址,但 [nextHopType] 是 [無]。 Azure 會建立通往 172.16.0.0/12 的預設路由,但不會指定下一個躍點類型,除非有理由這麼做。 例如,如果您將 172.16.0.0/12 位址範圍新增至虛擬網路的位址空間,則 Azure 會將此路由的 nextHopType 變更為 Virtual network。 執行檢查就會看到 Virtual network 顯示為 nextHopType。
清除資源
您可以使用 az group delete 來移除不再需要的資源群組,以及其所包含的所有資源:
az group delete --name myResourceGroup --yes
下一步
在本文章中,您已建立 VM 並診斷來自 VM 的網路路由。 您已了解 Azure 會建立數個預設路由,並測試通往兩個不同目的地的路由。 深入了解 Azure 中的路由以及如何建立自訂路由。
針對輸出 VM 連線,您也可以使用網路監看員的連線疑難排解功能,以判斷 VM 與端點之間的延遲,以及所允許和拒絕的網路流量。 您可以使用網路監看員的連線監視功能,以監視某段時間內 VM 與端點 (例如 IP 位址或 URL) 之間的通訊情形。 如需詳細資訊,請參閱監視網路連線。