概要
AWS 上でリソースを運用する際、ネットワーク構成はセキュリティと可用性の基盤です。EC2 インスタンスや RDS データベースなどのリソースは、Amazon VPC(Virtual Private Cloud)内に配置され、VPC のネットワーク設定によって通信範囲やアクセス制御が決まります。
Amazon VPC は、AWS クラウド内に論理的に分離された仮想ネットワークを作成するサービスです。IP アドレス範囲の定義、サブネットの作成、ルートテーブルやゲートウェイの設定を通じて、オンプレミスのネットワークと同様のネットワーク構成を AWS 上に構築できます。
本記事では、VPC の基本概念を理解し、パブリックサブネットとプライベートサブネットを持つ VPC を構築してインターネット接続の設定まで体験します。

この記事のメリット
- VPC、サブネット、ルートテーブル、ゲートウェイの関係を理解できる
- パブリックサブネットとプライベートサブネットの違いと使い分けを把握できる
- VPC をゼロから作成し、インターネット接続可能なネットワークを構築する手順を習得できる
- CIDR ブロックの設計の基本的な考え方を学べる
執筆者とキャラクター紹介
執筆者:土肥(とひ)
株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

クラウドおさる
クラウドおさるはじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。



基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。



猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。
技術解説



とひさん、今日は VPC について教えてください!AWS のリソースを動かすにはネットワークが必要って聞いたんですけど、VPC ってどういうものなんですか?
Amazon VPC は、AWS クラウド内に論理的に分離された仮想ネットワークを提供するサービスだよ。各 VPC は他の VPC やインターネットから独立していて、利用者が完全にネットワーク構成を制御できるんだ。



自分専用のネットワークを AWS 上に作れるってことですね。VPC を作るときにはどんな要素を設定するんですか?
VPC を構築する際の主な設定要素をまとめるとこうなるよ。
| 要素 | 説明 |
|---|---|
| CIDR ブロック | VPC の IP アドレス範囲(例: 10.0.0.0/16) |
| サブネット | VPC 内の IP アドレスの区画(AZ ごとに配置) |
| ルートテーブル | トラフィックの転送先を定義するルール |
| インターネットゲートウェイ | VPC とインターネットの間の通信を可能にするゲートウェイ |
| NAT ゲートウェイ | プライベートサブネットからインターネットへのアウトバウンド通信を可能にする |



CIDR ブロックっていうのが最初に出てきましたけど、これは何ですか?
CIDR(Classless Inter-Domain Routing)ブロックは、VPC やサブネットに割り当てる IP アドレスの範囲を指定するものだよ。VPC の CIDR ブロックは /16(65,536 アドレス)から /28(16 アドレス)の範囲で指定できるんだ。一般的には /16 で VPC を作成して、サブネットに /24(256 アドレス)を割り当てるパターンが多く使われるね。ちなみに各サブネットでは先頭 4 つと末尾 1 つの計 5 アドレスを AWS が予約しているから、/24 で実際に使えるのは 251 アドレスになるよ。
| CIDR | アドレス数 | 用途例 |
|---|---|---|
10.0.0.0/16 | 65,536 | VPC 全体 |
10.0.1.0/24 | 256 | パブリックサブネット |
10.0.2.0/24 | 256 | プライベートサブネット |





なるほど、大きな範囲を決めてから小さく区切っていくんですね!サブネットについてもう少し詳しく教えてもらえますか?
サブネットは、VPC の CIDR ブロックをさらに分割した IP アドレスの区画だよ。各サブネットは 1 つの AZ(アベイラビリティーゾーン)に属するんだ。サブネットは用途に応じてパブリックサブネットとプライベートサブネットに分類されるよ。
| 種類 | ルートテーブルの特徴 | 主な用途 |
|---|---|---|
| パブリックサブネット | インターネットゲートウェイへのルートを持つ | Web サーバー、ALB、踏み台サーバー |
| プライベートサブネット | インターネットゲートウェイへのルートを持たない | データベース、アプリケーションサーバー |



パブリックとプライベートで役割が違うんですね。パブリックサブネットがインターネットに繋がるには、インターネットゲートウェイが必要ってことですか?
そのとおり。インターネットゲートウェイ(IGW)は、VPC 内のリソースとインターネットの間の双方向通信を可能にするコンポーネントなんだ。パブリックサブネットのルートテーブルに IGW へのルートを追加して、リソースにパブリック IP アドレスを割り当てることで、インターネットからのアクセスが可能になるよ。



じゃあプライベートサブネットに置いたリソースは、インターネットに一切出られないんですか?ソフトウェアのアップデートとかはどうするんでしょう…?
そこで使うのが NAT ゲートウェイだね。NAT ゲートウェイは、プライベートサブネット内のリソースがインターネットにアウトバウンド通信を行えるようにするコンポーネントだよ。ポイントは、インターネットからプライベートサブネットへのインバウンド通信は許可されないということ。ソフトウェアアップデートの取得や外部 API の呼び出しなど、プライベートサブネットからのアウトバウンド通信が必要な場合に使うんだ。



外に出ることはできるけど、外から入ってこられないようにできるんですね。安心です。ところで、さっきから出てくるルートテーブルっていうのは何ですか?
ルートテーブルは、サブネット内のトラフィックがどこに転送されるかを定義するルールの集合だよ。各サブネットに 1 つのルートテーブルが関連付けられるんだ。パブリックサブネットとプライベートサブネットで設定が違うから、それぞれ見てみよう。パブリックサブネットのルートテーブル例はこうなるよ。
| 送信先 | ターゲット |
|---|---|
10.0.0.0/16 | local |
0.0.0.0/0 | インターネットゲートウェイ |
そしてプライベートサブネットのルートテーブル例はこうだね。
| 送信先 | ターゲット |
|---|---|
10.0.0.0/16 | local |
0.0.0.0/0 | NAT ゲートウェイ |



0.0.0.0/0 の向き先がインターネットゲートウェイか NAT ゲートウェイかで、パブリックかプライベートかが決まるんですね!すごくわかりやすいです!
実践
前提条件
- リージョン:
ap-northeast-1(東京) - IAM ユーザーまたはロールに VPC 関連リソースの操作権限があること
作成するリソース一覧
| リソース種別 | リソース名 | 用途 |
|---|---|---|
| VPC | basic-vpc | 仮想ネットワーク |
| パブリックサブネット | basic-public-subnet-1a | インターネット接続可能なサブネット(AZ: ap-northeast-1a) |
| プライベートサブネット | basic-private-subnet-1a | インターネットから直接アクセスできないサブネット(AZ: ap-northeast-1a) |
| インターネットゲートウェイ | basic-igw | VPC とインターネットの接続 |
| ルートテーブル | basic-public-rt | パブリックサブネット用 |
ステップ1: VPC を作成する
- AWS マネジメントコンソールにログインし、リージョンが
ap-northeast-1(東京)であることを確認します - 上部の検索バーに
VPCと入力し、表示された「VPC」を選択します - 左側ナビゲーションの「お使いの VPC」を選択し、「VPC を作成」をクリックします
- 「VPC の設定」の「作成するリソース」で「VPC のみ」を選択します
- 以下の内容を入力します
- 名前タグ – オプション:
basic-vpc - IPv4 CIDR ブロック:
IPv4 CIDR の手動入力を選択し、「IPv4 CIDR」に10.0.0.0/16を入力 - IPv6 CIDR ブロック:
IPv6 CIDR ブロックなし - テナンシー:
デフォルト - VPC 暗号化コントロール:
なし(デフォルトのまま。有効にすると追加料金が発生します) - 「タグ」セクションには名前タグの内容から
Nameタグが自動で追加されるので、そのままにします


- 画面右下の「VPC を作成」をクリックします
- 「VPC が正常に作成されました」と表示され、詳細画面で VPC ID と IPv4 CIDR
10.0.0.0/16を確認します


ステップ2: サブネットを作成する
パブリックサブネットの作成
- 左側ナビゲーションの「サブネット」を選択し、「サブネットを作成」をクリックします
- 「VPC」セクションの「VPC ID」で作成した
basic-vpcを選択します。「関連付けられた VPC CIDR」に10.0.0.0/16が表示されます - 「サブネットの設定」の「サブネット 1 (1 個中)」に以下の内容を入力します
- サブネット名:
basic-public-subnet-1a - アベイラビリティーゾーン:
アジアパシフィック (東京) / apne1-az4 (ap-northeast-1a) - IPv4 VPC CIDR ブロック:
10.0.0.0/16(デフォルトのまま) - IPv4 サブネット CIDR ブロック:
10.0.1.0/24(右端に256 IPsと表示されます) - 「タグ – オプション」にはサブネット名から
Nameタグが自動で追加されるので、そのままにします


- 画面右下の「サブネットを作成」をクリックします
プライベートサブネットの作成
- サブネット一覧画面に戻り、再度「サブネットを作成」をクリックします
- 以下の内容を入力します(その他の項目はデフォルトのままにします)
- VPC ID:
basic-vpcを選択 - サブネット名:
basic-private-subnet-1a - アベイラビリティーゾーン:
アジアパシフィック (東京) / apne1-az4 (ap-northeast-1a) - IPv4 サブネット CIDR ブロック:
10.0.2.0/24 - 「サブネットを作成」をクリックします
- サブネット一覧の検索ボックスに
basicと入力し、2 つのサブネットがAvailableになっていることを確認します


ステップ3: インターネットゲートウェイを作成して VPC にアタッチする
- 左側ナビゲーションの「インターネットゲートウェイ」を選択し、「インターネットゲートウェイの作成」をクリックします
- 以下の内容を入力します
- 名前タグ:
basic-igw - 「インターネットゲートウェイの作成」をクリックします


- 作成完了画面の上部に「次のインターネットゲートウェイが作成されました」というバナーが表示され、状態が
Detachedであることを確認します - バナー内の「VPC へアタッチ」をクリックします(詳細画面の「アクション」→「VPC にアタッチ」からも同じ画面に進めます)
- 「使用可能な VPC」の検索ボックスをクリックし、候補から
basic-vpcの VPC ID を選択します - 「インターネットゲートウェイのアタッチ」をクリックします


- 状態が
Attachedに変わったことを確認します
ステップ4: パブリックサブネット用のルートテーブルを作成する
- 左側ナビゲーションの「ルートテーブル」を選択し、「ルートテーブルを作成」をクリックします
- 以下の内容を入力します
- 名前:
basic-public-rt - VPC:
basic-vpcを選択 - 「ルートテーブルを作成」をクリックします


ステップ5: ルートテーブルにインターネットへのルートを追加する
- 作成した
basic-public-rtの詳細画面で、下部の「ルート」タブを選択します。10.0.0.0/16→localのルートだけが存在します - 「ルートを編集」をクリックします
- 「ルートを追加」をクリックすると「ルート 2」が追加されるので、以下を入力します
- 送信先:
0.0.0.0/0 - ターゲット: ドロップダウンから
インターネットゲートウェイを選択し、その下に表示される検索ボックスでbasic-igw(igw-xxxx)を選択 - 「変更を保存」をクリックします
- 「ルート」タブに
0.0.0.0/0→igw-xxxxのルートがアクティブで追加されたことを確認します


ステップ6: ルートテーブルをパブリックサブネットに関連付ける
basic-public-rtの詳細画面で、「サブネットの関連付け」タブを選択します- 「サブネットの関連付けを編集」をクリックします
- 「利用可能なサブネット」の一覧で
basic-public-subnet-1aにチェックを入れます。下の「選択されたサブネット」に対象のサブネットが表示されます - 「関連付けを保存」をクリックします


ステップ7: パブリックサブネットの自動パブリック IP 割り当てを有効にする
パブリックサブネットに起動したインスタンスが自動的にパブリック IP アドレスを取得するように設定します。
- 左側ナビゲーションの「サブネット」を選択します
- 一覧で
basic-public-subnet-1aを選択し、右上の「アクション」→「サブネットの設定を編集」をクリックします - 「IP アドレスの自動割り当て設定」の「パブリック IPv4 アドレスの自動割り当てを有効化」にチェックを入れます
- その他の項目はデフォルトのままにして、画面右下の「保存」をクリックします
- サブネットの詳細画面で「パブリック IPv4 アドレスの自動割り当て」が
はいになっていることを確認します


ステップ8: ネットワーク構成を確認する
作成したリソースの構成を確認します。
- 左側ナビゲーションの「お使いの VPC」を選択し、
basic-vpcの VPC ID をクリックして詳細画面を開きます - 詳細の下にある「リソースマップ」タブを選択すると、VPC 内のリソース(サブネット、ルートテーブル、ネットワーク接続)の関係が線でつながれて表示されます


パブリックサブネット basic-public-subnet-1a がインターネットゲートウェイ basic-igw を経由してインターネットに接続可能であること、プライベートサブネット basic-private-subnet-1a にはインターネットへのルートがないことが確認できます。
まとめ
- Amazon VPC は、AWS クラウド内に論理的に分離された仮想ネットワークを提供するサービスである
- CIDR ブロックで IP アドレスの範囲を定義し、サブネットで VPC をさらに区画分けする
- パブリックサブネットはインターネットゲートウェイへのルートを持ち、プライベートサブネットは外部からの直接アクセスを遮断する
- ルートテーブルでトラフィックの転送先を制御し、サブネットに関連付けて使用する
- NAT ゲートウェイを使うとプライベートサブネットからのアウトバウンド通信のみ許可できる











