ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Scratch 作品の公開方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?