システムアーキテクチャ

ネットワーク設計の基礎 ― VPC/サブネット/CIDR ― 生成AI時代のアーキテクチャ超入門

ネットワーク設計の基礎 ― VPC/サブネット/CIDR ― 生成AI時代のアーキテクチャ超入門

本記事について

当サイトを閲覧いただきありがとうございます。 本記事はシリーズ『生成AI時代のアーキテクチャ超入門』の「システムアーキテクチャ」カテゴリ第7弾として、ネットワーク設計について解説する記事です。

ネットワーク設計はサーバー間・外部接続の物理/論理骨組みを決める作業で、一度決めたCIDR(IPアドレス帯)は実質変更できません。本記事ではCIDR設計・サブネットの3層構造・マルチAZ構成・外部接続方式を解説し、「広めに・余裕を持って・社内標準に沿って」引くための判断基準を提示します。

このカテゴリの他の記事

システムアーキテクチャ概要 ― 最初に決める骨組み ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-system-overview/アプリケーション形態の選び方 ― Web/Native/Hybrid ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-system-application-types/デプロイモデルの選び方 ― オンプレ/クラウド/ハイブリッド ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-system-deployment-model/クラウドベンダーの選び方 ― AWS / Azure / GCP ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-system-cloud-vendor/実行環境の選び方 ― VM/コンテナ/サーバーレス/Wasm ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-system-runtime/OS選定の考え方 ― Linux/Windows/UNIX とARM ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-system-os/データストアの配置方針 ― RDBMS/NoSQL/キャッシュ/検索の組合せ ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-system-datastore/セキュリティ基盤の全体地図 ― 多層防御と最小権限 ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-system-security/監視と運用の全体設計 ― Observability3本柱と4黄金シグナル ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-system-monitoring/BCP/DR設計の鉄則 ― RPO・RTO・3-2-1ルール ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-system-bcp/クラウドコスト管理(FinOps)― 設計で守る・運用で磨く ― 生成AI時代のアーキテクチャ超入門senkohome.com/arch-intro-system-cost/

引き直せない間取り図

他システムとの接続時にIP帯が重複すれば接続できず、後から変えようとすれば全リソースの再構築コースに入ります。新設のVPCに適当な 10.0.0.0/16 を割り当てて進めた結果、3ヶ月後に社内オンプレと同じレンジを使っていたことが判明し、VPCごと作り直しになった。という事例は業界でよく聞く失敗パターンです。

ネットワーク設計は、プロジェクト1週目に確定させる領域です。ここを仮決めで進めると、本格構築に入った段階で全てが崩れます。「とりあえず動かしてから考える」が最も通用しない層だと考えておくべきです。

ネットワークは「一度決めたら変えられない間取り図」です。最初の設計がすべてになります。

基本用語

ネットワーク設計でよく出てくる用語を整理しておきます。AWSを例に挙げていますが、AzureやGCPでもほぼ同じ概念があります。

用語意味
VPCVirtual Private Cloud、仮想的な自社専用ネットワーク
サブネットVPC内を小さなIPレンジに分けたもの
CIDR10.0.0.0/16 形式のIPアドレス範囲表記
ルートテーブル通信の経路(次にどこへ送るか)を定義
IGWInternet Gateway、インターネットとの接続点
NAT GWプライベートサブネットから外向き通信を代行
セキュリティグループリソース単位のファイアウォール

これらを組み合わせて「外部と通信できる区画」「できない区画」を作り分けるのが基本です。

CIDRの設計原則

CIDR(Classless Inter-Domain Routing)は、IPアドレスの範囲指定表記です。/16/24 などの数字は「ネットワーク部のビット数」を示し、数字が小さいほど広いアドレス範囲を持ちます。

VPC全体は /16(65,536アドレス) で広く確保するのが鉄板です。これをサブネット /24(256アドレス)単位で分割していきます。

VPC           10.0.0.0/16   ← 65,536アドレス(全体)
├─ Public-a   10.0.0.0/24   ← 256アドレス
├─ Public-c   10.0.1.0/24
├─ Private-a  10.0.10.0/24
├─ Private-c  10.0.11.0/24
├─ DB-a       10.0.20.0/24
└─ DB-c       10.0.21.0/24

他社・他拠点・社内他システムとのCIDR重複は厳禁です。VPN接続やVPCピアリングで繋ぐ際にIPが重複していると接続できません。社内で使うIP帯の標準がある場合は必ず従い、個人判断で 10.0.0.0/16 を使うのは地雷です。

CIDRは広めに(/16 相当)、社内標準と矛盾しないか確認してから確定します。

サブネットの3層構造

サブネットは、VPC内を用途別の区画に分けるための単位です。Public(公開)・Private(非公開)・Isolated(隔離)の3層構造で設計するのが現代の標準です。

flowchart TB
    NET([インターネット]) --> PUB
    subgraph VPC["VPC"]
        subgraph PUB["Public Subnet"]
            ALB[ALB / NAT GW / 踏み台]
        end
        subgraph PRIV["Private Subnet"]
            APP[アプリサーバ / ワーカー]
        end
        subgraph ISO["Isolated Subnet"]
            DB[(DB / 内部バッチ)]
        end
        ALB --> APP
        APP --> DB
        APP -.NAT経由のみ.-> NET
    end
    classDef pub fill:#fee2e2,stroke:#dc2626;
    classDef priv fill:#fef3c7,stroke:#d97706;
    classDef iso fill:#dbeafe,stroke:#2563eb;
    class PUB,ALB pub;
    class PRIV,APP priv;
    class ISO,DB iso;
分類用途インターネット接続
Public SubnetALB・NAT GW・踏み台サーバー直接接続可
Private Subnetアプリサーバー・ワーカーNAT経由で外向きのみ
Isolated SubnetDB・内部バッチ外部接続一切なし

この3層構造により、「DBはインターネットから到達不能」という基本を守ります。DBを直接インターネットに晒すのは、あらゆるセキュリティ基準が禁じる行為です。これを破ると大規模情報漏洩の温床になります。

DBはIsolatedサブネット。外部から直接アクセスできない構造が基本です。

マルチAZ構成

AZ(Availability Zone)とは、同一リージョン内で物理的に分離されたデータセンターのことです。AZ単位で停電・ネットワーク障害が起きる可能性があるため、複数のAZに同じ構成を配置して冗長化するのがマルチAZ設計です。

Region: ap-northeast-1(東京)
├─ AZ-a: Public-a / Private-a / DB-a
└─ AZ-c: Public-c / Private-c / DB-c

ALB(Application Load Balancer、AWSのアプリ層ロードバランサー)はマルチAZで自動的にトラフィックを振り分け、RDS(AWSのマネージドDB)のMulti-AZ構成はプライマリとスタンバイを別AZに配置して数十秒で自動フェイルオーバーします。本番は原則マルチAZ。ここを惜しむと1つのAZ障害でサービス全断になります。

本番は必ずマルチAZです。1AZ構成は開発・検証限定と割り切ります。

ルーティング

ルートテーブルは、サブネット内のリソースが「どの宛先にはどこを経由して送るか」を定義するテーブルです。サブネットごとに異なるルートテーブルを割り当てることで、公開・非公開の挙動を分けます。

送信元サブネット宛先次ホップ
Public0.0.0.0/0(インターネット)IGW
Private0.0.0.0/0NAT GW
IsolatedVPC内のみlocal

Public → IGW・Private → NAT GW が定石です。NAT GWは「プライベートサブネットから外向きに通信はしたいが、外からは触らせたくない」ケース用ですが、時間課金+データ転送課金で意外と高く付くので、必要性を見極めて使います。

セキュリティグループとNACL

ファイアウォールにはセキュリティグループ(SG)と Network ACL(NACL)の2種類があります。役割が違うため、使い分けが重要です。

項目Security GroupNetwork ACL
適用対象リソース単位(EC2等)サブネット単位
ステートフル◎(戻り通信は自動許可)×
拒否ルール不可(許可のみ)
主な用途通常のファイアウォールサブネット全体の粗い制御
評価順全ルール評価ルール番号順

通常のファイアウォール制御は全てSGで行うのが本命です。NACLは「特定IPをサブネット全体から遮断したい」などのサブネット全体への一括制御で使います。新規構築時はNACLはデフォルト(全許可)のまま、SGで制御するのが大半です。

基本はSGで十分です。NACLはサブネット単位の特殊制御でのみ使います。

外部との接続方式

クラウドVPCと外部(社内拠点・他クラウド・インターネット)をつなぐ方法は複数あります。セキュリティ・帯域・コストで使い分けます。

方式用途特徴
IGW + パブリックIPインターネット公開最もシンプル・公開用
NAT GWプライベートから外向き外からの直接アクセス不可
VPN社内拠点 ⇔ クラウドインターネット経由・暗号化
専用線(Direct Connect等)高信頼・大帯域・低遅延月額数十万円〜高価
VPC PeeringVPC同士を直接接続同一/別リージョン
Transit Gateway多VPC/マルチアカウントのハブ大規模組織向け

中小規模の社内連携はVPNで十分です。金融系・大企業では専用線を引き、インターネットを経由しない閉域網を構築するのが定石です。

PrivateLink(プライベート接続)

PrivateLink は、AWS・Azure・GCPなどのクラウドサービスにインターネットを経由せず直接接続する仕組みです。S3・RDS・SSM・CloudWatchなど、通常はパブリック経由でアクセスするサービスも、VPC Endpoint を作ることでVPC内から閉域通信できます。

サービス名称
AWSVPC Endpoint / PrivateLink
AzurePrivate Endpoint
GCPPrivate Service Connect

金融・医療・官公庁などセキュリティが厳しい業界では、主要なAWSサービスは全てVPC Endpoint経由にするのが定石です。

DNS設計

DNS(Domain Name System)は、ドメイン名をIPアドレスに変換する仕組みです。クラウドでは外部公開用のパブリックDNSと、社内専用のプライベートDNSを使い分けます。

種別用途
パブリックDNSサービス公開用(api.example.com等)
プライベートDNS社内名前解決(Route 53 Private Hosted Zone)
スプリットホライゾン内部と外部で同じドメインを別解決

マイクロサービス間通信では「サービス名で名前解決」できる設計(Service Discovery)が重要です。サービスのIPを直接指定すると、スケール時に接続が切れる地雷を踏みます。内部向けDNSを経由してIPの変化を吸収する構造が鉄則です。

内部通信はIPではなくDNSで。サービス追加・削除に強くなります。

帯域とレイテンシ

ネットワーク設計では帯域(スループット)とレイテンシ(遅延)を意識する必要があります。クラウドでは通信距離により以下の目安があります。

通信範囲遅延目安料金傾向
同一AZ内1ms未満無料(多くの場合)
同一リージョン・別AZ1〜2ms低コスト
同一国・別リージョン10〜30ms中コスト
国を跨ぐ(日米など)100ms以上高コスト

DBとアプリサーバーは同一AZに置くのが原則です。AZを跨ぐと遅延もコストも増えます。またリージョン跨ぎのデータ転送は有償のケースが多く、コスト試算時に見落とすと後で請求書を見て青くなる部分です。

組織規模別のネットワーク構成

ネットワーク設計は「広めに・最初から」が鉄則ですが、フェーズごとの現実的な構成には差があります。

フェーズVPC数CIDR方針外部接続典型コスト
個人・MVP1/16(10.0.0.0/16)IGW + 単一 NAT GW〜5,000円/月
スタートアップ1〜2/16(用途別に別VPC検討)IGW + マルチAZ NAT GW〜5万円/月
中規模 SaaS3〜10環境別(prod/stg/dev分離)Transit Gateway + VPN5〜30万円/月
大企業50〜数百事業部・環境・国別の階層管理Direct Connect + TGW + VPC Lattice数百万円〜

NAT Gatewayは時間課金+通信料で、1つで月 1.5〜3万円 + データ転送料が乗る見えにくいコスト源です。マルチAZで1AZごとに置くのが本番の鉄則ですが、開発環境まで同じ構成にすると無駄が大きいので、環境別にNAT構成を変えるのが実務の工夫です。

NAT GWはAZごと。1つだけにすると、そのAZ障害で他AZも外向き通信が止まります。

ネットワーク設計の鬼門・禁じ手

ここで事故が起きる・運用が崩壊する典型パターンを整理します。後から直しにくい項目を優先して回避します。

禁じ手なぜダメか
CIDRを /24(256アドレス)で始めるサブネット分割で即枯渇。最初は /16 で広く取るのが鉄則
社内標準CIDRを確認せずVPCを作るVPN・Direct Connect接続時にIP重複で接続不能、VPC作り直し
セキュリティグループを 0.0.0.0/0 で管理画面ポートに開放Botに数時間で発見され、攻撃対象に
DBをPublicサブネットに配置あらゆるセキュリティ基準でNG。Isolatedサブネット必須
NAT GWを1 AZのみに配置そのAZ障害で他AZの外向き通信も全停止
内部通信でIPアドレス直指定スケール時に接続が切れる。Service Discovery / DNS経由が必須
PrivateLink / VPC Endpointを使わず全てNAT経由データ転送料が跳ね上がる。S3・DynamoDB等はGateway Endpoint(無料)が本命
セキュリティグループで戻り通信を意識してEgressルール自作SGはステートフルで戻り通信は自動許可。明示ルールで制御するのはNACLの仕事

CIDR設計は「一度決めたら実質変更不能」という性質を持つので、設計前に社内ネットワーク管理部門・既存他システムのCIDR一覧を必ず確認します。「後から広げられる」と思って /24 で始めた結果、VPC ごと作り直す事例が今も繰り返されています。

CIDRとSGは最初の設計ですべて決まる。後からの変更コストが最大の領域です。

AI時代の視点

AI駆動開発が前提になると、ネットワーク設計はTerraform/CloudFormationでコード化できるか」が絶対条件になります。VPC・サブネット・ルートテーブル・SG・NACLをGUIのマネジメントコンソールで作るのは、AI時代にはもう時代遅れです。

コード化すれば差分レビュー・自動テスト・再現・ロールバックが可能になり、AIがネットワーク変更のPull Requestを作成し、人間がレビューして承認するワークフローが標準化します。

AI時代に有利AI時代に不利
Terraform/CDK(AWS Cloud Development Kit、AWSのIaCフレームワーク)等でネットワーク全定義マネジメントコンソールでの手動設定
ネットワーク図をコードから自動生成手書きのVisio図で構成管理
Policy as Code(ポリシーをコードで定義し自動チェック)で変更ガードレール口頭伝承の変更ルール
Transit Gateway等も宣言的に記述VPC間接続を都度手動設定

「CIDRを一度決めたら変更できない」という本質的な制約はAI時代でも変わりません。ただし、どの構成が適切かをAIが提案し、コードで検証するというサイクルで、初期設計ミスの発見が早まるメリットがあります。

AI時代のネットワーク設計は「コードで全て管理」が前提です。コンソール操作は消えていきます。

よくある勘違い

  • CIDRは/24くらいで十分 → 本当はこう:/24は256アドレスで、サブネット1個分です。AZ数×3層構造で必ず足りなくなります。最初は**/16で広く取る**のが鉄則で、「小さく始めて広げる」ができない領域
  • SGで全部 0.0.0.0/0 でもAWS側が守ってくれる → 本当はこう:AWSは「許可した通信」は通します。全開放すれば全開放のまま外部に晒される。責任共有モデル(クラウド事業者と利用者で守る範囲を明確に分ける考え方。インフラはAWS、設定・データはユーザー責任)でユーザー側の制御範囲
  • NAT GWはコスト削減のために1つで足りる → 本当はこう:1AZにしか置かないと、そのAZ障害で他AZまで外向き通信が止まります。マルチAZの意味がなくなる甘い選択
  • DBもPublicサブネットに置けばアクセスが楽 → 本当はこう:DBをインターネットから到達可能にするのは、あらゆるセキュリティ基準でアウト。必ずIsolatedサブネットに閉じ込める

CIDR重複でVPNが繋がらない日(業界事例)

大企業のクラウド移行案件で、若手エンジニアがVPC10.0.0.0/16 を割り当てて構築を進めていたところ、社内の別部署がオンプレで同じレンジを長年使っていた。という事例が少なくありません。いざ Direct Connect / VPN で繋ぐ段階になって初めて重複が発覚し、VPCを別レンジで作り直し、EC2・RDS・ALB 含む全リソースを再構築した、という報告が業界では繰り返し聞かれます。

知り合いのインフラエンジニアから「3ヶ月かけて作ったVPCを来月までに全部作り直せと言われた」という話を聞いたこともあります。

教訓は、「CIDRは社内の物理インフラと同じ地図上にある」ということです。自分のVPCだけを見て決めていい数字ではなく、設計前にネットワーク管理部門や社内標準ドキュメントを必ず確認する習慣が、後からの数ヶ月の損失を防ぎます。

IPは世界と繋がった瞬間に、あなた1人では決められなくなるのです。

決めるべきこと — あなたのプロジェクトでの答えは?

以下の項目について、あなたのプロジェクトの答えを1〜2文で言語化してみてください。曖昧なまま着手すると、必ず後から「なぜそう決めたんだっけ」が問われます。

  • VPC CIDR(他システムと重複しないか)
  • 利用するAZ数と配置
  • サブネット分類と各CIDR
  • NAT Gatewayの必要性と配置
  • 外部接続方式VPN / 専用線 / PrivateLink)
  • セキュリティグループ設計方針
  • DNS / 名前解決の方針
  • 社内他システムとの連携方式

よくある失敗

  • CIDRを狭く取って後から不足「とりあえず小さめで」/24 で始めると、アプリ追加・AZ拡張・サブネット分割のたびにIPが枯渇。最初は /16 で広めに確保するのが鉄則
  • 他システムとIP帯重複 ― 社内標準を確認せず 10.0.0.0/16 を使うと、VPN接続・VPCピアリング・オンプレ連携の段でIP重複が発覚、接続不能に
  • SGに 0.0.0.0/0 を気軽に開ける ― 開発中に「一時的に」全開放したSGがそのまま本番に残り、DBポートや管理画面が世界中から到達可能に
  • NAT GW 1つを全AZで使う ― コスト削減で1AZだけに置くと、そのAZ障害で他AZのPrivateサブネットからの外向き通信も全停止
  • 内部通信でIP直指定 ― サービス間通信でIPをハードコードすると、スケールアウト・入れ替え・AZ移動のたびに接続エラー

2021年10月4日の Facebook(現 Meta)大規模障害は、BGP(Border Gateway Protocol、インターネット上の経路情報を交換する基幹プロトコル)の設定変更ミスで自社のDNSサーバー群がインターネットから見えなくなり、Facebook・Instagram・WhatsApp が約6時間停止した事件です。社内の入館システムまで同じネットワークに依存しており、エンジニアがデータセンターに入れず復旧に手間取りました。ネットワーク設計ミス1つで企業全体が止まる実例として記憶に残ります。

最終的な判断の仕方

ネットワーク設計の本質は「後から変えられない間取り図をどう決めるか」です。IPアドレス帯(CIDR)は一度決めると実質的に変更不能で、他システムとの重複は接続不能を意味します。そのため最初の問いは「社内標準と矛盾しないか」「10年後も足りる広さか」に置き、迷ったら狭くせず広めに取る。これが原則です。

定石は「広めのCIDR + 3層サブネット(Public/Private/Isolated)+ マルチAZ」で、ここから外れる理由はほぼありません。DBは必ずIsolatedに置き、本番は必ずマルチAZ、中間のNAT GW/PrivateLinkはセキュリティとコストの天秤で決めます。

AI駆動開発の観点では、ネットワークをコード(Terraform等)で管理するのが絶対条件で、GUIコンソール操作で管理するネットワークは今後確実に技術負債化します。

選定の優先順位をまとめると次の通りです。

  1. 社内標準CIDRと既存システムのIP帯を最初に確認(重複厳禁)
  2. 3層サブネット構造(Public/Private/Isolated)をデフォルトとして採用
  3. マルチAZを本番の必須条件にする(NAT GWもAZごとに配置)
  4. 全構成をコード化Terraform/CDK等)し、AIがPR生成できる状態を保つ

「広めに取って、コードで管理する」この2つを最初に守れば、後からの修正コストが劇的に下がります。

まとめ

本記事はクラウドのネットワーク設計について、CIDR・3層サブネット・マルチAZ・外部接続・SG/NACLまで含めて解説しました。如何だったでしょうか。

新規VPC「広めの/16 + 3層サブネット + マルチAZ + コード管理」が鉄板です。CIDRは社内標準と重複しないかを最初に確認、DBは必ずIsolated、NAT GWはAZごと。これを外さなければ大事故は起きません。

次回は「セキュリティ基盤」(システムアーキテクチャ段階で組み込むセキュリティ機能の全体地図)について解説します。

シリーズ目次に戻る → 『生成AI時代のアーキテクチャ超入門』の歩き方

それでは次の記事も閲覧いただけると幸いです。