ルーティングオプションの例 - Amazon Virtual Private Cloud

ルーティングオプションの例

以下のトピックでは、VPC の特定のゲートウェイまたは接続のルーティングについて説明します。

インターネットゲートウェイへのルーティング

サブネットルートテーブル内のルートをインターネットゲートウェイに追加することで、サブネットをパブリックサブネットにすることができます。そのためには、インターネットゲートウェイを作成して VPC にアタッチ後、IPv4 トラフィックの場合は 0.0.0.0/0、IPv6 トラフィックの場合は ::/0 を送信先に指定し、インターネットゲートウェイ ID (igw-xxxxxxxxxxxxxxxxx) のターゲットを指定してルートを追加します。

送信先 ターゲット
0.0.0.0/0 igw-id
::/0 igw-id

詳細については、「インターネットゲートウェイ」を参照してください。

NAT デバイスへのルーティング

プライベートサブネットのインスタンスがインターネットに接続できるようにするには、パブリックサブネットで NAT ゲートウェイを作成するか、NAT インスタンスを起動します。次に、IPv4 インターネットトラフィック (0.0.0.0/0) を NAT デバイスにルーティングするプライベートサブネットのルートテーブルのルートを追加します。

送信先 ターゲット
0.0.0.0/0 nat-gateway-id

また、NAT ゲートウェイを使用するための不要なデータ処理料金を回避したり、特定のトラフィックをプライベートにルーティングしたりするために、他のターゲットへのより具体的なルートを作成することもできます。次の例では、Amazon S3 トラフィック (pl-xxxxxxxx。Amazon S3 の具体的な IP アドレス範囲) はゲートウェイ VPC エンドポイントにルーティングされ、10.25.0.0/16 トラフィックは VPC ピア接続にルーティングされます。pl-xxxxxxxx および 10.25.0.0/16 IP アドレスの範囲は、0.0.0.0/0 よりも具体的です。インスタンスが Amazon S3 またはピア VPC にトラフィックを送信すると、トラフィックはゲートウェイ VPC エンドポイントまたは VPC ピア接続に送信されます。その他のトラフィックはすべて NAT ゲートウェイに送信されます。

送信先 ターゲット
0.0.0.0/0 nat-gateway-id
pl-xxxxxxxx vpce-id
10.25.0.0/16 pcx-id

詳細については、「NAT ゲートウェイ」および「NAT インスタンス」を参照してください。NAT デバイスは IPv6 トラフィックに使用することはできません。

仮想プライベートゲートウェイへのルーティング

AWS Site-to-Site VPN 接続を使用して、VPC のインスタンスが独自のネットワークと通信するようにできます。これを行うには、仮想プライベートゲートウェイを作成し、VPC にアタッチします。次に、ネットワークの送信先と仮想プライベートゲートウェイ (vgw-xxxxxxxxxxxxxxxxx) のターゲットを含むルートをサブネットルートテーブルに追加します。

送信先 ターゲット
10.0.0.0/16 vgw-id

その後、Site-to-Site VPN 接続を作成し、設定することができます。詳細については、AWS Site-to-Site VPN ユーザーガイド の「AWS Site-to-Site VPN とは」および「ルートテーブルと VPN ルーティングの優先度」を参照してください。

仮想プライベートゲートウェイ上の Site-to-Site VPN 接続は、IPv6 トラフィックをサポートしません。ただし、仮想プライベートゲートウェイを介した AWS Direct Connect 接続への IPv6 トラフィックのルーティングはサポートされています。詳細については、AWS Direct Connect ユーザーガイド を参照してください。

AWS Outposts ローカルゲートウェイへのルーティング

AWS Outposts に関連付けられた VPC 内のサブネットには、ローカルゲートウェイの追加ターゲットタイプを設定できます。宛先アドレス 192.168.10.0/24 のトラフィックをローカルゲートウェイでカスタマーネットワークにルーティングする場合を考えます。これを行うには、宛先ネットワークとローカルゲートウェイ (lgw-xxxx) のターゲットで次のルートを追加します。

送信先 ターゲット
192.168.10.0/24 lgw-id

Wavelength Zone キャリアゲートウェイへのルーティング

Wavelength Zone にあるサブネットには、キャリアゲートウェイの追加のターゲットタイプを設定できます。すべての非 VPC トラフィックをキャリアネットワークにルーティングするために、キャリアゲートウェイでトラフィックをルーティングする場合を考えてみます。これを行うには、VPC へのキャリアゲートウェイを作成し、アタッチしてから、次のルートを追加します。

送信先 ターゲット
0.0.0.0/0 cagw-id
::/0 cagw-id

VPC ピア接続へのルーティング

VPC ピアリング接続は、プライベート IPv4 アドレスを使用して 2 つの VPC 間でトラフィックをルーティングすることを可能にするネットワーク接続です。どちらの VPC のインスタンスも、同じネットワーク内に存在しているかのように、相互に通信できます。

VPC ピア接続にある VPC 間のトラフィックのルーティングを有効にするには、VPC ピア接続を指す 1 つ以上のサブネットルートテーブルにルートを追加する必要があります。これにより、ピア接続で他の VPC の CIDR ブロックのすべてまたは一部にアクセスできます。同様に、他の VPC の所有者は、自分のサブネットのルートテーブルにルートを追加して、ルーティング対象の VPC にトラフィックを送り返す必要があります。

たとえば、次の情報を持つ 2 つの VPC 間に VPC ピアリング接続 (pcx-11223344556677889) があるとします。

  • VPC A: CIDR ブロックは 10.0.0.0/16 です

  • VPC B: CIDR ブロックは 172.31.0.0/16 です

VPC 間のトラフィックを有効にし、両方の VPC の IPv4 CIDR ブロック全体にアクセスできるようにするには、VPC A のルートテーブルを次のように設定します。

送信先 ターゲット
10.0.0.0/16 ローカル
172.31.0.0/16 pcx-11223344556677889

VPC B のルートテーブルは次のように設定します。

送信先 Target
172.31.0.0/16 ローカル
10.0.0.0/16 pcx-11223344556677889

VPC ピアリング接続では、VPC とインスタンスで IPv6 通信が有効な場合、VPC のインスタンス間で IPv6 通信をサポートできます。詳細については、「VPC とサブネット」を参照してください。VPC 間の IPv6 トラフィックのルーティングを有効にするには、VPC ピアリング接続をポイントするルートテーブルにルートを追加して、ピア VPC の IPv6 CIDR ブロックのすべての部分にアクセスできるようにする必要があります。

たとえば、同じ VPC ピアリング接続 (pcx-11223344556677889) を使用して、VPC に次の情報を含めるとします。

  • VPC A: IPv6 CIDR ブロックは 2001:db8:1234:1a00::/56

  • VPC B: IPv6 CIDR ブロックは 2001:db8:5678:2b00::/56

VPC ピアリング接続で IPv6 通信を有効にするには、VPC A のサブネットルートテーブルに次のルートを追加します。

送信先 ターゲット
10.0.0.0/16 ローカル
172.31.0.0/16 pcx-11223344556677889
2001:db8:5678:2b00::/56 pcx-11223344556677889

VPC B のルートテーブルに次のルートを追加します。

送信先 Target
172.31.0.0/16 ローカル
10.0.0.0/16 pcx-11223344556677889
2001:db8:1234:1a00::/56 pcx-11223344556677889

VPC ピア接続の詳細については、「Amazon VPC ピアリングガイド」を参照してください。

ClassicLink は、VPC に EC2 Classic インスタンスをリンクし、プライベート IPv4 アドレスを使用して EC2-Classic インスタンスと VPC のインスタンス間の通信を可能にする機能です。ClassicLink の詳細については、「ClassicLink」を参照してください。

ClassicLink 用に VPC を有効にすると、すべてのサブネットルートテーブルに、送信先が 10.0.0.0/8 で、ターゲットが local であるルートが追加されます。これによって、VPC 内のインスタンスと、VPC にリンクされている EC2-Classic インスタンスとの間で通信が可能になります。ClassicLink が有効な VPC に別のルートテーブルを追加する場合、送信先が 10.0.0.0/8 で、ターゲットが local であるルートが自動的に追加されます。VPC の ClassicLink を無効にすると、このルートはサブネットのすべてのルートテーブルから自動的に削除されます。

サブネットのいずれかのルートテーブルに、10.0.0.0/8 CIDR 内のアドレス範囲で既存のルートが存在する場合、ClassicLink 用に VPC を有効にすることができません。これには、10.0.0.0/16 および 10.1.0.0/16 の IP アドレス範囲を持つ、VPC のローカルルートは含まれません。

既に ClassicLink 用に VPC を有効にしている場合、10.0.0.0/8 IP アドレス範囲のルートテーブルに、より詳細なルートを追加できない場合があります。

VPC ピアリング接続を変更して、VPC のインスタンスとピア VPC にリンクされた EC2-Classic インスタンス間の通信を有効にするため、送信先を 10.0.0.0/8、ターゲットを local として、静的ルートが自動的にルートテーブルに追加されます。VPC ピアリング接続を変更して、VPC にリンクされたローカルの EC2-Classic インスタンスと、ピア VPC のインスタンス間で通信を有効にする場合、送信先をピア VPC CIDR ブロック、ターゲットを VPC ピアリング接続として、メインルートテーブルにルートを手動で追加する必要があります。EC2-Classic インスタンスは、ピア VPC へのルーティングについてメインルートテーブルに依存します。詳細については、Amazon VPC ピアリングガイドの「ClassicLink を使用した設定」を参照してください。

ゲートウェイ VPC エンドポイントへのルーティング

ゲートウェイ VPC エンドポイントにより、VPC と他の AWS のサービスをプライベートに接続できます。ゲートウェイエンドポイントを作成するときは、ゲートウェイエンドポイントによって使用されるサブネットルートテーブルを VPC で指定します。ルートは自動的に各ルートテーブル追加されて、送信先としてサービス (pl-xxxxxxxx) のプレフィックスリスト ID、ターゲットとしてエンドポイント ID (vpce-xxxxxxxxxxxxxxxxx) が登録されます。エンドポイントルートを明示的に削除または変更することはできませんが、エンドポイントで使用されるルートテーブルは変更できます。

エンドポイントのルーティングの詳細について、また AWS のサービスへのルートに対する影響については、「ゲートウェイエンドポイントのルーティング」を参照してください。

Egress-Only インターネットゲートウェイへのルーティング

VPC で Egress-Only インターネットゲートウェイを作成して、プライベートサブネットのインスタンスを有効にしてインターネットへのアウトバウンド通信を開始することができますが、インターネットはインスタンスとの接続を開始することはできません。Egress-Only インターネットゲートウェイは、IPv6 トラフィックでのみ使用されます。Egress-Only インターネットゲートウェイのルーティングを設定するには、Egress-Only インターネットゲートウェイに IPv6 インターネットトラフィック (::/0) をルーティングするプライベートサブネットのルートテーブルにルートを追加します。

送信先 ターゲット
::/0 eigw-id

詳細については、「Egress-Only インターネットゲートウェイ」を参照してください。

トランジットゲートウェイのルーティング

VPC をトランジットゲートウェイにアタッチするときは、トラフィックがトランジットゲートウェイを通過してルーティングするよう、サブネットルートテーブルにルートを追加する必要があります。

トランジットゲートウェイに 3 つの VPC がアタッチされている次のシナリオを検討します。このシナリオでは、アタッチメントはすべて、トランジットゲートウェイのルートテーブルに関連付けられ、トランジットゲートウェイのルートテーブルに伝播されます。そのため、アタッチメントはすべて、単純なレイヤー 3 IP ハブとしてトランジットゲートウェイを提供しながら、パケットを相互にルーティングできます。

たとえば、次の情報を持つ 2 つの VPC があるとします。

  • VPC A: 10.1.0.0/16, attachment ID tgw-attach-11111111111111111

  • VPC B: 10.2.0.0/16, attachment ID tgw-attach-22222222222222222

VPC 間のトラフィックを有効にし、トランジットゲートウェイにアクセスできるようにするには、VPC A のルートテーブルを次のように設定します。

送信先 ターゲット

10.1.0.0/16

ローカル

10.0.0.0/8

tgw-id

以下は、VPC アタッチメントのトランジットゲートウェイルートテーブルエントリの例です。

送信先 ターゲット

10.1.0.0/16

tgw-attach-11111111111111111

10.2.0.0/16

tgw-attach-22222222222222222

トランジットゲートウェイルートテーブルの詳細については、Amazon VPC トランジットゲートウェイの「ルーティング」を参照してください。

ミドルボックスアプライアンスのルーティング

インターネットゲートウェイまたは仮想プライベートゲートウェイを介して VPC に入るトラフィックは、VPC 内のミドルボックスアプライアンスにルーティングして、インターセプトできます。ニーズに合わせてアプライアンスを設定できます。たとえば、すべてのトラフィックをスクリーニングするセキュリティアプライアンス、または WAN アクセラレーションアプライアンスを設定できます。アプライアンスは VPC のサブネットで Amazon EC2 インスタンスとしてデプロイされ、サブネット内の Elastic Network Interface (ネットワークインターフェイス) で表されます。

インバウンド VPC トラフィックをアプライアンスにルーティングするには、ルートテーブルをインターネットゲートウェイまたは仮想プライベートゲートウェイに関連付け、アプライアンスのネットワークインターフェイスを VPC トラフィックのターゲットとして指定します。詳細については、「ゲートウェイルートテーブル」を参照してください。また、サブネットから別のサブネットのミドルボックスアプライアンスにアウトバウンドトラフィックをルーティングすることもできます。

注記

目的のサブネットのルートテーブルでルート伝達を有効にしている場合は、ルートの優先順位に注意してください。最も具体的なルートが優先され、ルートが一致する場合は、伝達されたルートよりも静的ルートが優先されます。ルートを確認して、トラフィックが正しくルーティングされていること、およびルート伝達を有効または無効にした場合に (たとえば、ジャンボフレームをサポートする AWS Direct Connect 接続にはルート伝達が必要)、意図しない結果が生じないことを確認します。

アプライアンスに関する考慮事項

AWSMarketplace からサードパーティー製アプライアンスを選択することも、独自のアプライアンスを設定することもできます。アプライアンスを作成または設定するときは、次の点に注意してください。

  • アプライアンスは、送信元トラフィックまたは宛先トラフィックとは別のサブネットに設定する必要があります。

  • アプライアンスでの送信元/送信先のチェックを無効にする必要があります。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「送信元または送信先チェックの変更」を参照してください。

  • サービスの連鎖はサポートされていません。

  • アプライアンスを経由して、同じサブネットのホスト間でトラフィックをルーティングすることはできません。

  • アプライアンス経由でサブネット間でトラフィックをルーティングすることはできません。

  • アプライアンスは、ネットワークアドレス変換 (NAT) を実行する必要はありません。

  • IPv6 トラフィックをインターセプトするには、必ず IPv6 に VPC、サブネット、アプライアンスを設定します。詳細については、「VPC とサブネットの使用」を参照してください。仮想プライベートゲートウェイは IPv6 トラフィックをサポートしません。

アプライアンスのルーティング設定

インバウンドトラフィックをアプライアンスにルーティングするには、ルートテーブルを作成し、サブネット宛てのトラフィックをアプライアンスのネットワークインターフェイスに向けるルートを追加します。このルートは、ルートテーブルのローカルルートよりも具体的です。このルートテーブルをインターネットゲートウェイまたは仮想プライベートゲートウェイに関連付けます。次のルートテーブルは、サブネット宛ての IPv4 トラフィックをアプライアンスのネットワークインターフェイスにルーティングします。

送信先 ターゲット
10.0.0.0/16 ローカル
10.0.1.0/24 eni-id

または、ローカルルートのターゲットをアプライアンスのネットワークインターフェイスに置き換えることができます。これは、後で VPC に追加するサブネット宛てのトラフィックを含め、すべてのトラフィックがアプライアンスに自動的にルーティングされるようにするためです。

送信先 ターゲット
10.0.0.0/16 eni-id

サブネットから別のサブネットのアプライアンスにトラフィックをルーティングするには、アプライアンスのネットワークインターフェイスにトラフィックをルーティングするルートをサブネットルートテーブルに追加します。この宛先は、ローカルルートの宛先より具体性を低くする必要があります。たとえば、インターネットを宛先とするトラフィックの場合、宛先に 0.0.0.0/0(すべての IPv4 アドレス)を指定します。

送信先 ターゲット
10.0.0.0/16 ローカル
0.0.0.0/0 eni-id

次に、アプライアンスのサブネットに関連付けられたルートテーブルで、トラフィックをインターネットゲートウェイまたは仮想プライベートゲートウェイにルーティングして戻すルートを追加します。

送信先 ターゲット
10.0.0.0/16 ローカル
0.0.0.0/0 igw-id

IPv6 トラフィックに同じルーティング設定を適用できます。たとえば、ゲートウェイルートテーブルで、IPv4 と IPv6 の両方のローカルルートのターゲットをアプライアンスのネットワークインターフェイスに置き換えることができます。

送信先 ターゲット
10.0.0.0/16 eni-id
2001:db8:1234:1a00::/56 eni-id

次の図では、VPC のサブネット A の Amazon EC2 インスタンスにファイアウォールアプライアンスがインストールおよび設定されています。アプライアンスは、インターネットゲートウェイを介して VPC に出入りするすべてのトラフィックを検査します。ルートテーブル A はインターネットゲートウェイに関連付けられています。インターネットゲートウェイを介して VPC に入るサブネット B 宛てのトラフィックは、アプライアンスのネットワークインターフェイス (eni-11223344556677889) にルーティングされます。サブネット B から出るすべてのトラフィックも、アプライアンスのネットワークインターフェイスにルーティングされます。


                        VPC へのインバウンド IPv4 ルーティング

次の例は、前の例と同じ設定ですが、IPv6 トラフィックが含まれています。インターネットゲートウェイを介して VPC に入るサブネット B 宛ての IPv6 トラフィックは、アプライアンスのネットワークインターフェイス (eni-11223344556677889) にルーティングされます。サブネット B から出るすべてのトラフィック(IPv4 および IPv6)も、アプライアンスのネットワークインターフェイスにルーティングされます。


                        VPC へのインバウンド IPv4 および IPv6 ルーティング

プレフィックスリストを使用したルーティング

AWS リソース全体で同じ CIDR ブロックのセットを頻繁に参照する場合は、カスタマーマネージドプレフィックスリスト を作成して、それらをグループ化できます。その後、ルートテーブルエントリの送信先としてプレフィックスリストを指定できます。後でプレフィックスリストのエントリを追加または削除でき、ルートテーブルを更新する必要はありません。

たとえば、複数の VPC アタッチメントを持つトランジットゲートウェイがあるとします。VPC は、次の CIDR ブロックを持つ 2 つの特定の VPC アタッチメントと通信できる必要があります。

  • 10.0.0.0/16

  • 10.2.0.0/16

両方のエントリを持つプレフィックスリストを作成します。サブネットルートテーブルで、ルートを作成し、送信先としてプレフィックスリストを指定して、ターゲットとしてトランジットゲートウェイを指定します。

送信先 Target
172.31.0.0/16 ローカル
pl-123abc123abc123ab tgw-id

プレフィックスリストのエントリの最大数は、ルートテーブル内のエントリ数と同じになります。

Gateway Load Balancer エンドポイントにルーティングする

Gateway Load Balancer を使用すると、ファイアウォールなどの仮想アプライアンスのフリートにトラフィックを分散できます。VPC エンドポイントサービス設定を作成して、ロードバランサーをサービスとして設定できます。その後、VPC 内に Gateway Load Balancer エンドポイントを作成し、VPC をサービスに接続します。

トラフィックを (例えば、セキュリティ検査のために) Gateway Load Balancer にルーティングするには、ルートテーブルで Gateway Load Balancer エンドポイントをターゲットとして指定します。

次の例では、セキュリティ VPC のGateway Load Balancer の背後にセキュリティアプライアンスのフリートが設定されています。エンドポイントサービスは、Gateway Load Balancer 用に設定されています。サービスコンシューマー VPC の所有者は、VPC 内のサブネット 2 に Gateway Load Balancer エンドポイントを作成します (エンドポイントネットワークインターフェイスで表されます)。インターネットゲートウェイを経由して VPC に入るすべてのトラフィックは、まずセキュリティ VPC での検査のために Gateway Load Balancer エンドポイントにルーティングされ、その後に送信先サブネットにルーティングされます。同様に、サブネット 1 の EC2 インスタンスから出るすべてのトラフィックは、セキュリティ VPC での検査のために Gateway Load Balancer エンドポイントにルーティングされ、その後にインターネットにルーティングされます。


                    Gateway Load Balancer エンドポイントを使用してエンドポイントサービスにアクセスする

サービスコンシューマー VPC について、次のルートテーブルを設定します。

ゲートウェイルートテーブルを作成し、インターネットゲートウェイに関連付けます。サブネット 1 を送信先とするトラフィックを Gateway Load Balancer エンドポイントにポイントさせるルートを追加します。ルートテーブルで Gateway Load Balancer エンドポイントを指定するには、VPC エンドポイントの ID を使用します。

送信先 ターゲット
10.0.0.0/16 ローカル
10.0.1.0/24 vpc-endpoint-id

サブネット 1 のルートテーブルについて、すべてのトラフィック (0.0.0.0/0) を Gateway Load Balancer エンドポイントにポイントさせるルートを作成します。これにより、(インターネットを送信先とする) サブネットから出るすべてのトラフィックが Gateway Load Balancer エンドポイントに最初にルーティングされます。

送信先 ターゲット
10.0.0.0/16 ローカル
0.0.0.0/0 vpc-endpoint-id

サブネット 2 については、ルートテーブルは、検査から返されるトラフィックを最終的な送信先にルーティングします。インターネットを起点とするトラフィックについては、ローカルルートによって、サブネット 1 の送信先にルーティングされます。サブネット 1 を起点とするトラフィックについては、すべてのトラフィックをインターネットゲートウェイにルーティングするルートを作成します。

送信先 ターゲット
10.0.0.0/16 ローカル
0.0.0.0/0 igw-id

Gateway Load Balancer の詳細については、「Gateway Load Balancer」をご参照ください。