はじめに
AWSでVPCを作るとき、最初に出てくる 10.0.0.0/16 や /24 をなんとなく選んでいないでしょうか。
VPCは、あとからアプリやDBを置くためのネットワークの土台です。最初のCIDR、サブネット、ルートテーブルを雑に決めると、後からIPアドレスが足りない、オンプレミスとIPが重なる、どのサブネットが外へ出られるのか分からない、という状態になりやすいです。
この記事では、VPC設計の入口として、CIDR、サブネット、ルートテーブル、セキュリティグループを「現場で説明できる言葉」にして整理します。
この記事でわかること
- VPCとサブネットをどう分けて考えるか
- CIDRを決めるときに何を見るか
- パブリック/プライベートサブネットを名前ではなくルートで判断する考え方
- セキュリティグループとNACLの役割の違い
- 最初のVPC設計で確認したいチェックリスト
先に結論
VPC設計では、まず次の順番で考えると迷いにくいです。
| 順番 | 決めること | 見るポイント |
|---|---|---|
| 1 | VPC CIDR | 既存ネットワークと重複しないか、将来拡張できるか |
| 2 | AZとサブネット | public/private/dataなど役割ごとに分けるか |
| 3 | ルートテーブル |
0.0.0.0/0 がIGW/NAT/なしのどれか |
| 4 | セキュリティグループ | どこからどのポートを許可するか |
| 5 | ログと運用 | Flow Logs、到達性確認、台帳管理をどうするか |
VPCは「作れたか」より、「後から説明できるか」が大事です。
前提
- 仕様確認日: 2026-07-28
- 対象読者: AWS VPCを初めて設計する人、資格学習中の人
- 扱う範囲: VPC、CIDR、サブネット、ルートテーブル、セキュリティグループの入口
- 扱わない範囲: Transit Gateway、VPN、PrivateLink、Network Firewallなどの詳細設計
用語の短い説明
| 用語 | 短い説明 |
|---|---|
| VPC | AWS上に作る自分用の仮想ネットワーク |
| CIDR | IPアドレス範囲を表す書き方。例: 10.0.0.0/16
|
| Subnet | VPCの中をAZや用途ごとに分けた小さなネットワーク |
| Route Table | 通信をどこへ流すかを決める表 |
| IGW | Internet Gateway。VPCをインターネットへつなぐ入口 |
| NAT Gateway | private subnetから外へ出る通信を中継するサービス |
| SG | Security Group。ENIに付く仮想ファイアウォール |
| NACL | Network ACL。サブネット単位で効くステートレスな制御 |
CIDRは後から変えにくい土台
VPCを作るときはIPv4 CIDRを指定します。AWS公式では、VPCのIPv4 CIDRブロックには指定できるサイズ範囲があります。上限や細かな条件は変わる可能性があるため、作業前に公式ドキュメントを確認します。
実務でまず見るのは、次の3つです。
- 社内LAN、オンプレミス、他VPC、顧客環境と重複しないか
- 将来のAZ追加、環境追加、マネージドサービスのIP消費を見込めるか
- サブネットを用途ごとに切り出す余白があるか
よくある失敗は、VPC全体のCIDRを決めたあと、最初のサブネットで大きく取りすぎることです。
# 悪い例: VPC全体と同じ範囲を1つのサブネットに割り当てる
VPC: 10.0.0.0/16
Subnet: 10.0.0.0/16
# よい例: 用途とAZごとに分ける余白を残す
VPC: 10.20.0.0/16
public-a: 10.20.0.0/24
public-c: 10.20.1.0/24
private-app-a: 10.20.10.0/24
private-app-c: 10.20.11.0/24
private-db-a: 10.20.20.0/24
private-db-c: 10.20.21.0/24
パブリック/プライベートは名前ではなくルートで見る
public-subnet という名前を付けても、それだけではインターネットに出られるわけではありません。
見るべきなのはルートテーブルです。
| サブネットの性格 | 典型的なルート | 説明 |
|---|---|---|
| public subnet | 0.0.0.0/0 -> Internet Gateway |
インターネット向け経路がある |
| private subnet | 0.0.0.0/0 -> NAT Gateway |
外へは出るが、外から直接入れない設計にしやすい |
| isolated/data subnet | 外向きの 0.0.0.0/0 なし |
DBなど、外部通信をかなり絞る |
設計レビューでは、サブネット名ではなく「このサブネットのデフォルトルートはどこを向いているか」を確認します。
セキュリティグループとNACLを混同しない
初心者がつまずきやすいのが、セキュリティグループとNACLの違いです。
| 項目 | Security Group | Network ACL |
|---|---|---|
| 効く場所 | ENI単位 | サブネット単位 |
| 状態管理 | ステートフル | ステートレス |
| ルール | 許可ルール中心 | 許可と拒否を番号順に評価 |
| よく使う場面 | EC2やALBやRDSの通信制御 | サブネット単位の追加制御 |
通常は、まずセキュリティグループで「誰から、どのポートへ」を絞ります。NACLは、サブネット単位で追加の境界を作りたいときに検討します。
小さなVPCテンプレート例
以下は、VPCと2つのpublic subnetを作る概念例です。実運用ではprivate subnet、NAT Gateway、ログ、タグ、命名、ルート設計を追加します。
AWSTemplateFormatVersion: '2010-09-09'
Description: Minimal VPC example for learning CIDR and public subnets
Parameters:
VpcCidr:
# 既存ネットワークと重複しないCIDRを指定する
Type: String
Default: 10.20.0.0/16
Resources:
SampleVpc:
Type: AWS::EC2::VPC
Properties:
CidrBlock: !Ref VpcCidr
EnableDnsHostnames: true
EnableDnsSupport: true
Tags:
- Key: Name
Value: sample-vpc
InternetGateway:
Type: AWS::EC2::InternetGateway
AttachGateway:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId: !Ref SampleVpc
InternetGatewayId: !Ref InternetGateway
PublicSubnetA:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref SampleVpc
AvailabilityZone: !Select [0, !GetAZs '']
CidrBlock: 10.20.0.0/24
MapPublicIpOnLaunch: true
PublicRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref SampleVpc
DefaultPublicRoute:
Type: AWS::EC2::Route
DependsOn: AttachGateway
Properties:
RouteTableId: !Ref PublicRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref InternetGateway
PublicSubnetARouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref PublicSubnetA
RouteTableId: !Ref PublicRouteTable
構文だけ確認するなら、まず validate-template を使います。
# 実リソースを作る前にテンプレート構文だけ確認する
aws cloudformation validate-template \
--template-body file://sample-vpc.yml
実務で使うチェックリスト
- VPC CIDRは既存ネットワークと重複していないか
- public/private/dataなど用途ごとにサブネットを分けたか
- AZごとの冗長性を考えたか
-
public subnetの
0.0.0.0/0はIGWを向いているか - private subnetの外向き通信にNAT Gatewayが必要か
- DB用サブネットに不要な外向き経路がないか
- セキュリティグループは送信元とポートを説明できるか
- 将来ALB、RDS、EKS、VPC EndpointでIPが足りなくならないか
参考・確認先
- VPC CIDR blocks
- Subnets for your VPC
- Subnet route tables
- Control traffic to your AWS resources using security groups
- Amazon VPC quotas
関連記事
- AWSインフラ工程を5ステップで整理する 要件定義・設計・実装・検証
- AWS構成図をテンプレートで作る手順(今後公開予定)
- CloudFormation前編|ステージと本番がズレる理由と、IaCで拾う「設計の地図」(YAML・スタック・疎結合)
まとめ
- VPCはAWSネットワークの土台で、CIDR設計は後から効いてくる
- パブリック/プライベートはサブネット名ではなくルートテーブルで判断する
- セキュリティグループとNACLは効く場所と状態管理が違う
- 最初の設計では、将来のIP消費と接続先の重複を必ず見る
おわりに
まずCIDR、サブネット、ルートの3点を押さえると、VPC設計の会話がかなりしやすくなります。
Wealthy Designでは、Webシステム開発、クラウド活用、AIを使った業務改善に取り組んでいます。
会社の取り組みは、会社サイトにまとめています。
https://wealthy-design.com/