仮想ネットワーク トラフィックのルーティングを実装する

完了

Azure では、Azure 仮想ネットワークのサブネットごとにルート テーブルが自動的に作成され、既定のシステム ルートがテーブルに追加されます。 Azure のシステム ルートをカスタム ルートでオーバーライドし、カスタム ルートをルート テーブルに追加できます。 サブネットのルート テーブルのルートに基づいて、サブネットからの送信トラフィックがルーティングされます。

システム ルート

Azure では、システム ルートが自動的に作成され、仮想ネットワークの各サブネットに割り当てられます。 システム ルートを作成または削除することはできませんが、システム ルートをカスタム ルートでオーバーライドすることはできます。 Azure では、サブネットごとに既定のシステム ルートが作成されます。また、Azure の特定の機能を使用するときは、特定のサブネットまたはすべてのサブネットにオプションの既定のルートが追加されます。

既定のルート

各ルートには、アドレス プレフィックスとネクストホップの種類が含まれています。 サブネットから出ていくトラフィックを、ルートのアドレス プレフィックスに含まれる IP アドレスに送信するときに、そのプレフィックスを含むルートが使用されます。 仮想ネットワークが作成されるたびに、その仮想ネットワークのサブネットごとに、次の既定のシステム ルートが自動的に作成されます。

ソース

アドレス プレフィックス

次ホップの種類

Default

仮想ネットワークに固有

仮想ネットワーク

Default

0.0.0.0/0

インターネット

Default

10.0.0.0/8

なし

Default

192.168.0.0/16

なし

Default

100.64.0.0/10

なし

ルーティングの用語で、ホップはルート全体の通過点です。 したがって、ネクスト ホップは、最終的な宛先までの過程でトラフィックが転送される次の通過点です。 上記の表に記載されているネクストホップの種類は、記載されているアドレス プレフィックス宛てのトラフィックを Azure がどのようにルーティングするのかを示しています。 ネクスト ホップの種類は、次のように定義されます。

  • 仮想ネットワーク: 仮想ネットワークのアドレス空間内のアドレス範囲の間でトラフィックをルーティングします。 Azure によって、仮想ネットワークのアドレス空間に定義された各アドレス範囲に対応するアドレス プレフィックスを含むルートが作成されます。 アドレス範囲ごとに作成されたルートを使用して、サブネット間でトラフィックが自動的にルーティングされます。

  • インターネット: アドレス プレフィックスによって指定されたトラフィックをインターネットにルーティングします。 既定のシステム ルートでは、アドレス プレフィックス 0.0.0.0/0 が指定されています。 Azure では、宛先アドレスが Azure サービスものである場合を除き、仮想ネットワーク内のアドレス範囲で指定されていないすべてのアドレスへのトラフィックは、インターネットにルーティングされます。 Azure のサービス宛てのすべてのトラフィックは、インターネットにルーティングされるのではなく、Azure によって、バックボーン ネットワーク経由でサービスに直接ルーティングされます。 アドレス プレフィックスが 0.0.0.0/0 の Azure の既定のシステム ルートは、カスタム ルートでオーバーライドできます。

  • なし: 種類がなしのネクスト ホップにルーティングされるトラフィックは、サブネットの外部にルーティングされるのではなく破棄されます。 Azure では、次のアドレス プレフィックスの既定のルートが自動的に作成されます。

    • 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16: RFC 1918 でプライベート用に予約されています。
    • 100.64.0.0/10:RFC 6598 で予約されています。

仮想ネットワークのアドレス空間内で上記のアドレス範囲のいずれかを割り当てた場合、ルートの次ホップの種類がなしから仮想ネットワークに自動的に変更されます。 4 つの予約済みアドレス プレフィックスのいずれかを含む仮想ネットワークのアドレス空間に、そのアドレス プレフィックスとは異なるアドレス範囲を割り当てた場合は、Azure によって元のプレフィックスのルートが削除され、追加したアドレス プレフィックスで、次ホップの種類が仮想ネットワークのルートが追加されます。

オプションの既定のルート

ユーザーが有効にした Azure 機能については、Azure によって既定のシステム ルートが追加されます。 機能に応じて、仮想ネットワークの特定のサブネットまたはすべてのサブネットにオプションの既定のルートが追加されます。 各種機能を有効にしたときに追加される可能性のあるシステム ルートとネクストホップの種類を次に示します。

ソース

アドレス プレフィックス

次ホップの種類

ルートの追加先となる仮想ネットワークのサブネット

Default

仮想ネットワークに固有 (例: 10.1.0.0/16

VNET ピアリング

All

仮想ネットワーク ゲートウェイ

BGP 経由でオンプレミスからアドバタイズされたプレフィックス、またはローカル ネットワーク ゲートウェイで構成されているプレフィックス

仮想ネットワーク ゲートウェイ

All

Default

複数

VirtualNetworkServiceEndpoint

サービス エンドポイントが有効になっているサブネットのみ

  • 仮想ネットワーク (VNet) ピアリング: 2 つの仮想ネットワーク間に仮想ネットワーク ピアリングを作成すると、各仮想ネットワークのアドレス空間内のアドレス範囲ごとに、ルートが追加されます。

  • 仮想ネットワーク ゲートウェイ: 仮想ネットワークに仮想ネットワーク ゲートウェイを追加すると、ネクスト ホップの種類が仮想ネットワーク ゲートウェイである 1 つ以上のルートが、Azure によって追加されます。 ゲートウェイによってサブネットにルートが追加されるため、ソースは仮想ネットワーク ゲートウェイとして一覧に表示されます。

    • オンプレミス ネットワーク ゲートウェイが Azure 仮想ネットワーク ゲートウェイとボーダー ネットワーク プロトコル (BGP) ルートを交換すると、オンプレミス ネットワーク ゲートウェイから伝達された各ルートに対応するルートが追加されます。 Azure 仮想ネットワーク ゲートウェイに伝達できるルートの数には制限があるため、可能な限り最大のアドレス範囲にオンプレミスのルートをまとめる必要があります。 伝達できるルートの数の詳細については、「ネットワークの制限」を参照してください。

VirtualNetworkServiceEndpoint: 特定のサービスへのサービス エンドポイントを有効にすると、Azure によって、そのサービスに対するパブリック IP アドレスがルート テーブルに追加されます。 サービス エンドポイントは、仮想ネットワークの個々のサブネットで有効になるので、サービス エンドポイントが有効になっているサブネットのルート テーブルにのみルートが追加されます。 Azure サービスのパブリック IP アドレスは定期的に変更され、必要に応じて Azure によりルーティング テーブルの更新が管理されます。

VNet ピアリングVirtualNetworkServiceEndpoint の各ネクストホップの種類は、Azure Resource Manager デプロイ モデルを使用して作成された仮想ネットワークのサブネットのルート テーブルにのみ追加されます。 これらのネクストホップの種類は、クラシック デプロイ モデルを使用して作成された仮想ネットワークのサブネットに関連付けられているルート テーブルには追加されません。

カスタム ルート

ネットワーク トラフィックのルーティング方法をさらに正確に制御するには、Azure によって作成される既定のルートを、独自のユーザー定義ルート (UDR) を使用してオーバーライドできます。 この手法は、2 つのサブネット間のトラフィックがファイアウォール アプライアンスを確実に通過するようにしたい場合、または VNet からのトラフィックがインターネットにルーティングされないようにしたい場合に役立ちます。

ユーザー定義ルート

Azure でカスタムまたはユーザー定義(静的)のルートを作成して、Azure の既定のシステム ルートをオーバーライドしたり、サブネットのルート テーブルにルートを追加したりできます。

Azure では、各サブネットに 0 個または 1 個のルート テーブルを関連付けることができます。 ユーザーがルート テーブルを作成してサブネットに関連付けると、Azure によってサブネットに追加された既定のルートは、テーブル内のルートと結合されるか、またはそれによってオーバーライドされます。

ユーザー定義ルートを作成するときは、次のネクストホップの種類を指定できます。

仮想アプライアンス: 仮想アプライアンスとは、一般にネットワーク アプリケーション (ファイアウォールなど) が実行されている仮想マシンです。 ホップの種類が仮想アプライアンスのルートを作成するときは、次ホップの IP アドレスも指定します。 IP アドレスには、次のアドレスを指定できます。

  • 仮想マシンに接続されたネットワーク インターフェイスのプライベート IP アドレス。
  • Azure 内部ロード バランサーのプライベート IP アドレス。

[仮想ネットワーク ゲートウェイ] :特定のアドレス プレフィックス宛てのトラフィックを仮想ネットワーク ゲートウェイにルーティングする場合に指定します。 種類が VPN の仮想ネットワーク ゲートウェイを作成する必要があります。

なし: アドレス プレフィックスへのトラフィックを宛先に転送するのではなく破棄する場合に指定します。

仮想ネットワーク:仮想ネットワーク内の既定のルーティングをオーバーライドする場合に指定します。

インターネット: あるアドレス プレフィックス宛てのトラフィックをインターネットに明示的にルーティングする場合、またはパブリック IP アドレスを持つ Azure サービスを宛先とするトラフィックを Azure バックボーン ネットワーク内に維持したい場合に指定します。

ユーザー定義ルートを構成する

ここでは、3 つのサブネットが含まれる仮想ネットワークの例を示します。

  • サブネットはフロントエンド、DMZ、バックエンドです。 DMZ サブネットには、ネットワーク仮想アプライアンス (NVA) があります。 NVA は、ルーティングやファイアウォールの最適化などのネットワーク機能を支援する VM です。
  • あなたは、フロントエンド サブネットからのすべてのトラフィックが NVA を経由して確実にバックエンド サブネットに至るようにしたいと考えています。

ルーティング テーブルが割り当てられている仮想ネットワークの図。

ルーティング テーブルを作成する

ルーティング テーブルの作成は簡単です。 [名前][サブスクリプション][リソース グループ][場所] を指定します。 また、[仮想ネットワーク ゲートウェイのルート伝達] の使用を決定することもできます。

Azure portal の [ルート テーブルの作成] ブレードのスクリーンショット。

仮想ネットワーク ゲートウェイの伝達が有効になっているすべてのサブネットのルート テーブルに、ルートが自動的に追加されます。 ExpressRoute を使用していると、伝達によってすべてのサブネットが確実にルーティング情報を取得します。

カスタム ルートを作成する

この例では次のようになります。

  • 新しいルートの名前は ToPrivateSubnet になります。
  • プライベート サブネットは 10.0.1.0/24 にあります。
  • このルートでは、仮想アプライアンスが使用されます。 [ネクスト ホップの種類] の他の選択肢は、[仮想ネットワーク ゲートウェイ]、[仮想ネットワーク]、[インターネット]、[なし] であることに注意してください。
  • 仮想アプライアンスは 10.0.2.4 にあります。

[ルートの追加] ページのスクリーンショット。[ネクスト ホップの種類] ドロップダウンが強調表示されています。[仮想アプライアンス] が選択されています。

まとめると、このルートは 10.0.1.0/24 (プライベート サブネット) のすべてのアドレス プレフィックスに適用されます。 これらのアドレス宛てのトラフィックは、アドレスが 10.0.2.4 の仮想アプライアンスに送信されます。

ルート テーブルを関連付ける

この例の最後のステップでは、パブリック サブネットを新しいルーティング テーブルに関連付けます。 各サブネットには、0 個または 1 個のルート テーブルを関連付けることができます。

仮想ネットワークに関連付けられているルート テーブルのスクリーンショット。

注意

既定では、システム ルートを使用すると、トラフィックはプライベート サブネットに直接送られます。 ただし、ユーザー定義ルートを使用すると、トラフィックが仮想アプライアンスを通過するよう強制できます。

Note

この例では、仮想アプライアンスがパブリック IP アドレスを持っていてはならず、IP 転送が有効になっている必要があります。

強制トンネリングを使用して VNet をセキュリティ保護する

強制トンネリングを使用すると、検査および監査のために、サイト間の VPN トンネルを介して、インターネットへのすべてのトラフィックをオンプレミスの場所に戻すようにリダイレクトする (つまり、"強制する") ことができます。 これは、ほとんどの企業 IT ポリシーの重要なセキュリティ要件です。 強制トンネリングを構成しない場合、Azure の VM からインターネットへのトラフィックは、トラフィックを検査または監査できるオプションを使用せずに、常に Azure ネットワーク インフラストラクチャからインターネットへ直接トラバースします。 認証されていないインターネット アクセスは、情報の漏えいまたは他の種類のセキュリティ侵害を招く可能性があります。 強制トンネリングは、Azure PowerShell を使用して構成できます。 Azure portal を使用して構成することはできません。

次の例では、フロントエンド サブネットは強制トンネリングされていません。 フロントエンドのサブネット内のワークロードは、直接、インターネットから顧客の要求を承認し応答し続けることができます。 Mid-tier および Backend のサブネットは、トンネリングを強制されます。 これら 2 つのサブネットからインターネットへのアウトバウンド接続は、サイト間 (S2S) VPN トンネルの 1 つを介して、オンプレミス サイトに (強制) リダイレクトされます。

バックエンド サブネットと中間層サブネットは、S2S VPN 経由で強制トンネリングされます。フロントエンド サブネットはインターネットに直接ルーティングされます。

強制トンネリングについて

Azure では、強制トンネリングは仮想ネットワークのカスタム ユーザー定義ルートを使用して構成されます。

  • 各仮想ネットワーク サブネットには、システム ルーティング テーブルが組み込まれています。 システム ルーティング テーブルには、次の 3 つのグループがあります。

    • ローカル VNet ルート: 同じ仮想ネットワーク内の宛先 VM に直接ルーティングします。
    • オンプレミス ルート: Azure VPN ゲートウェイにルーティングします。
    • 既定のルート: インターネットに直接ルーティングします。 前の 2 つのルートが網羅していないプライベート IP アドレスへ送信されるパケットは削除されます。
  • 強制トンネリングを構成するには、次のことを行う必要があります。

    • ルーティング テーブルを作成します。
    • VPN Gateway へのユーザー定義の既定のルートを追加します。
    • ルーティング テーブルを適切な VNet サブネットに関連付けます。
  • 強制トンネリングは、ルートベースの VPN ゲートウェイを持つ VNet に関連付ける必要があります。

    • 仮想ネットワークに接続されるクロスプレミスのローカル サイト間に、既定サイト接続を設定する必要があります。
    • オンプレミス VPN デバイスを、トラフィック セレクターとして 0.0.0.0/0 を使用して構成する必要があります。

強制トンネリングを使用すると、多層サービス アーキテクチャで必要なインターネット アクセスを有効な状態のままにしながら、Azure 内の VM やクラウド サービスからのインターネット アクセスを制限および調査できます。

Azure ルート サーバーを構成する

Azure Route Server を使用すると、ネットワーク仮想アプライアンス (NVA) と仮想ネットワークの間の動的ルーティングが簡単になります。 これにより、ルート テーブルを手動で構成したり管理したりすることなく、BGP ルーティング プロトコルをサポートする NVA と Azure Virtual Network (VNET) 内の Azure ソフトウェア定義ネットワーク (SDN) 間で Border Gateway Protocol (BGP) ルーティング プロトコルを介して、ルーティング情報を直接交換することができます。 Azure Route Server は高可用性を使用して構成されたフル マネージド サービスです。

Azure Route Server を使用すると、仮想ネットワークでの NVA の構成、管理、デプロイが簡単になります。

  • 仮想ネットワーク アドレスが更新されるたびに、NVA のルーティング テーブルを手動で更新する必要がなくなりました。

  • NVA により新しいルートがアナウンスされたり、古いルートが取り消されたりするたびに、ユーザー定義のルートを手動で更新する必要がなくなりました。

  • NVA の複数のインスタンスを Azure Route Server にピアリングすることができます。 BGP の属性を NVA で構成したり、実際の設計 (パフォーマンスを意図したアクティブ/アクティブ、回復性を意図したアクティブ/パッシブなど) に応じて、どの NVA インスタンスがアクティブで、どの NVA インスタンスがパッシブであるかを Azure Route Server に知らせたりすることができます。

  • NVA と Azure Route Server 間のインターフェイスは、共通の標準プロトコルに基づいています。 NVA で BGP がサポートされている限り、Azure Route Server とピアリングすることができます。

  • Azure Route Server は、新規または既存の仮想ネットワークのいずれかにデプロイできます。

  • Azure Route Server をデプロイする方法について説明します

ルーティングに関する問題を診断する

Azure 仮想ネットワーク内の特定の仮想マシン (VM) に接続しようとすると、常に失敗するものとします。 ルーティングに関する問題は、VM のネットワーク インターフェイスで有効になっているルートを確認することによって診断できます。 サブネット内のすべてのネットワーク インターフェイスに対して有効なルートは、ユーザーが作成したルート、Azure の既定のルート、およびボーダー ゲートウェイ プロトコル (BGP) を介して Azure VPN ゲートウェイ経由でオンプレミスのネットワークから伝達されたルートの組み合わせです。

各ネットワーク インターフェイスで有効なルートは、Azure portal、Azure PowerShell、または Azure CLI を使用して表示できます。 以下の手順では、各方法の例を示します。 いずれの場合も、出力は VM が実行中状態の場合にのみ返されます。 複数のネットワーク インターフェイスが VM に接続されている場合は、各ネットワーク インターフェイスに対して有効なルートを確認できます。 各ネットワーク インターフェイスは異なるサブネットに存在できるので、ネットワーク インターフェイスはそれぞれ異なる有効なルートを持つことができます。

Azure portal で有効なルートを表示する

  1. 必要なアクセス許可を持つアカウントで Azure portal にログインします。

  2. 検索ボックスに、調べたい VM の名前を入力します。

  3. 検索結果から VM を選択します。

  4. [設定][ネットワーク] を選択し、名前を選択してネットワーク インターフェイス リソースに移動します。

    Azure portal - 特定の NIC を選択します。

  5. [サポートとトラブルシューティング] で、[有効なルート] を選択します。 次の画像では、myVMNic1 という名前のネットワーク インターフェイスの有効なルートが示されています。

    Azure portal - 特定の NIC の有効なルート。

Azure PowerShell を使用して有効なルートを表示する

ネットワーク インターフェイスの有効なルートを表示するには、Get-AzEffectiveRouteTable コマンドを使用します。 次の例では、myResourceGroup というリソース グループにある myVMNic1 というネットワーク インターフェイスの有効なルートを取得します。

Get-AzEffectiveRouteTable `

-NetworkInterfaceName myVMNic1 `

-ResourceGroupName myResourceGroup `

ルーティングの問題を解決する

ルーティングの問題を解決するための手順には、次のことを行う場合があります。

  1. カスタム ルートを追加して、既定のルートをオーバーライドします。 カスタム ルートの追加方法をご確認ください。
  2. トラフィックが不適切な場所にルーティングされる原因になっているカスタム ルートを変更または削除します。 カスタム ルートの変更または削除の方法をご確認ください。
  3. ルート テーブルが正しいサブネット (ネットワーク インターフェイスが含まれるもの) に関連付けられていることを確認します。 サブネットへのルート テーブルの関連付けの方法をご確認ください。
  4. デプロイした Azure VPN ゲートウェイやネットワーク仮想アプライアンスなどのデバイスが、意図したとおりに動作していることを確認します。

以下のそれぞれの質問に最も適した回答を選んでください。 次に、[自分の回答を確認します] を選択します。

自分の知識をチェックする

1.

Azure で構成されているルートをトラフィックでオーバーライドできるルートの種類はどれですか?

2.

VNet でルーティングに何らかの問題が発生しています。 エンジニアは問題の診断で最初に何を行いますか?