仮想マシンのルーティングに関する問題を診断するDiagnose a virtual machine routing problem

この記事では、仮想マシン (VM) のネットワーク インターフェイスに対して有効なルートを表示することによってルーティングに関する問題を診断する方法を説明します。In this article, you learn how to diagnose a routing problem by viewing the routes that are effective for a network interface in a virtual machine (VM). Azure では、仮想ネットワークのサブネットごとに複数のルートが既定で作成されます。Azure creates several default routes for each virtual network subnet. ルート テーブルでルートを定義し、サブネットにルート テーブルを関連付けることによって、Azure の既定のルートをオーバーライドできます。You can override Azure's default routes by defining routes in a route table, and then associating the route table to a subnet. 自分で作成したルート、Azure の既定のルート、およびボーダー ゲートウェイ プロトコル (BGP) を使用して Azure VPN ゲートウェイ経由でオンプレミスのネットワークから伝達されたルート (仮想ネットワークがオンプレミスのネットワークに接続されている場合) の組み合わせは、サブネット内のすべてのネットワーク インターフェイスに対して有効なルートです。The combination of routes you create, Azure's default routes, and any routes propagated from your on-premises network through an Azure VPN gateway (if your virtual network is connected to your on-premises network) via the border gateway protocol (BGP), are the effective routes for all network interfaces in a subnet. 仮想ネットワーク、ネットワーク インターフェイス、またはルーティングの概念に関する知識がない場合は、仮想ネットワークの概要ネットワーク インターフェイスルーティングの概要に関する記事をご覧ください。If you're not familiar with virtual network, network interface, or routing concepts, see Virtual network overview, Network interface, and Routing overview.

シナリオScenario

VM に接続しようとしましたが、接続に失敗します。You attempt to connect to a VM, but the connection fails. VM に接続できない理由を特定するために、Azure portalPowerShell、または Azure CLI を使用して、ネットワーク インターフェイスの有効なルートを表示できます。To determine why you can't connect to the VM, you can view the effective routes for a network interface using the Azure portal, PowerShell, or the Azure CLI.

以下の手順では、有効なルートの表示対象となる既存の VM があると仮定します。The steps that follow assume you have an existing VM to view the effective routes for. 既存の VM がない場合は、最初に Linux または Windows VM を展開して、この記事のタスクを実行します。If you don't have an existing VM, first deploy a Linux or Windows VM to complete the tasks in this article with. この記事の例は、myVMNic1 というネットワーク インターフェイスを持つ myVM という VM に関するものです。The examples in this article are for a VM named myVM with a network interface named myVMNic1. VM およびネットワーク インターフェイスは、myResourceGroup というリソース グループおよび "米国東部" リージョンにあります。The VM and network interface are in a resource group named myResourceGroup, and are in the East US region. 問題を診断する VM については、手順の値を適宜変更します。Change the values in the steps, as appropriate, for the VM you are diagnosing the problem for.

Azure portal を使用して診断するDiagnose using Azure portal

  1. 必要なアクセス許可を持つアカウントで Azure portal にログインします。Log into the Azure portal with an Azure account that has the necessary permissions.

  2. Azure portal の上部の検索ボックスに、実行中状態になっている VM の名前を入力します。At the top of the Azure portal, enter the name of a VM that is in the running state, in the search box. 検索結果に VM の名前が表示されたら、それを選択します。When the name of the VM appears in the search results, select it.

  3. 左側の [設定] で、 [Networking](ネットワーク) を選択し、ネットワーク インターフェイス リソースの名前を選択してそのリソースに移動します。Under Settings on the left, select Networking, and navigate to the network interface resource by selecting its name. ネットワーク インターフェイスを表示するView network interfaces

  4. 左側で、 [Effective routes](有効なルート) を選択します。On the left, select Effective routes. 次の図に示すように、myVMNic1 という名前のネットワーク インターフェイスに対して有効なルートが表示されます。有効なルートを表示するThe effective routes for a network interface named myVMNic1 are shown, in the following picture: View effective routes

    複数のネットワーク インターフェイスが VM に接続されている場合は、任意のネットワーク インターフェイスに対して有効なルートを選択して表示できます。If there are multiple network interfaces attached to the VM, you can view the effective routes for any network interface by selecting it. 各ネットワーク インターフェイスは異なるサブネットに存在できるので、ネットワーク インターフェイスはそれぞれ異なる有効なルートを持つことができます。Since each network interface can be in a different subnet, each network interface can have different effective routes.

    前の図に示した例では、一覧のルートは、Azure が各サブネットに対して作成する既定のルートです。In the example shown in the previous picture, the listed routes are default routes that Azure creates for each subnet. 一覧には少なくともこれらのルートがありますが、別の仮想ネットワークとのピアリングや、Azure VPN ゲートウェイを通じたオンプレミスのネットワークへの接続など、仮想ネットワークに対して有効にした機能によっては追加のルートがある場合があります。Your list has at least these routes, but may have additional routes, depending on capabilities you may have enabled for your virtual network such as it being peered with another virtual network or connected to your on-premises network through an Azure VPN gateway. 各ルート、およびネットワーク インターフェイスに対して表示される他のルートについて詳しくは、「仮想ネットワーク トラフィックのルーティング」をご覧ください。To learn more about each of the routes, and other routes you may see for your network interface, see Virtual network traffic routing. 一覧に多数のルートがある場合は、 [ダウンロード] を選択すると、ルートの一覧を .csv ファイルで簡単にダウンロードできます。If your list has a large number of routes, you may find it easier to select Download, to download a .csv file with the list of routes.

有効なルートは前の手順の VM を通じて表示されますが、以下を通じて有効なルートを表示することもできます。Though effective routes were viewed through the VM in the previous steps, you can also view effective routes through an:

PowerShell を使用して診断するDiagnose using PowerShell

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

以下のコマンドは、Azure Cloud Shell で、またはコンピューターから PowerShell を実行することで実行できます。You can run the commands that follow in the Azure Cloud Shell, or by running PowerShell from your computer. Azure Cloud Shell は無料の対話型シェルです。The Azure Cloud Shell is a free interactive shell. 一般的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。It has common Azure tools preinstalled and configured to use with your account. お使いのコンピューターから PowerShell を実行する場合は、Azure PowerShell モジュール、バージョン 1.0.0 以降が必要です。If you run PowerShell from your computer, you need the Azure PowerShell module, version 1.0.0 or later. コンピューターで Get-Module -ListAvailable Az を実行して、インストールされているバージョンを確認してください。Run Get-Module -ListAvailable Az on your computer, to find the installed version. アップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。If you need to upgrade, see Install Azure PowerShell module. PowerShell をローカルで実行している場合、必要なアクセス許可を持つアカウントで Connect-AzAccount を実行して Azure にログインする必要もあります。If you are running PowerShell locally, you also need to run Connect-AzAccount to log into Azure with an account that has the necessary permissions.

Get-AzEffectiveRouteTable を使用してネットワーク インターフェイスの有効なルートを取得します。Get the effective routes for a network interface with Get-AzEffectiveRouteTable. 次の例では、myResourceGroup というリソース グループにある myVMNic1 というネットワーク インターフェイスの有効なルートを取得します。The following example gets the effective routes for a network interface named myVMNic1, that is in a resource group named myResourceGroup:

Get-AzEffectiveRouteTable `
  -NetworkInterfaceName myVMNic1 `
  -ResourceGroupName myResourceGroup `
  | Format-Table

出力で返された情報を解釈するには、ルーティングの概要に関する記事をご覧ください。To understand the information returned in the output, see Routing overview. 出力は、VM が実行中状態の場合にのみ返されます。Output is only returned if the VM is in the running state. 複数のネットワーク インターフェイスが VM に接続されている場合は、各ネットワーク インターフェイスに対して有効なルートを確認できます。If there are multiple network interfaces attached to the VM, you can review the effective routes for each network interface. 各ネットワーク インターフェイスは異なるサブネットに存在できるので、ネットワーク インターフェイスはそれぞれ異なる有効なルートを持つことができます。Since each network interface can be in a different subnet, each network interface can have different effective routes. 通信の問題が解決しない場合は、「追加の診断」と「考慮事項」をご覧ください。If you're still having a communication problem, see additional diagnosis and considerations.

ネットワーク インターフェイスの名前がわからなくても、ネットワーク インターフェイスが接続されている VM の名前がわかっている場合は、次のコマンドで VM に接続されているすべてのネットワーク インターフェイスの ID が返されます。If you don't know the name of a network interface, but do know the name of the VM the network interface is attached to, the following commands return the IDs of all network interfaces attached to a VM:

$VM = Get-AzVM -Name myVM `
  -ResourceGroupName myResourceGroup
$VM.NetworkProfile

次の例のような出力が返されます。You receive output similar to the following example:

NetworkInterfaces
-----------------
{/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMNic1

前の出力では、ネットワーク インターフェイスの名前は myVMNic1 です。In the previous output, the network interface name is myVMNic1.

Azure CLI を使用して診断するDiagnose using Azure CLI

以下のコマンドは、Azure Cloud Shell で、またはコンピューターから CLI を実行することで実行できます。You can run the commands that follow in the Azure Cloud Shell, or by running the CLI from your computer. この記事では、Azure CLI バージョン 2.0.32 以降が必要です。This article requires the Azure CLI version 2.0.32 or later. インストールされているバージョンを確認するには、az --version を実行します。Run az --version to find the installed version. インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。If you need to install or upgrade, see Install Azure CLI. Azure CLI をローカルで実行している場合、必要なアクセス許可を持つアカウントで az login を実行して Azure にログインする必要もあります。If you are running the Azure CLI locally, you also need to run az login and log into Azure with an account that has the necessary permissions.

az network nic show-effective-route-table を使用して、ネットワーク インターフェイスに対して有効なルートを取得します。Get the effective routes for a network interface with az network nic show-effective-route-table. 次の例では、myResourceGroup というリソース グループにある myVMNic1 というネットワーク インターフェイスの有効なルートを取得します。The following example gets the effective routes for a network interface named myVMNic1 that is in a resource group named myResourceGroup:

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

出力で返された情報を解釈するには、ルーティングの概要に関する記事をご覧ください。To understand the information returned in the output, see Routing overview. 出力は、VM が実行中状態の場合にのみ返されます。Output is only returned if the VM is in the running state. 複数のネットワーク インターフェイスが VM に接続されている場合は、各ネットワーク インターフェイスに対して有効なルートを確認できます。If there are multiple network interfaces attached to the VM, you can review the effective routes for each network interface. 各ネットワーク インターフェイスは異なるサブネットに存在できるので、ネットワーク インターフェイスはそれぞれ異なる有効なルートを持つことができます。Since each network interface can be in a different subnet, each network interface can have different effective routes. 通信の問題が解決しない場合は、「追加の診断」と「考慮事項」をご覧ください。If you're still having a communication problem, see additional diagnosis and considerations.

ネットワーク インターフェイスの名前がわからなくても、ネットワーク インターフェイスが接続されている VM の名前がわかっている場合は、次のコマンドで VM に接続されているすべてのネットワーク インターフェイスの ID が返されます。If you don't know the name of a network interface, but do know the name of the VM the network interface is attached to, the following commands return the IDs of all network interfaces attached to a VM:

az vm show \
  --name myVM \
  --resource-group myResourceGroup

問題を解決するResolve a problem

通常、ルーティングの問題の解決は以下から構成されます。Resolving routing problems typically consists of:

  • カスタム ルートを追加して、Azure の既定のルートをオーバーライドします。Adding a custom route to override one of Azure's default routes. カスタム ルートの追加方法をご確認ください。Learn how to add a custom route.
  • 望ましくない場所へのルーティングを引き起こす可能性があるカスタム ルートを変更または削除します。Change or remove a custom route that may cause routing to an undesired location. カスタム ルートの変更または削除の方法をご確認ください。Learn how to change or delete a custom route.
  • 定義した任意のカスタム ルートを含むルート テーブルが、ネットワーク インターフェイスが存在するサブネットに関連付けられていることを確認します。Ensuring that the route table that contains any custom routes you've defined is associated to the subnet the network interface is in. サブネットへのルート テーブルの関連付けの方法をご確認ください。Learn how to associate a route table to a subnet.
  • デプロイした Azure VPN ゲートウェイやネットワーク仮想アプライアンスなどのデバイスが動作していることを確認します。Ensuring that devices such as Azure VPN gateway or network virtual appliances you've deployed are operable. Network Watcher の VPN 診断機能を使用して、Azure VPN ゲートウェイの問題を特定します。Use the VPN diagnostics capability of Network Watcher to determine any problems with an Azure VPN gateway.

通信の問題が解決しない場合は、「考慮事項」と「追加の診断」をご覧ください。If you're still having communication problems, see Considerations and Additional diagnosis.

考慮事項Considerations

通信の問題のトラブルシューティングを行う場合は、次の点を検討してください。Consider the following points when troubleshooting communication problems:

  • ルーティングは、定義したルートの中の最長プレフィックス一致 (LPM)、ボーダー ゲートウェイ プロトコル (BGP)、システム ルートに基づきます。Routing is based on longest prefix match (LPM) among routes that you've defined, border gateway protocol (BGP), and system routes. 同じ LPM マッチの複数のルートが存在する場合、ルートはルーティング概要のページに示されている順序でその起点に基づいて選択されます。If there is more than one route with the same LPM match, then a route is selected based on its origin in the order listed in Routing overview. 有効なルートを使用すると、使用可能なすべてのルートに対して LPM マッチの有効なルートのみが表示されます。With effective routes, you can only see effective routes that are an LPM match, based on all the available routes. ネットワーク インターフェイスに対してルートが評価される方法を表示することによって、VM からの通信に影響を与える可能性のある特定のルートのトラブルシューティングをより簡単に行うことができます。Seeing how the routes are evaluated for a network interface makes it a lot easier to troubleshoot specific routes that may be impacting communication from your VM.
  • "仮想アプライアンス" を次ホップの種類として使用して、ネットワーク仮想アプライアンス (NVA) へのカスタム ルートを定義した場合は、トラフィックを受信する NVA で IP 転送が有効であることを確認してください。有効になっていない場合、パケットが破棄されます。If you've defined custom routes to a network virtual appliance (NVA), with Virtual Appliance as the next hop type, ensure that IP forwarding is enabled on the NVA receiving the traffic, or packets are dropped. ネットワーク インターフェイスの IP 転送の有効化の詳細をご確認ください。Learn more about enabling IP forwarding for a network interface. さらに、オペレーティング システム、または NVA 内のアプリケーションは、ネットワーク トラフィックを転送できる必要もあり、そのように構成されている必要があります。Additionally, the operating system, or application within the NVA must also be able to forward network traffic and be configured to do so.
  • 0.0.0.0/0 へのルートを作成した場合、すべての送信インターネット トラフィックは、NVA や VPN ゲートウェイなど、指定した次ホップにルーティングされます。If you've created a route to 0.0.0.0/0, all outbound internet traffic is routed to the next hop you specified, such as to an NVA or VPN gateway. このようなルートの作成は、多くの場合に強制トンネリングと呼ばれます。Creating such a route is often referred to as forced tunneling. 次ホップがトラフィックを処理する方法によっては、RDP または SSH プロトコルを使用したインターネットから VM へのリモート接続がこのルートで動作しない場合があります。Remote connections using the RDP or SSH protocols from the internet to your VM may not work with this route, depending on how the next hop handles the traffic. 強制トンネリングは、次の方法で有効にできます。Forced-tunneling can be enabled:
    • "VPN ゲートウェイ" の次ホップの種類でルートを作成して、サイト間 VPN を使用する場合。When using site-to-site VPN, by creating a route with a next hop type of VPN Gateway. 強制トンネリングの構成の詳細をご確認ください。Learn more about configuring forced tunneling.
    • サイト間 VPN または ExpressRoute 回線を使用しているときに、0.0.0.0/0 (既定のルート) が仮想ネットワーク ゲートウェイを介して BGP 経由でアドバタイズされる場合。If a 0.0.0.0/0 (default route) is advertised over BGP through a virtual network gateway when using a site-to-site VPN, or ExpressRoute circuit. サイト間 VPN または ExpressRoute で BGP を使用する方法の詳細をご確認ください。Learn more about using BGP with a site-to-site VPN or ExpressRoute.
  • 仮想ネットワークのピアリング トラフィックが正常に機能するためには、次ホップの種類が "VNet のピアリング" であるシステム ルートが、ピアリングされる仮想ネットワークのプレフィックスの範囲に対して存在する必要があります。For virtual network peering traffic to work correctly, a system route with a next hop type of VNet Peering must exist for the peered virtual network's prefix range. そのようなルートが存在せず、仮想ネットワーク ピアリングのリンクが接続済みの場合:If such a route doesn't exist, and the virtual network peering link is Connected:
  • Azure では、各 Azure ネットワーク インターフェイスに既定のルートが割り当てられますが、VM に複数のネットワーク インターフェイスが接続されている場合は、プライマリ ネットワーク インターフェイスだけに既定のルート (0.0.0.0/0) または VM のオペレーティング システム内のゲートウェイが割り当てられます。Though Azure assigns default routes to each Azure network interface, if you have multiple network interfaces attached to the VM, only the primary network interface is assigned a default route (0.0.0.0/0), or gateway, within the VM's operating system. Windows または Linux VM に接続されているセカンダリ ネットワーク インターフェイスの既定のルートを作成する方法をご確認ください。Learn how to create a default route for secondary network interfaces attached to a Windows or Linux VM. プライマリとセカンダリのネットワーク インターフェイスの詳細をご確認ください。Learn more about primary and secondary network interfaces.

追加の診断Additional diagnosis

  • 簡単なテストを実行して、ある場所を宛先とするトラフィックの次ホップの種類を確認するには、Azure Network Watcher の次ホップ機能を使用します。To run a quick test to determine the next hop type for traffic destined to a location, use the Next hop capability of Azure Network Watcher. 次ホップは、指定された場所を宛先とするトラフィックの次ホップの種類を示します。Next hop tells you what the next hop type is for traffic destined to a specified location.
  • ルートがないことが原因で VM のネットワーク通信が失敗する場合、VM のオペレーティング システム内で実行されているファイアウォール ソフトウェアが問題を引き起こしている可能性がありますIf there are no routes causing a VM's network communication to fail, the problem may be due to firewall software running within the VM's operating system
  • VPN ゲートウェイまたは NVA を介してオンプレミスのデバイスへのトラフィックの強制トンネリングを行っている場合、デバイスのルーティングの構成方法によってはインターネットから VM に接続できない場合があります。If you are force tunneling traffic to an on-premises device through a VPN gateway, or NVA, you may not be able to connect to a VM from the internet, depending on how you've configured routing for the devices. デバイス用に構成したルーティングが VM のパブリックまたはプライベート IP アドレスにトラフィックをルーティングすることを確認してください。Confirm that the routing you have configured for the device routes traffic to either a public or private IP address for the VM.
  • Network Watcher の接続のトラブルシューティング機能を使用して、送信方向の通信に関する問題のルーティング、フィルタリング、および OS 内の原因を特定します。Use the connection troubleshoot capability of Network Watcher to determine routing, filtering, and in-OS causes of outbound communication problems.

次のステップNext steps