Azure CLI を使用して仮想マシン ネットワークのルーティングの問題を診断する
この記事では、Azure Network Watcher のネクスト ホップ ツールを使用して、他のリソースと正しく通信できなくなる VM ルーティングの問題をトラブルシューティングおよび診断する方法について説明します。
前提条件
アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
Azure Cloud Shell または Azure CLI。
この記事の手順では、Azure Cloud Shell で Azure CLI コマンドを対話型で実行します。 Cloud Shell でコマンドを実行するには、コード ブロックの右上隅にある [Cloud Shell を開く] を選択します。 [コピー] を選択してコードをコピーし、Cloud Shell に貼り付けて実行します。 Azure portal 内から Cloud Shell を実行することもできます。
また、Azure CLI をローカルにインストールしてコマンドを実行することもできます。 この記事では、Azure CLI バージョン 2.0 以降が必要です。 az --version コマンドを実行して、インストールされているバージョンを確認します。 Azure CLI をローカルで実行する場合は、az login コマンドを使用して Azure にサインインします。
仮想マシンの作成
VM を作成する前に、その VM を含めるリソース グループを作成する必要があります。 az group create を使用して、リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。
az group create --name myResourceGroup --location eastus
az vm create を使用して VM を作成します。 既定のキーの場所にまだ SSH キーが存在しない場合は、コマンドを使って SSH キーを作成します。 特定のキーのセットを使用するには、--ssh-key-value
オプションを使用します。 次の例では、myVm という名前の VM を作成します。
az vm create \
--resource-group myResourceGroup \
--name myVm \
--image Ubuntu2204 \
--generate-ssh-keys
VM の作成には数分かかります。 VM が作成されて、Azure CLI から出力が返されるまでは、次の手順に進まないでください。
ネットワーク通信をテストする
Network Watcher を使用してネットワーク通信をテストするには、最初にテスト対象の VM が含まれるリージョンにおいて Network Watcher を有効にしてから、Network Watcher の次ホップ機能を使用して通信をテストする必要があります。
ネットワーク ウォッチャーを有効にする
米国東部リージョンで既にネットワーク ウォッチャーを有効にしている場合は、「次ホップの使用」に進んでください。 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] が [System Route](システム ルート) であることが出力からわかります。 この結果から、接続先に対して有効なルートが存在することがわかります。
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] が [System Route](システム ルート) であることを示しています。 この結果から、送信先への有効なシステム ルートはあるものの、接続先にトラフィックをルーティングする次ホップはないことがわかります。
ルートの詳細の表示
さらに詳細にルーティングを分析するには、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"
},
「次ホップの使用」で、13.107.21.200 への送信通信のテストに az network watcher show-next-hop
コマンドを使用したときは、出力の他のルートにはそのアドレスが含まれていないため、addressPrefix が 0.0.0.0/0** のルートがアドレスへのトラフィックのルーティングに使用されました。 既定では、他のルートのアドレス プレフィックス内で指定されていないすべてのアドレスが、インターネットにルーティングされます。
ただし、172.31.0.100 への送信通信のテストに az network watcher show-next-hop
コマンドを使用したときの結果は、次ホップの種類がないことを示しています。 返される出力には、次のテキストも含まれます。
{
"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.31.0.100 を含む 172.16.0.0/12 プレフィックスへの既定のルートがあるにもかかわらず、 [nextHopType] は [なし] になっています。 Azure では、172.16.0.0/12 への既定のルートを作成しますが、理由がない限り次ホップの種類は指定しません。 たとえば、仮想ネットワークのアドレス空間に 172.16.0.0/12 アドレス範囲を追加した場合は、ルートの [nextHopType] を [仮想ネットワーク] に変更します。 [nextHopType] として [仮想ネットワーク] にチェック マークが表示されます。
リソースをクリーンアップする
不要になったら、az group delete を使用して、リソース グループとそのグループに含まれているすべてのリソースを削除できます。
az group delete --name myResourceGroup --yes
次のステップ
この記事では、VM を作成し、VM からのネットワークのルーティングを診断しました。 Azure では複数の既定のルートが作成されることを学習し、2 つの異なる送信先へのルーティングをテストしました。 詳細については、Azure でのルーティングとカスタム ルートを作成する方法に関するページを参照してください。
送信 VM 接続の場合は、Network Watcher の接続のトラブルシューティング機能を使用することにより、待機時間に加えて、VM とエンドポイント間で許可/拒否されているネットワーク トラフィックを確認することもできます。 Network Watcher の接続監視機能を使用すると、VM とエンドポイント (IP アドレスや URL など) の間の通信を継時的に監視することができます。 詳細については、ネットワーク接続の監視に関する記事を参照してください。