2.

クラウドのサブネットとは|パブリック/プライベート・ルートテーブル・IGW/NATゲートウェイを図解

編集
この記事の要点
  • クラウドのサブネットは VPC の CIDR をさらに小さく分割した範囲で、いずれか 1 つの AZ に配置する。
  • パブリックサブネットはインターネットゲートウェイ(IGW)へのルートを持ち、外部と直接通信できるサブネット。
  • プライベートサブネットは IGW へのルートを持たず、DB やバックエンドなど外部に晒したくないリソースを置く。
  • プライベートサブネットからインターネットへ「出る」だけの通信は NAT ゲートウェイ経由で行う。
  • どのサブネットがパブリックかプライベートかは、関連付けられた「ルートテーブル」の中身で決まる。
  • 可用性のため、同じ役割のサブネットを複数 AZ に作り、リソースを分散配置するのが基本構成。

概要

クラウドにおけるサブネットとは、VPC に割り当てた IP アドレス範囲(CIDR ブロック)を、さらに小さな範囲へ分割した単位です。オンプレミスのサブネットと考え方は同じですが、クラウドでは各サブネットが必ずいずれか 1 つのアベイラビリティゾーン(AZ)に属する点が特徴です。

クラウドのサブネットは、外部インターネットと直接やり取りできるかどうかで大きく「パブリックサブネット」と「プライベートサブネット」に分けて設計します。Web の入口になるロードバランサや踏み台サーバはパブリックサブネットへ、データベースや内部 API などインターネットに晒したくないリソースはプライベートサブネットへ配置するのがセオリーです。この分離が、クラウド上のセキュリティ設計の基本になります。

仕組み

あるサブネットがパブリックかプライベートかを決めているのは、サブネット自身の設定ではなく、サブネットに関連付けられたルートテーブルの中身です。ルートテーブルは「宛先 IP 範囲ごとに、どこへパケットを送るか」を定義した表です。

パブリックサブネットのルートテーブル
┌─────────────┬──────────────────────┐
│ 宛先         │ ターゲット            │
├─────────────┼──────────────────────┤
│ 10.0.0.0/16 │ local (VPC 内)        │
│ 0.0.0.0/0   │ igw-xxxx (IGW)        │ ← これがあるとパブリック
└─────────────┴──────────────────────┘

プライベートサブネットのルートテーブル
┌─────────────┬──────────────────────┐
│ 10.0.0.0/16 │ local (VPC 内)        │
│ 0.0.0.0/0   │ nat-xxxx (NAT GW)     │ ← 出ていくだけ可能
└─────────────┴──────────────────────┘

インターネットゲートウェイ(IGW)は、VPC とインターネットを双方向に結ぶ出入口です。デフォルトルート 0.0.0.0/0 を IGW に向けたサブネットは、外部から到達でき・外部へも出られるパブリックサブネットになります。

一方、プライベートサブネットのリソースが「ソフトウェア更新のためにインターネットへ出たいが、外部から接続はされたくない」という場合、NAT ゲートウェイを使います。NAT ゲートウェイはパブリックサブネット側に置き、プライベートサブネットからの送信元 IP をグローバル IP に変換して外部へ中継します。戻りの通信は通せますが、外部から内部への自発的な接続は通さないため、片方向の出口として機能します。

構成・実用例

マルチ AZ の 3 層構成における、サブネットの配置とトラフィックの流れの例です。

VPC 10.0.0.0/16

 [インターネット]
       │  (IGW)
 ┌─────┴──────────────────────────────────────┐
 │ public  10.0.0.0/24 (AZ-a) : ALB / NAT GW  │
 │ public  10.0.10.0/24(AZ-c) : ALB           │
 ├────────────────────────────────────────────┤
 │ app     10.0.1.0/24 (AZ-a) : Web/AP         │ ─┐ 外向き通信は
 │ app     10.0.11.0/24(AZ-c) : Web/AP         │  │ NAT GW 経由
 ├────────────────────────────────────────────┤  │
 │ db      10.0.2.0/24 (AZ-a) : DB (外部遮断)  │  │
 │ db      10.0.12.0/24(AZ-c) : DB (外部遮断)  │ ─┘
 └────────────────────────────────────────────┘

AWS CLI でプライベートサブネットを作り、NAT ゲートウェイへのルートを設定する流れの例です。

# プライベートサブネット作成
aws ec2 create-subnet --vpc-id vpc-xxxx \
    --cidr-block 10.0.2.0/24 --availability-zone ap-northeast-1a

# ルートテーブルに NAT ゲートウェイ向けデフォルトルートを追加
aws ec2 create-route --route-table-id rtb-priv \
    --destination-cidr-block 0.0.0.0/0 --nat-gateway-id nat-xxxx

DB を必ずプライベートサブネットに置き、アプリ層からのみアクセスさせることで、たとえ Web 層が侵害されても DB が直接インターネットに晒されない多層防御が実現します。

主な用途

  • 公開リソースと非公開リソースの分離 — ロードバランサや踏み台はパブリック、DB やキャッシュはプライベートへ配置します。
  • 外向き通信のみ許可 — プライベートサブネットのサーバが、外部から守られたまま OS 更新やパッケージ取得を行えます(NAT 経由)。
  • マルチ AZ 冗長化 — 同役割のサブネットを複数 AZ に用意し、ゾーン障害に耐えます。
  • 役割ごとのアドレス管理 — public / app / db のように用途別にサブネットを分け、ルーティングと ACL を整理します。

関連技術との比較

項目パブリックサブネットプライベートサブネット
0.0.0.0/0 のルート先インターネットゲートウェイ(IGW)NAT ゲートウェイ または 無し
外部からの着信可能(グローバル IP 付与時)不可
外部への発信直接可能NAT 経由でのみ可能
主な配置リソースロードバランサ・踏み台・NAT GWDB・アプリサーバ・内部 API
セキュリティ晒される前提で厳格に管理外部に晒れない分だけ安全

注意点・落とし穴

  • サブネットの実体はルートテーブルで決まる — 「パブリックサブネット」という固定の種別があるわけではなく、IGW へのルートを持つかどうかで決まります。設定を見るときはルートテーブルを確認します。
  • NAT ゲートウェイの料金 — NAT ゲートウェイは時間課金 + データ処理量課金で、見落とすとコストが膨らみます。出口が本当に必要かを検討します。
  • NAT GW はパブリックサブネットに置く — NAT ゲートウェイ自身が IGW 経由で外へ出るため、プライベートサブネットに置くと機能しません。
  • サブネットの CIDR は VPC 範囲内・重複不可 — VPC の CIDR の外や、他サブネットと重なる範囲は指定できません。
  • 予約アドレスの存在 — 各サブネットの先頭数アドレスはクラウド側が予約(ルータ・DNS 用など)するため、利用可能数は単純な 2^n より少なくなります。

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. VPC
  2. サブネット(クラウド)
  3. セキュリティグループ
  4. クラウドロードバランサ
  5. VPNゲートウェイ・専用線接続

最近更新/作成されたページ