仮想マシン ネットワークのルーティングの問題を診断する - Azure CLI

この記事では、仮想マシン (VM) をデプロイし、IP アドレスおよび URL との通信を確認します。 通信障害の原因と解決方法を特定します。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

  • この記事では、Azure CLI のバージョン 2.0 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。

  • この記事の Azure CLI コマンドは、Bash シェルで実行されることを想定して書式設定されています。

VM の作成

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 など) の間の通信を継時的に監視することができます。 詳細については、ネットワーク接続の監視に関する記事を参照してください。