2026年5月24日
2026年5月24日
サブネットマスクの正しい計算方法(ネットワーク・ブロードキャスト・ホスト数の求め方)
サブネットマスクの計算は、「IPアドレスとマスクを2進数で AND するとネットワークアドレス、ホスト部をすべて1にするとブロードキャストアドレス、ホスト部のビット数からホスト数」という3つの操作に集約できます。この記事では、2進数で考える正攻法と、暗算で済ませる早見のコツを例題つきで説明し、最後にコマンドで答え合わせする方法と、実務でつまずきやすい点を整理します。
サブネットマスクが表しているもの
IPv4 アドレスは32ビットで、前半が「どのネットワークか」を表すネットワーク部、後半が「そのネットワーク内のどの機器か」を表すホスト部です。サブネットマスクは、その境目を示す32ビットの値で、ネットワーク部を1、ホスト部を0で表します。
たとえば 255.255.255.192 を2進数にすると次のようになります。
255 .255 .255 .192
11111111 .11111111 .11111111 .11000000
先頭から1が26個並んでいるので、ネットワーク部は26ビット、ホスト部は6ビットです。これを /26 と書くのが CIDR 表記です。
サブネットマスクは「1が先頭から連続し、そのあと0が続く」形でなければなりません。そのため、1オクテットの値として現れるのは 0, 128, 192, 224, 240, 248, 252, 254, 255 の9種類だけです。255.255.255.100 のような値は、設定画面に入力できても正しいマスクではありません。
2進数で計算する(正攻法)
例題として 192.168.10.77、マスク 255.255.255.192(/26)を使います。最初の3オクテットはマスクが255なのでそのまま残り、計算が必要なのは第4オクテットだけです。
1. ネットワークアドレス(IPとマスクのAND)
77 = 01001101
192 = 11000000
AND = 01000000 = 64
ネットワークアドレスは 192.168.10.64 です。AND は「両方1のときだけ1」なので、ホスト部が0に消えて、ネットワーク部だけが残ります。
2. ブロードキャストアドレス(ホスト部をすべて1に)
ネットワークアドレスのホスト部6ビットを1にします。
01000000 → 01111111 = 127
ブロードキャストアドレスは 192.168.10.127 です。
3. ホスト数と使える範囲
ホスト部が6ビットなので、アドレスは 2の6乗 = 64個あります。そのうちネットワークアドレスとブロードキャストアドレスの2つは機器に割り当てられないため、使えるのは62個です。範囲は 192.168.10.65 〜 192.168.10.126 になります。
式にすると、ホスト部のビット数を h として「使えるホスト数 = 2のh乗 − 2」です。
暗算で求めるコツ(ブロックサイズ法)
慣れてくると2進数を書かずに済ませられます。手順は次のとおりです。
- マスクのうち255でも0でもないオクテット(注目オクテット)を探す
- 256 からその値を引く。これがブロックサイズ(1つのサブネットの幅)
- 注目オクテットの値を、ブロックサイズの倍数で区切る。IPの値以下で最大の倍数がネットワークアドレス、次の倍数から1を引いた値がブロードキャスト
先ほどの例では、注目オクテットは192なので、256 − 192 = 64。0, 64, 128, 192 と区切ると、77 は 64〜127 の区間に入ります。ネットワーク .64、ブロードキャスト .127 と、2進数の計算と一致します。
第3オクテットにまたがる例
172.16.45.200、マスク 255.255.240.0(/20)の場合、注目オクテットは第3オクテットの240です。
- ブロックサイズ: 256 − 240 = 16
- 16の倍数で区切ると 32〜47 の区間に45が入る
- ネットワークアドレス:
172.16.32.0 - ブロードキャストアドレス:
172.16.47.255(第3オクテットが47、第4オクテットは255) - ホスト部: 32 − 20 = 12ビット → 2の12乗 − 2 = 4,094台
第4オクテットを忘れて 172.16.47.0 をブロードキャストとしてしまうのが典型的な間違いです。注目オクテットより右側は、ネットワークアドレスでは0、ブロードキャストでは255になります。
よく使うマスクの早見表
| CIDR | サブネットマスク | アドレス数 | 使えるホスト数 |
|---|---|---|---|
| /24 | 255.255.255.0 | 256 | 254 |
| /25 | 255.255.255.128 | 128 | 126 |
| /26 | 255.255.255.192 | 64 | 62 |
| /27 | 255.255.255.224 | 32 | 30 |
| /28 | 255.255.255.240 | 16 | 14 |
| /29 | 255.255.255.248 | 8 | 6 |
| /30 | 255.255.255.252 | 4 | 2 |
例外として、ルーター同士をつなぐ1対1の回線では /31(2アドレスとも使用、RFC 3021)、単一のホストを指すときは /32 が使われます。
コマンドで答え合わせする
手計算の結果は、ツールで確認する習慣をつけると設定ミスを防げます。Python の標準ライブラリなら環境を問わず使えます。
import ipaddress
net = ipaddress.ip_interface("192.168.10.77/26").network
hosts = list(net.hosts())
print("network ", net.network_address) # 192.168.10.64
print("broadcast", net.broadcast_address) # 192.168.10.127
print("netmask ", net.netmask) # 255.255.255.192
print("range ", hosts[0], "-", hosts[-1], len(hosts)) # 192.168.10.65 - 192.168.10.126 62
Linux では ipcalc 192.168.10.77/26 でも確認できますが、ディストリビューションによって別の実装が入っていて、表示項目や書式が異なります。
実務でつまずきやすい点
- 同じセグメントで機器ごとにマスクが違う: 片方が /24、もう片方が /25 になっていると、一部の相手とだけ通信できない、という分かりにくい症状になります。疎通がおかしいときは、IPアドレスだけでなくマスクも並べて確認します。
- デフォルトゲートウェイがサブネットの外にある: ゲートウェイは自分と同じサブネット内のアドレスでなければなりません。計算した使用可能範囲に入っているかを確かめます。
- クラウドの予約アドレス: AWS の VPC ではサブネットごとに先頭4つと末尾1つの計5アドレスが予約され、使える数は上の表より少なくなります。予約の扱いはサービスごとに異なるため、各クラウドのドキュメントで確認してください(2026年10月現在)。
- ワイルドカードマスクとの混同: ルーターの ACL などで使うワイルドカードマスクは、サブネットマスクのビットを反転した値(/26 なら
0.0.0.63)です。入力欄がどちらを求めているかを確認します。
まとめ
- ネットワークアドレスは IP とマスクの AND、ブロードキャストはホスト部をすべて1にした値
- 使えるホスト数は「2のホストビット数乗 − 2」。/31 と /32 は例外
- 暗算は「256 − 注目オクテット」でブロックサイズを出し、その倍数で区切る
- 注目オクテットより右は、ネットワークでは0、ブロードキャストでは255になる
- 手計算は Python の
ipaddressなどで答え合わせし、マスクの不一致やゲートウェイの位置も確認する