AWSネットワークの構成と接続の基本
VPC、サブネット、アベイラビリティゾーン、インターネット接続、NAT、Site-to-Site VPN、ルートテーブルとアクセス制御の関係を解説します。
AWSネットワークの構成と接続の基本
AWSでアプリケーションを動かすときは、コンピューティングやデータベースなどのリソースを、用途に合ったネットワークの中へ配置します。**Amazon VPC(Virtual Private Cloud)**は、AWSリージョン内に作成する論理的に分離された仮想ネットワークです。VPCを作成するときにIPアドレス範囲をCIDRブロックで指定し、その範囲から各サブネットやリソースへ割り当てるアドレスを設計します。
VPCの中はサブネットに分割し、EC2インスタンスなどのリソースを配置します。たとえば、写真のアップロードを受け付けるアプリケーションでは、インターネット向けロードバランサーをパブリックサブネットに置き、画像を処理するアプリケーションのタスクをプライベートサブネットに配置する構成が考えられます。外部から直接到達させる必要がない処理系を、パブリックな入口から分離できます。
リージョン、アベイラビリティゾーン、サブネット
VPCはリージョンに作成し、リージョン内の複数のアベイラビリティゾーン(AZ)で利用できます。一方、個々のサブネットは1つのAZに属します。そのため、複数AZにまたがるアプリケーションを構成するときは、各AZに個別のサブネットを作成してリソースを配置します。
同じ役割のサブネットを複数AZに用意してアプリケーションを分散すると、一方のAZに障害が発生しても、別のAZにあるリソースで処理を継続できる可能性が高まります。ネットワークを複数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上に置く物理機器ではありません。
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は適用範囲と状態管理が異なり、どちらもルートテーブルの代わりにはなりません。
通信できないときの確認順
接続エラーが起きたら、通信の経路と許可設定を分けて確認します。
- 配置先 — リソースが意図したVPC・サブネット・AZにあるか。
- 経路 — サブネットに正しいルートテーブルが関連付けられ、宛先に合うルートがあるか。
- ゲートウェイ — IGWがVPCにアタッチされているか、NATゲートウェイやVPN接続が利用可能か。
- アドレスと戻り経路 — インターネットから直接到達させる場合にパブリックIPがあるか、相手側を含めて戻りの経路があるか。
- アクセス制御 — セキュリティグループ、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の基本
同じサービスの関連トピック
VPC とネットワーク に関連するトピックを続けて確認できます。