AWSネットワークの構成と接続の基本

VPC、サブネット、アベイラビリティゾーン、インターネット接続、NAT、Site-to-Site VPN、ルートテーブルとアクセス制御の関係を解説します。

学習順Step 61 / 101サービスネットワーク試験ドメイン開発

AWSネットワークの構成と接続の基本

AWSでアプリケーションを動かすときは、コンピューティングやデータベースなどのリソースを、用途に合ったネットワークの中へ配置します。**Amazon VPC(Virtual Private Cloud)**は、AWSリージョン内に作成する論理的に分離された仮想ネットワークです。VPCを作成するときにIPアドレス範囲をCIDRブロックで指定し、その範囲から各サブネットやリソースへ割り当てるアドレスを設計します。

VPCの中はサブネットに分割し、EC2インスタンスなどのリソースを配置します。たとえば、写真のアップロードを受け付けるアプリケーションでは、インターネット向けロードバランサーをパブリックサブネットに置き、画像を処理するアプリケーションのタスクをプライベートサブネットに配置する構成が考えられます。外部から直接到達させる必要がない処理系を、パブリックな入口から分離できます。

リージョン、アベイラビリティゾーン、サブネット

VPCはリージョンに作成し、リージョン内の複数のアベイラビリティゾーン(AZ)で利用できます。一方、個々のサブネットは1つのAZに属します。そのため、複数AZにまたがるアプリケーションを構成するときは、各AZに個別のサブネットを作成してリソースを配置します。

同じ役割のサブネットを複数AZに用意してアプリケーションを分散すると、一方のAZに障害が発生しても、別のAZにあるリソースで処理を継続できる可能性が高まります。ネットワークを複数AZに用意するだけではアプリケーションの冗長化は完了しません。ロードバランサー、アプリケーションの実行環境、データ層なども、要件に応じて障害に耐えられる配置にする必要があります。

VPC、複数AZのサブネット、インターネット接続の構成図

パブリックサブネットとプライベートサブネット

サブネットがパブリックかプライベートかは、主に関連付けられたルートテーブルの経路で判断します。サブネットにパブリック/プライベートという独立した防火壁が備わっているわけではありません。

  • パブリックサブネットは、ルートテーブルにインターネットゲートウェイ(IGW)宛ての経路を持ちます。そこに置いたリソースへインターネットから到達させるには、ルートに加えて、リソースにパブリックIPv4アドレスまたはElastic IPを割り当て、セキュリティグループやネットワークACLでも必要な通信を許可します。
  • プライベートサブネットは、リソースからインターネットゲートウェイへ直接向かう経路を持ちません。外部から直接接続させたくないアプリケーションや内部処理を配置します。OS更新などのために外向きのインターネット通信が必要であれば、通常はNATゲートウェイなどへの経路を設定します。

「パブリックサブネットに置いた」だけでは、インスタンスがインターネットと通信できるとは限りません。IGWへの経路、パブリックIPアドレス、セキュリティグループやネットワークACLの許可がそろっているかを確認します。同様に、プライベートサブネットも、それだけであらゆる通信から保護されるわけではありません。必要な経路とアクセス制御を個別に設計します。

VPCとインターネットをつなぐゲートウェイ

インターネットゲートウェイ

**インターネットゲートウェイ(Internet Gateway、IGW)**はVPCにアタッチし、VPCとインターネット間の通信を可能にします。サブネットのルートテーブルにインターネット宛ての経路を設定し、リソースにパブリックIPv4アドレスを割り当てると、そのリソースはIGWを介してインターネットと通信できます。IGWはパブリックIPv4アドレスとプライベートIPv4アドレスの対応付けも担います。

IGWはVPCにアタッチするネットワークの出入口であり、各インスタンスへパブリックIPアドレスを割り当てる仕組みや、アクセス制御ルールそのものではありません。どのサブネットのトラフィックをIGWへ送るかはルートテーブルで決め、どの通信を通すかはセキュリティグループやネットワークACLでも制御します。

NATゲートウェイ

プライベートサブネットのリソースからインターネットへ接続させつつ、インターネット側からそのリソースへの新しい接続を開始させたくない場合は、NATゲートウェイを使います。IPv4の一般的な構成では、NATゲートウェイをパブリックサブネットに作成してElastic IPを割り当て、プライベートサブネットのルートテーブルからNATゲートウェイへ外向き通信を送ります。NATゲートウェイはアドレス変換を行って、VPC外へ通信を中継します。

この仕組みでは、プライベート側のリソースが開始した通信への応答は戻せますが、インターネット上の任意のホストからプライベート側へ新たな接続を開始することはできません。NATゲートウェイを使えば通信が自動的に許可されるわけではなく、経路やセキュリティグループなどの設定も引き続き必要です。

NATゲートウェイは配置したAZに依存するため、複数AZで外向き通信の可用性を高めたい構成では、各AZに用意したNATゲートウェイへ同じAZのプライベートサブネットから経路を向ける方法を検討します。利用時間や処理するデータ量に応じて費用が発生するため、外部への通信先や転送量も見積もります。課金条件はAmazon VPCの料金ページで確認してください。

なお、インターネットゲートウェイにもパブリックIPv4アドレスを持つリソースとプライベートIPv4アドレスの間の変換機能があります。この用途と、複数のプライベートIPv4リソースが外向き通信を共有するNATゲートウェイの役割を混同しないでください。

オンプレミス環境とのSite-to-Site VPN

社内ネットワークとVPCをインターネット上の暗号化された接続で結ぶ方法の一つが、AWS Site-to-Site VPNです。VPC側には**仮想プライベートゲートウェイ(Virtual Private Gateway、VGW)をアタッチし、オンプレミス側にはVPN機器を用意します。AWSに作成するカスタマーゲートウェイ(Customer Gateway、CGW)**は、オンプレミスのVPN機器を表すAWS側の設定オブジェクトであり、AWS上に置く物理機器ではありません。

Site-to-Site VPNでVPCとオンプレミスのネットワークを接続する図

VPN接続が確立しても、通信したいネットワーク間の経路が自動的にすべて整うわけではありません。VPCのルートテーブルとオンプレミス側のルートを適切に設定し、双方のCIDR範囲が重複しないようにします。経路情報は静的ルート、またはBGPによる動的ルーティングで交換できます。

たとえば、社内のビルドネットワークからAWS上のテスト環境へプライベートにアクセスさせる場合、VGWとCGWを使ったVPNを構成し、テスト環境と社内ネットワークの間に必要な経路を設定します。接続先が多数のVPCに広がる場合は、仮想プライベートゲートウェイをVPCごとに接続する構成のほか、AWS Transit Gatewayをハブとして使う構成も検討できます。

ルートテーブルで通信経路を決める

ルートテーブルは、トラフィックの宛先CIDRと転送先の組み合わせを保持します。VPC内の通信先にはローカルルートがあり、その他の宛先には要件に応じてIGW、NATゲートウェイ、VGWなどをターゲットとするルートを設定します。

各サブネットは1つのルートテーブルに関連付けられます。明示的に別のルートテーブルを関連付けていないサブネットには、VPCのメインルートテーブルが適用されます。1つのルートテーブルを複数のサブネットで共有することもできます。インターネットへ直接接続するサブネットと、NAT経由で外向き通信を行うサブネットでは、経路を分けるために別々のルートテーブルを割り当てる構成がよく使われます。

ルートテーブルは「どの宛先へ、どの出口を使って送るか」を決めるものです。ルートが存在することだけで通信が成功するとは限りません。ターゲットのゲートウェイが利用可能であること、戻りの経路があること、アドレス割り当てが適切であること、アクセス制御で通信が許可されていることも確認します。

セキュリティグループとネットワークACL

通信制御では、ルーティングとは別にファイアウォールのルールも確認します。セキュリティグループは、EC2インスタンスなどのリソースに関連付くネットワークインターフェイスに適用されるステートフルな仮想ファイアウォールです。サブネット単位の機能ではありません。許可する受信・送信通信を定義し、許可された通信の応答は状態を追跡して通過させます。セキュリティグループのルールは許可を定義し、明示的な拒否ルールは持ちません。

これに対し、**ネットワークACL(Network ACL、NACL)**はサブネットに関連付けて、そのサブネットを通過する通信を制御します。ステートレスであり、受信と送信のルールを別々に評価します。そのため、要求だけでなく応答の通信も通すには、往路・復路の両方に合うルールが必要です。セキュリティグループとNACLは適用範囲と状態管理が異なり、どちらもルートテーブルの代わりにはなりません。

通信できないときの確認順

接続エラーが起きたら、通信の経路と許可設定を分けて確認します。

  1. 配置先 — リソースが意図したVPC・サブネット・AZにあるか。
  2. 経路 — サブネットに正しいルートテーブルが関連付けられ、宛先に合うルートがあるか。
  3. ゲートウェイ — IGWがVPCにアタッチされているか、NATゲートウェイやVPN接続が利用可能か。
  4. アドレスと戻り経路 — インターネットから直接到達させる場合にパブリックIPがあるか、相手側を含めて戻りの経路があるか。
  5. アクセス制御 — セキュリティグループ、NACL、オンプレミス側のファイアウォールが通信を許可しているか。

インターネットから届かない場合は、IGWへのルートがあってもパブリックIPがなければ直接到達できない点を確認します。プライベートサブネットから外向き通信ができない場合は、プライベート側のルート、NATゲートウェイの配置と状態、NAT側のIGWへの経路を順に確認します。VPNの相手ネットワークと通信できない場合は、VPNの状態に加えて、両側のルートと重複しないCIDRも調べます。

試験で区別するポイント

  • VPCとサブネット:VPCはリージョンに作成し、サブネットはAZごとに作成する。高可用性のためには異なるAZにサブネットと処理リソースを配置する。
  • パブリック/プライベート:呼称だけでアクセス可否が決まるのではなく、ルートテーブル、IPアドレス、ゲートウェイ、ファイアウォール設定の組み合わせで到達性が決まる。
  • IGWとNATゲートウェイ:IGWはパブリックIPを使うリソースのインターネット接続に用いる。NATゲートウェイはプライベートIPv4リソースから開始する外向き通信の中継に用いる。
  • VGWとCGW:VGWはVPC側にアタッチするAWSゲートウェイ、CGWはオンプレミスのVPN機器を表すAWS側の設定である。VPNの両端で経路を設定する。
  • ルートテーブルとファイアウォール:ルートテーブルは転送先を決める。セキュリティグループはネットワークインターフェイスに適用するステートフル制御、NACLはサブネットに適用するステートレス制御である。

公式ドキュメント

重要ポイント

  • ▸VPCはリージョンに作成する仮想ネットワークで、サブネットは1つのアベイラビリティゾーンに属する
  • ▸パブリック/プライベートの違いは主にサブネットのルートで決まり、インターネット通信にはゲートウェイ、経路、IPアドレス、アクセス許可がそろう必要がある
  • ▸インターネットゲートウェイはパブリックIPを持つリソースのインターネット接続を担い、NATゲートウェイはプライベート側から開始するIPv4通信を中継する
  • ▸Site-to-Site VPNではVPC側の仮想プライベートゲートウェイと、オンプレミス側のカスタマーゲートウェイを接続する
  • ▸ルートテーブルは宛先ごとの次の転送先を決め、セキュリティグループはネットワークインターフェイス単位で通信を許可する

このトピックの学習を完了しますか?

完了状態はいつでも切り替えられます

この試験ドメイン内で次の学習に進む

このトピックがこの試験ドメイン内の最初です。

この試験ドメイン内の次

Lambda →

AWS Lambdaの基本