PowerShell を使用して仮想マシン ネットワークのルーティングの問題を診断する
この記事では、Azure Network Watcher のネクスト ホップ ツールを使用して、他のリソースと正しく通信できなくなる 仮想マシン (VM) ルーティングの問題をトラブルシューティングおよび診断する方法について説明します。
前提条件
アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
Azure Cloud Shell または Azure PowerShell。
この記事の手順では、Azure Cloud Shell で Azure PowerShell コマンドレットを対話型で実行します。 Cloud Shell でコマンドレットを実行するには、コード ブロックの右上隅にある [Cloud Shell を開く] を選択します。 [コピー] を選択してコードをコピーし、続いて Cloud Shell に貼り付けて実行します。 Azure portal 内から Cloud Shell を実行することもできます。
また、Azure PowerShell をローカルにインストールしてコマンドレットを実行することもできます。 インストールされているバージョンを確認するには、Get-Module -ListAvailable Az を実行します。 PowerShell をローカルで実行している場合は、Connect-AzAccount コマンドレットを使用して Azure にサインインします。
仮想マシンの作成
VM を作成する前に、その VM を含めるリソース グループを作成する必要があります。 New-AzResourceGroup を使用して Azure リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。
New-AzResourceGroup -Name myResourceGroup -Location EastUS
New-AzVM を使用して VM を作成します。 この手順の実行時に、資格情報の入力を求められます。 入力した値は、VM のユーザー名とパスワードとして構成されます。
$vM = New-AzVm `
-ResourceGroupName "myResourceGroup" `
-Name "myVm" `
-Location "East US"
VM の作成には数分かかります。 VM が作成されて、PowerShell から出力が返されるまでは、次の手順に進まないでください。
ネットワーク通信をテストする
Network Watcher を使用してネットワーク通信をテストするには、最初にテスト対象の VM が含まれるリージョンにおいて Network Watcher を有効にしてから、Network Watcher の次ホップ機能を使用して通信をテストする必要があります。
ネットワーク ウォッチャーを有効にする
米国東部リージョンで Network Watcher を既に有効にしてある場合は、Get-AzNetworkWatcher を使ってそのネットワーク ウォッチャーを取得します。 次の例では、NetworkWatcherRG リソース グループ内にある NetworkWatcher_eastus という名前の既存のネットワーク ウォッチャーを取得しています。
$networkWatcher = Get-AzNetworkWatcher `
-Name NetworkWatcher_eastus `
-ResourceGroupName NetworkWatcherRG
米国東部リージョンで Network Watcher をまだ有効にしていない場合は、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
数秒後、 [NextHopType] が [インターネット] であり、 [RouteTableId] が [System Route](システム ルート) であることが出力からわかります。 この結果から、接続先に対して有効なルートが存在することがわかります。
VM から 172.31.0.100 への送信通信をテストします。
Get-AzNetworkWatcherNextHop `
-NetworkWatcher $networkWatcher `
-TargetVirtualMachineId $VM.Id `
-SourceIPAddress 192.168.1.4 `
-DestinationIPAddress 172.31.0.100
返される出力は、 [NextHopType] が [なし] であり、 [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 {}
前の出力からわかるように、AddressPrefix が 0.0.0.0/0 であるルートでは、インターネットの次ホップを持つ他のルート アドレス プレフィックス内のアドレスを送信先としていないすべてのトラフィックがルーティングされます。 出力でもわかるように、アドレス 172.31.0.100 を含む、172.16.0.0/12 プレフィックスへの既定のルートがあるにも関わらず、[nextHopType] は [なし] になっています。 Azure では、172.16.0.0/12 への既定のルートを作成しますが、理由がない限り次ホップの種類は指定しません。 たとえば、仮想ネットワークのアドレス空間に 172.16.0.0/12 アドレス範囲を追加した場合は、ルートの [nextHopType] を [仮想ネットワーク] に変更します。 [nextHopType] として [仮想ネットワーク] にチェック マークが表示されます。
リソースをクリーンアップする
必要なくなったら、Remove-AzResourceGroup を使用して、リソース グループとその中のすべてのリソースを削除できます。
Remove-AzResourceGroup -Name myResourceGroup -Force
次のステップ
この記事では、VM を作成し、VM からのネットワークのルーティングを診断しました。 Azure では複数の既定のルートが作成されることを学習し、2 つの異なる送信先へのルーティングをテストしました。 詳細については、Azure でのルーティングとカスタム ルートを作成する方法に関するページを参照してください。
送信 VM 接続の場合は、Network Watcher の接続のトラブルシューティング機能を使用することにより、待機時間に加えて、VM とエンドポイント間で許可/拒否されているネットワーク トラフィックを確認することもできます。 Network Watcher の接続監視機能を使用すると、VM とエンドポイント (IP アドレスや URL など) の間の通信を継時的に監視することができます。 詳細については、ネットワーク接続の監視に関する記事を参照してください。