VPCゲートウェイによるインターネット接続
Internet Gateway、NAT Gateway、NAT instance、Egress-only Internet Gatewayの役割とルーティング、通信制御、可用性の違いを学びます。
VPCゲートウェイによるインターネット接続
VPCの外へ出る通信やインターネットから入る通信には、目的に応じたゲートウェイを使います。名前に「ゲートウェイ」が付くサービスには、Internet Gateway(IGW)、NAT Gateway、仮想プライベートゲートウェイ(VGW)、Customer Gatewayなどがあります。VGWとCustomer GatewayはSite-to-Site VPNなどでVPCと外部ネットワークを結ぶための要素です。ここでは主に、VPCとインターネットのIPv4・IPv6通信を担うIGW、NAT Gateway、Egress-only Internet Gatewayと、EC2で構成するNAT instanceを整理します。
Internet Gatewayでインターネットへ接続する
Internet GatewayはVPCにアタッチする、インターネット接続用のVPCコンポーネントです。VPCのルートテーブルからインターネット向け通信を送るターゲットになり、AWSが水平にスケールし、冗長性と高可用性を提供します。IGW自体が帯域を固定する単一の装置として動作するわけではありません。VPCには同時に1つのIGWをアタッチできます。
IGWをアタッチしただけでは、VPC内のすべてのサブネットがインターネットから到達可能にはなりません。サブネットに関連付けたルートテーブルがIGWを宛先とするルートを持つと、そのサブネットはパブリックサブネットとして機能します。IPv4でEC2などのリソースが直接インターネットと通信するには、リソースにパブリックIPv4アドレスまたはElastic IPアドレスが必要です。IPv6では、対象リソースにグローバルにルーティング可能なIPv6アドレスを割り当てます。
IPv4のデフォルトルートは 0.0.0.0/0 です。これは全IPv4アドレスを宛先にするルートで、CIDRの /0 はネットワーク部として固定するビット数が0であることを示します。したがって、特定の宛先へのより具体的なルートがない通信はこのルートに一致します。IPv6の全宛先ルートは ::/0 と表します。
宛先 0.0.0.0/0 → Internet Gateway
宛先 ::/0 → Egress-only Internet Gateway(外向きIPv6通信の場合)
IGWはIPv4とIPv6の両方をサポートし、IPv4通信ではリソースのプライベートIPv4アドレスとパブリックIPv4アドレスの変換も担います。IPv6ではアドレス変換せず、割り当てられたIPv6アドレスを使って通信します。IGWを経由するルートがあっても、セキュリティグループやネットワークACLが許可していなければパケットはリソースに届きません。逆に、これらのフィルターが許可していても、ルートやパブリックアドレスが欠けていればインターネット接続は成立しません。
NAT Gatewayでプライベートサブネットから外へ出る
NAT(Network Address Translation)は、送信元または宛先のIPアドレスを変換する仕組みです。NAT Gatewayを使うと、プライベートサブネットのリソースはインターネット向け通信を開始できます。外部からそのリソースへ新しい接続を開始する用途には使えません。戻りの通信は、内側から開始した接続に対する応答として扱われます。
IPv4インターネット接続で使うパブリックNAT Gatewayはパブリックサブネットに作成し、Elastic IPアドレスを関連付けます。NAT Gatewayを置いたサブネットのルートテーブルには、IGWへのデフォルトルートを設定します。一方、プライベートサブネットのルートテーブルでは、インターネット向けルート 0.0.0.0/0 のターゲットをNAT Gatewayにします。NAT Gatewayが送信元アドレスを変換してIGWへ転送するため、プライベート側のリソースに個別のパブリックIPv4アドレスを持たせずに済みます。
NAT Gatewayが配置されるサブネットのルートテーブルにIGWへの経路がない場合や、プライベートサブネットのデフォルトルートが誤ったターゲットを指している場合、通信は成立しません。経路を確認するときは、送信元サブネット、NAT Gatewayのサブネット、IGWまでのルートを順にたどります。
NAT GatewayはTCP、UDP、ICMPをサポートします。パブリックNAT GatewayとプライベートNAT Gatewayがあり、プライベートNAT Gatewayはインターネット接続ではなく、Transit Gatewayや仮想プライベートゲートウェイを介したプライベートネットワーク向け通信などに使います。パブリックNAT GatewayのElastic IPへのインバウンド接続は、プライベートリソースへの新しい接続を開始するための入口にはなりません。また、NAT Gatewayにはセキュリティグループを関連付けられません。必要な通信制御には、サブネットのネットワークACLや通信元・先のリソースのセキュリティグループを使います。
NAT GatewayはIPv4専用というわけではありません。IPv6リソースからIPv4サービスへ接続する構成では、DNS64によるIPv4宛先の合成とNAT64を組み合わせ、NAT Gatewayで変換できます。接続先がIPv6であり、IPv6のままインターネットへ出たい場合は、NAT64ではなくIGWまたはEgress-only Internet Gatewayを使う構成を選びます。
IPv6の外向き専用通信
Egress-only Internet Gatewayは、VPCのIPv6リソースからインターネットへの通信を許し、インターネット側から開始されるIPv6接続を防ぐ、水平スケールする冗長なVPCコンポーネントです。IPv6アドレスを保ったまま外向き通信を行い、外部からの新規接続を許可したくない場合に利用します。該当するサブネットのルートテーブルで ::/0 のターゲットをEgress-only Internet Gatewayに設定します。
| 要件 | 主な経路 |
|---|---|
| パブリックIPv4アドレスを持つリソースからIPv4インターネットへ | サブネット → IGW |
| プライベートIPv4アドレスのリソースからIPv4インターネットへ | プライベートサブネット → NAT Gateway → IGW |
| IPv6リソースからIPv6インターネットへ、外部起点の接続は防ぐ | サブネット → Egress-only Internet Gateway |
| IPv6リソースからIPv4サービスへ | DNS64で宛先を合成 → NAT64対応NAT Gateway |
Egress-only Internet GatewayはIPv6専用で、IPv4のNAT Gatewayを置き換えるものではありません。IPv4の送信元アドレスを変換したいときはNAT Gateway、IPv6からIPv4への変換が必要ならDNS64/NAT64、IPv6で外向きだけの通信が必要ならEgress-only Internet Gateway、というように接続元と宛先のアドレスファミリーで選び分けます。
NAT Gatewayの可用性とスケーリング
ゾーン単位型NAT Gatewayは特定のアベイラビリティーゾーン(AZ)に作成され、そのAZの中で冗長化されています。これは1つのゾーン単位型NAT Gatewayが複数AZにまたがって冗長化される、という意味ではありません。複数AZのリソースが単一AZのNAT Gatewayを共有すると、そのNAT GatewayのAZで障害が起きた際に、他のAZにあるリソースもインターネットへ出られなくなります。AZ間の通信経路となり、データ転送料金が増える場合もあります。
従来の構成でAZ障害時にも各AZのリソースが外部へ通信できるようにするには、各AZにゾーン単位型NAT Gatewayを用意し、そのAZ内のプライベートサブネットから同じAZのNAT Gatewayを使うようにルートを設定します。AWSはRegional NAT Gatewayも提供しています。Regional NAT GatewayはワークロードのあるAZへ自動的に拡張・縮小し、複数AZにまたがる同じゲートウェイIDをルートターゲットとして使えるため、各AZへのゲートウェイ配置やルート更新を簡略化できます。Regional NAT Gateway用のパブリックサブネットは不要です。一方、プライベートNATには対応しないため、その用途ではゾーン単位型を使います。Regional NAT Gatewayが新しいAZへ拡張するまで最大60分かかる場合があり、AZを追加した直後の通信設計ではこの点も考慮します。
ゾーン単位型NAT Gatewayは初期帯域幅から自動的にスケールし、帯域幅は最大100 Gbpsまで拡張できます。パケット処理性能や接続数にも上限があるため、ワークロードが大きい場合はCloudWatchメトリクスやVPC Flow Logsを使って利用状況やドロップを確認し、必要に応じて負荷を複数のNAT Gatewayへ分散します。
NAT Gatewayの料金は、稼働時間と処理データ量を主な単位として発生し、通常のデータ転送料金も別途適用されます。別AZのNAT Gatewayを経由する場合はAZ間転送料金も考慮します。Regional NAT Gatewayの料金は利用中のAZごとの時間料金と処理データ量などを考慮します。料金単価はリージョンや構成により変わるため、見積もりでは Amazon VPCの料金ページ を確認してください。IGW自体には時間料金がありませんが、IGWを利用するリソースには通常のデータ転送料金が適用されます。
NAT GatewayとNAT instanceの選択
NAT instanceは、NAT処理を行うように設定したEC2インスタンスです。NAT Gatewayのようなマネージド型ゲートウェイではなく、EC2インスタンスのサイジング、ソフトウェア更新、監視、障害時の交換やフェイルオーバーを利用者が設計・運用します。NAT instanceはIGWへの経路を持つパブリックサブネットに配置し、インターネット側のパブリックアドレスを持たせます。中継に使うときは、EC2の送信元/送信先チェックを無効にし、インスタンスのセキュリティグループ、プライベート側のルート、パブリック側のIGW経路を適切に設定します。
| 観点 | NAT Gateway | NAT instance |
|---|---|---|
| 運用 | AWSマネージド。ホストのパッチ適用やOS管理は不要 | EC2として利用者が保守、監視、交換 |
| 可用性 | ゾーン単位型は配置AZ内で冗長化。Regional型は複数AZへ自動拡張 | EC2の冗長化やフェイルオーバーを利用者が構成 |
| 性能拡張 | 帯域幅とパケット処理を自動スケール | インスタンスタイプと台数に依存し、拡張も利用者が計画 |
| 制御 | 提供機能の範囲で利用 | OSやネットワーク設定を変更して独自の処理を追加可能 |
| 費用の考え方 | 稼働時間、処理データ量、データ転送量 | EC2料金、ストレージや転送費、運用に必要な作業を含めて比較 |
標準的なプライベートサブネットの外向き通信には、運用負荷と可用性の面でNAT Gatewayが適しています。トラフィックがごく少ない環境では、NAT instanceのEC2費用がNAT Gatewayより低くなる場合がありますが、保守や可用性のための構成費用も含めて判断します。NAT Gatewayが標準で扱うTCP、UDP、ICMP以外のプロトコル要件や、OS上で独自のパケット処理・詳細なパケット調査が必要な場合には、NAT instanceや専用ネットワークアプライアンスを検討できます。通信経路にアプライアンスを挿入して検査する要件なら、Gateway Load Balancerが適する場合もあります。VPC Flow Logsは通信フローのメタデータを記録し、パケット内容そのものを記録しません。対応するEC2ネットワークインターフェイスのパケットを調べる要件では、VPC Traffic Mirroringなどの方法も検討します。
試験問題では、特別なOSレベルの制御やパケット処理が要件にない限り、マネージドで自動スケールするNAT Gatewayを選ぶのが基本です。NAT instanceを選ぶなら、単に「NATが必要」という条件だけでは足りず、EC2を自分で運用する理由があるかを確認します。
通信が成立する条件を切り分ける
インターネット接続の問題では、ゲートウェイ名だけで判断せず、次の条件を順に確認します。
- 接続先がIPv4かIPv6かを確認し、IGW、NAT Gateway、Egress-only Internet Gatewayから経路を選ぶ。
- サブネットのルートテーブルに宛先範囲と正しいターゲットがあるか確認する。
- 送信元リソースに必要なアドレスがあるか確認する。IGWで直接通信するIPv4リソースにはパブリックIPv4アドレスが必要。
- NAT Gateway側の経路とアドレスを確認する。パブリックNAT Gatewayでは、Elastic IPと、配置サブネットからIGWへの経路が必要。
- セキュリティグループとネットワークACLで送信・応答通信が許可されているか確認する。セキュリティグループはステートフル、ネットワークACLはステートレスなので、応答通信に必要なルールの考え方が異なる。
これらは互いに代替する設定ではありません。正しい経路、適切なIPアドレス、ゲートウェイ、通信制御がそろって初めて接続できます。
参考リンク
重要ポイント
- ▸Internet GatewayをVPCにアタッチし、ルートテーブルとパブリックIPをそろえるとインターネット接続できる
- ▸NAT Gatewayはプライベートサブネットからの通信を中継し、インターネットから開始する接続は受け付けない
- ▸NAT GatewayはIPv4のほか、DNS64と組み合わせたNAT64でIPv6からIPv4への通信にも使える
- ▸IPv6だけで外向き通信を許可し、外部からの新規接続を防ぐ場合はEgress-only Internet Gatewayを使う
- ▸ゾーン単位型NAT Gatewayは配置AZ内で冗長化されるが、複数AZでの継続性にはAZごとの配置とルーティングが必要
- ▸Regional NAT Gatewayはワークロードに応じてAZへ自動拡張し、複数AZで同じゲートウェイIDを使える
- ▸NAT instanceはEC2の運用、拡張、フェイルオーバーを自分で管理する
このトピックの学習を完了しますか?
完了状態はいつでも切り替えられます
この試験ドメイン内で次の学習に進む
同じサービスの関連トピック
VPC とネットワーク に関連するトピックを続けて確認できます。