IPサブネット計算はすべての開発者とインフラエンジニアが理解しなければならない基礎知識です。AWSのVPC設定、社内ネットワークの分割、2台のホスト間の疎通問題のデバッグなど、あらゆる場面でサブネット計算が必要です。このガイドでは、CIDR表記、サブネットマスク、ネットワークパラメーターの計算方法を解説し、オンラインツールで簡単に計算する方法を紹介します。

サブネット分割とは

サブネット(サブネットワーク)はIPネットワークを論理的に分割したものです。大きなIPアドレスブロックを小さなセグメントに分割することで、以下のメリットがあります:

  • 分離 — サブネット内のトラフィックはローカルに留まり、サブネット間のトラフィックはゲートウェイを経由
  • セキュリティ — ファイアウォールとACLでサブネット境界にルールを適用
  • 効率性 — 小さなブロードキャストドメインで不要なトラフィックを削減
  • アドレス管理 — 各セグメントに必要なだけのアドレスを割り当て

CIDR表記の解説

CIDR(クラスレス・ドメイン間ルーティング)はIPアドレスとルーティングプレフィックスを一緒に表現します:

192.168.1.0/24
│           │
└─ ネットワーク └─ プレフィックス長(ビット数)
   アドレス

/24は最初の24ビットがネットワーク部分であることを意味します。残りの8ビットがホスト部分です。これがサブネット内に存在できるホストの数を決定します。

プレフィックス長とホスト数の対応

CIDRサブネットマスク使用可能ホスト数一般的な用途
/8255.0.0.016,777,214大規模ISPブロック
/16255.255.0.065,534企業ネットワーク
/24255.255.255.0254典型的なオフィスLAN
/25255.255.255.128126/24を半分に分割
/26255.255.255.19262小規模セグメント
/27255.255.255.22430VLANセグメント
/28255.255.255.24014小チーム
/29255.255.255.2486ポイントツーポイントリンク
/30255.255.255.2522ルーター間接続
/31255.255.255.2540(特殊)ポイントツーポイント(RFC 3021)
/32255.255.255.2551ホストルート

使用可能ホスト数 = 2^(32 - プレフィックス長) - 2(ネットワークアドレスとブロードキャストアドレスを引く)

主要なサブネットパラメーター

192.168.10.64/26を例にとると:

パラメーター計算方法
ネットワークアドレス192.168.10.64IPとサブネットマスクのAND演算
サブネットマスク255.255.255.19226個の1、6個の0(2進数)
ブロードキャストアドレス192.168.10.127ホストビットをすべて1に設定
最初の使用可能ホスト192.168.10.65ネットワークアドレス + 1
最後の使用可能ホスト192.168.10.126ブロードキャストアドレス - 1
使用可能ホスト数622^6 - 2
ワイルドカードマスク0.0.0.63サブネットマスクの反転

2進数の分析

IP:      11000000.10101000.00001010.01000000  (192.168.10.64)
マスク:  11111111.11111111.11111111.11000000  (255.255.255.192)
ネットワーク: 11000000.10101000.00001010.01000000  (192.168.10.64)
ブロードキャスト: 11000000.10101000.00001010.01111111  (192.168.10.127)

最初の26ビットは固定(ネットワーク部分)、最後の6ビットが可変(ホストスペース)です。

実践的なサブネット設計

AWS VPCの設計

AWSでは各VPCとサブネットにCIDRブロックを指定する必要があります。典型的な3層構成:

VPC:          10.0.0.0/16    (65,536アドレス)
├─ パブリック: 10.0.1.0/24   (254使用可能 — インターネット向け)
├─ プライベート: 10.0.2.0/24 (254使用可能 — アプリ層)
└─ データベース: 10.0.3.0/24  (254使用可能 — RDS、隔離)

AWSは各サブネットに5つのアドレスを予約します(最初の4つ+ブロードキャスト)。/24あたり実際に使用できるのは251個です。

Kubernetes Pod CIDR

K8sクラスターはノード、Pod、Serviceに重複しないCIDRが必要です:

# kubeadm設定スニペット
networking:
  podSubnet: 10.244.0.0/16      # Pod IP
  serviceSubnet: 10.96.0.0/12   # ClusterIPサービス

これらがノードネットワークやVPC CIDRと重複しないことを確認してください。

Dockerカスタムネットワーク

# カスタムブリッジネットワークの作成
docker network create \
  --driver bridge \
  --subnet 172.20.0.0/24 \
  --gateway 172.20.0.1 \
  my-network

docker network lsip routeを使って既存ネットワークとの重複を確認してください。

コードでのサブネット計算

Python(ipaddressモジュール)

Pythonの標準ライブラリはすべてのサブネット計算を処理します:

import ipaddress

net = ipaddress.IPv4Network('192.168.10.64/26', strict=False)

print(net.network_address)    # 192.168.10.64
print(net.broadcast_address)  # 192.168.10.127
print(net.netmask)            # 255.255.255.192
print(net.num_addresses)      # 64
print(list(net.hosts())[:3])  # [192.168.10.65, .66, .67]

# IPがサブネット内にあるか確認
ip = ipaddress.IPv4Address('192.168.10.80')
print(ip in net)  # True

# /28サブネットに分割
for subnet in net.subnets(new_prefix=28):
    print(subnet)
# 192.168.10.64/28
# 192.168.10.80/28
# 192.168.10.96/28
# 192.168.10.112/28

Goのnetパッケージ

import "net"

_, ipNet, err := net.ParseCIDR("192.168.10.64/26")
if err != nil {
    panic(err)
}

fmt.Println(ipNet.IP)   // 192.168.10.64(ネットワークアドレス)
fmt.Println(ipNet.Mask) // ffffffc0(16進マスク)

// 包含チェック
testIP := net.ParseIP("192.168.10.80")
fmt.Println(ipNet.Contains(testIP))  // true

プライベートIPアドレス範囲

以下の範囲は内部使用のために予約されています(RFC 1918):

範囲CIDRサイズ
10.0.0.0 – 10.255.255.25510.0.0.0/8約1,677万アドレス
172.16.0.0 – 172.31.255.255172.16.0.0/12約104万アドレス
192.168.0.0 – 192.168.255.255192.168.0.0/1665,536アドレス

内部インフラには常にプライベート範囲を使用してください。パブリックIPはインターネット上でルーティングされますが、プライベートIPはルーティングされません。

よくあるサブネット計算ミス

予約アドレスの忘れ: すべてのサブネットはネットワークアドレスとブロードキャストアドレスの2つを失います。/29は合計8アドレスですが、使用できるのは6個のみです。

サブネットの重複: 10.0.1.0/2410.0.0.0/16は重複しています。/24のすべてのアドレスは/16にも含まれ、ルーティングが曖昧になります。

ホスト範囲のオフバイワン: 最初の使用可能ホストはネットワーク+1、最後はブロードキャスト-1です。/24のホストは.1から.254であり、.0から.255ではありません。

CIDRの境界整合: サブネットはプレフィックス長に対して整合した境界から始まる必要があります。10.0.0.1/24は有効なCIDRではありません(ホストビットが設定されている)。正しい形式は10.0.0.0/24です。

オンラインサブネット計算機の使い方

ZeroTool IPサブネット計算機を試す →

任意のIPv4アドレスとCIDR表記を入力して即座に取得:

  • ネットワークアドレスとブロードキャストアドレス
  • サブネットマスクとワイルドカードマスク
  • 最初と最後の使用可能ホスト
  • 総ホスト数と使用可能ホスト数
  • 全フィールドの2進数表現

登録不要、広告なし、ブラウザで動作。VPC設計の素早い確認、ネットワークデバッグ、アーキテクチャレビュー中のサブネット割り当てに役立ちます。

IPv4サブネットを即座に計算 →