ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
クラウドにおけるサブネットとは、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 GW | DB・アプリサーバ・内部 API |
| セキュリティ | 晒される前提で厳格に管理 | 外部に晒れない分だけ安全 |
注意点・落とし穴
- サブネットの実体はルートテーブルで決まる — 「パブリックサブネット」という固定の種別があるわけではなく、IGW へのルートを持つかどうかで決まります。設定を見るときはルートテーブルを確認します。
- NAT ゲートウェイの料金 — NAT ゲートウェイは時間課金 + データ処理量課金で、見落とすとコストが膨らみます。出口が本当に必要かを検討します。
- NAT GW はパブリックサブネットに置く — NAT ゲートウェイ自身が IGW 経由で外へ出るため、プライベートサブネットに置くと機能しません。
- サブネットの CIDR は VPC 範囲内・重複不可 — VPC の CIDR の外や、他サブネットと重なる範囲は指定できません。
- 予約アドレスの存在 — 各サブネットの先頭数アドレスはクラウド側が予約(ルータ・DNS 用など)するため、利用可能数は単純な 2^n より少なくなります。
関連リンク
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- VPC
- サブネット(クラウド)
- セキュリティグループ
- クラウドロードバランサ
- VPNゲートウェイ・専用線接続
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?