ITの教科書検索
入門読了 約11分

Amazon VPCとは ― サブネットとルートテーブルで作る仮想ネットワークの仕組み

VPCは、AWSの中に作る自分専用の仮想ネットワークです。サブネットとAZの関係、ルートテーブルがパブリックとプライベートを分ける仕組み、IGWとNATの違いを図で説明します。

目次
  1. VPCとは
  2. サブネットとAZの関係
  3. ルートテーブルの役割
  4. IGWとNAT GWの違い
  5. 動かして確かめる:届き方の違い
  6. セキュリティグループとネットワークACL
  7. VPN・Direct Connectの位置づけ
  8. 練習問題

VPCとは、AWSの中に作る自分専用の仮想ネットワーク

AWSでEC2インスタンスを動かす場所が、VPC(Virtual Private Cloud)です。AWSのクラウドの中に自分で定義する、論理的に分離された仮想ネットワークです。自分が管理するデータセンターで運用するネットワークに近い環境を用意できます。インターネットから接続できるかどうかも、このネットワークの設計で決まります。

AWSのアカウントには、各リージョンに最初からデフォルトVPCが1つあります。デフォルトVPCは、EC2インスタンスをすぐに起動してインターネットにつなげるように、あらかじめ設定されています。自分で設計したいときは、サブネット・IPアドレス・ゲートウェイを指定して、新しいVPCを作ることもできます。

サブネットは、1つのAZの中に収まるIPアドレスの範囲

VPCを作ったら、その中にサブネットを作ります。サブネットとは、VPCの中にあるIPアドレスの範囲です。AWS公式ドキュメントによると、サブネットは必ず1つのアベイラビリティゾーン(AZ)の中に収まります。複数のAZにまたがることはできません。

CIDRブロックは、IPアドレスの範囲を表す値です。サブネットのCIDRブロックは、サブネット計算の記事で説明したCIDR表記のまま決めます。VPC全体には、たとえば10.0.0.0/16のような大きいCIDRを割り当てます。AZごとのサブネットには、そこからさらに分割した10.0.1.0/24のような小さいCIDRを割り当てます。

インターネットゲートウェイVPCAZ-aパブリックサブネット0.0.0.0/0 → IGWNAT GWEC2プライベートサブネット0.0.0.0/0 → NAT GWDBサーバ送受信NAT GWへAZ-c同じ構成がもう1つ
AZ-aのパブリックサブネットは、ルートテーブルの0.0.0.0/0の行き先がインターネットゲートウェイ(IGW)です。プライベートサブネットは、同じ0.0.0.0/0の行き先が、パブリックサブネットに置かれたNATゲートウェイ(NAT GW)です。この行き先の違いが、パブリック・プライベートの違いを決めます。AZ-cにも、同じ構成がもう1組あります。

図のように、1つのVPCの中には、AZごとに複数のサブネットを作れます。サブネットが「パブリック」か「プライベート」かは、次の節で説明するルートテーブルで決まります。ファイルに書いた定義から、同じ構成のVPCとサブネットを別のリージョンにも作る方法は、IaCの記事にまとめています。AWSでVPCとサブネットをテンプレートから作る例は、CloudFormationの記事で紹介しています。

ルートテーブルが、サブネットから出る通信の行き先を決める

ルートテーブルとは、サブネットやゲートウェイから出る通信の行き先を決める設定です。

サブネットを作ると、必ずどれか1つのルートテーブルに関連付けられます。指定しなければ、VPCのメインルートテーブルに自動で関連付けられます。関連付けも、ルートテーブルの内容も変更できます。

AWS公式ドキュメントによると、サブネットの種類はルーティングの設定方法によって決まります。インターネットゲートウェイへの直接のルートがあればパブリックサブネット、無ければプライベートサブネットです。サブネットに付けた名前では、パブリックかプライベートかは決まりません。ほかのVPCとVPCピアリングやTransit Gatewayでつなぐときも、相手のVPCの範囲への経路をルートテーブルに書きます。

インターネットゲートウェイとNATゲートウェイの違い

インターネットゲートウェイ(IGW)は、VPCとインターネットの間の通信を可能にするコンポーネントです。冗長化されていて、高い可用性を備えています。パブリックサブネットのリソースがインターネットと通信するには、パブリックIPv4アドレスかIPv6アドレスが必要です。このアドレスがあれば、IGWを通して通信できます。インターネット側からも、そのアドレスを宛先にして接続を開始できます。

インスタンス自身が知っているのは、VPCの中のプライベートIPv4アドレスだけです。IPv4では、IGWがプライベートIPv4アドレスとパブリックIPv4アドレスを1対1で書き換えます。

NATゲートウェイ(NAT GW)を使うと、プライベートサブネットのインスタンスがVPCの外のサービスに接続できます。外部のサービスの側から、プライベートサブネットのインスタンスへの接続を開始することはできません。

インスタンスが送った通信の送信元アドレスは、NAT GWのアドレスに書き換わります。戻ってきた応答は、NAT GWが元のインスタンスのアドレスに書き換えて届けます。NATの記事で説明した家庭用ルータと同じように、内側から始めた通信だけが通ります。

1つのAZに作るNAT GWは、パブリックサブネットの中に置きます。NAT GWからインターネットへの通信は、そのパブリックサブネットのIGWを通って出ていきます。AZをまたいで自動で広がるリージョナルNAT GWもあります。こちらはパブリックサブネットを必要としません。

デフォルトVPCには、IGWとIPv4用の0.0.0.0/0ルートが最初から用意されています。デフォルト以外のVPCには、どちらも用意されていません。自分でIGWを作り、ルートテーブルにルートを追加する必要があります。

動かして確かめる:パブリックとプライベートで届き方はどう変わるか

次の図で、パブリックサブネットとプライベートサブネットを切り替えられます。ルートテーブルの0.0.0.0/0の行き先と、通信の届き方の違いを比較できます。

EC2ルートテーブル10.0.0.0/16 → local0.0.0.0/0 → IGWIGWインターネットEC2から開始:往復できる外部から開始:届く
パブリックサブネットは、ルートテーブルの0.0.0.0/0の行き先がIGWです。パブリックIPv4アドレスを持つEC2なら、EC2から始めた通信も、外部から始めた接続も、IGWを通って届きます。外部からの接続は、セキュリティグループなどで許可した分だけ通ります。

どちらのサブネットでも、インスタンスから始めた通信は外部に届き、その応答も戻ってきます。ただし、パブリックサブネットのインスタンスがIPv4で通信するには、パブリックIPv4アドレスが必要です。

違うのは、外部から接続を開始できるかどうかです。パブリックサブネットのインスタンスには、セキュリティグループなどで許可すれば、外部から直接接続できます。プライベートサブネットのインスタンスには、外部から直接接続できません。

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

VPCの中で通信を制限する仕組みには、セキュリティグループとネットワークACLの2つがあります。ファイアウォールが通信を制限する一般的な仕組みは、ファイアウォールの記事にまとめています。2つの違いは、次の表のとおりです。

セキュリティグループとネットワークACLの違い(AWS公式ドキュメントの比較表に基づく)
特性セキュリティグループネットワークACL
効く範囲インスタンス単位サブネット単位
対象関連付けたインスタンスすべて関連付けたサブネット内のすべてのインスタンス
ルールの種類許可のみ許可と拒否の両方
ルールの評価すべてのルールを確認してから許可を判断番号の順に確認し、一致したルールで決定
戻りの通信自動的に許可(ステートフル)明示的に許可が必要(ステートレス)

サブネットを作ると、最初はVPCのデフォルトのネットワークACLに自動で関連付けられます。デフォルトのネットワークACLは、すべての通信を許可する設定になっています。AWS公式ドキュメントが勧めるのは、セキュリティグループを主な制御手段にする使い方です。ネットワークACLは、必要なときに追加の防御として使います。どちらもHTTPの要求の中身は検査しません。中身を検査する方法は、WAFとShieldの記事で説明しています。

VPN・Direct Connectの位置づけ

VPCは、社内のネットワークとつなぐこともできます。AWS公式ドキュメントは、この方法としてAWS Site-to-Site VPNとAWS Direct Connectを挙げています。

Site-to-Site VPNは、VPCと社内ネットワークをつなぎます。VPNの記事で説明したトンネリングと暗号化の技術を使います。Direct Connectは、社内のネットワークとAWSを専用の回線でつなぐ方法です。インターネットを経由しません。どちらも、VPCを社内ネットワークの延長として使うための選択肢です。2つの経路と暗号化の違いは、Direct Connectの記事で比べています。

参考にした資料

練習問題(全5問)

Q1Amazon VPCの説明として正しいものはどれ?
Q2サブネットとアベイラビリティゾーン(AZ)の関係として正しいものはどれ?
Q3あるサブネットが「パブリックサブネット」か「プライベートサブネット」かを決めるものはどれ?
Q4プライベートサブネットのインスタンスが外部のサービスにアクセスするときの説明として正しいものはどれ?
Q5セキュリティグループとネットワークACLの違いとして正しいものはどれ?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

AWSの記事を続けて読む

AWS 全38本中15本目