モードでIPv4/IPv6を選び、IPアドレスとプレフィックス長を入力してください。ネットワークアドレス・ホスト数・サブネットマスクなどをまとめて計算し、ビット構造の図も表示します。
このページでできること
- IPアドレスとプレフィックス長(例:192.168.1.0 /24)を入れるだけで、ネットワークアドレス・ブロードキャストアドレス・使用可能なホストIPの範囲がその場でわかります
- 総ホスト数・使用可能ホスト数・サブネットマスク・ワイルドカードマスク・CIDR表記・整数ID・16進IDまで、まとめて計算します
- IPアドレスの32ビットを「ネットワーク部」と「ホスト部」に色分けしたビット構造の図で、サブネットのしくみが目で見て理解できます
- IPv4モードとIPv6モードを切り替えられます。IPv6ではネットワーク・アドレス範囲・総アドレス数(\(2^{128-\text{プレフィックス長}}\))を計算します
- 式のやさしい解説・Excel/Googleスプレッドシート/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
この計算は何の役に立つ?
大きな組織では、1つのIPネットワークを部署ごと・拠点ごとの小さなサブネットに分けて運用します。「営業部に最大60台つなぎたいなら、使用可能ホスト数が62になる /26(\(2^{32-26}-2 = 62\))を割り当てる」というように、必要な台数からプレフィックス長を決めます。
サブネット計算は、ネットワーク管理者・インフラエンジニアが毎日のように使う、設計の基礎になる計算です。
家庭用ルーターの管理画面によく出てくる「192.168.1.0/24」「サブネットマスク 255.255.255.0」は、まさにこの計算の世界です。/24 なら使用可能ホスト数は254なので、スマホ・PC・テレビなどを合計254台までつなげる、と読み取れます。
機器がつながらないときに「IPアドレスの範囲(ネットワーク)が合っているか」を確認するのにも役立ちます。
クラウド上に自分専用のネットワーク(AWSのVPCなど)を作るとき、「このVPCは 10.0.0.0/16、その中のサブネットは 10.0.1.0/24」のように、CIDR表記でアドレス範囲を指定します。範囲が重なると通信できないため、ネットワークアドレスとホスト数を正しく見積もる必要があります。
クラウドエンジニアにとって、サブネット計算は環境構築の入り口になる必須スキルです。
基本情報技術者試験や、ネットワークの国際資格CCNAなどでは、「あるIPアドレスとサブネットマスクから、ネットワークアドレス・ブロードキャスト・使用可能ホスト数を求めよ」という問題が繰り返し出題されます。
2進数のAND・ORとべき乗という、このページの4つの式がそのまま得点源になります。途中式とビット構造の図で、手を動かして練習できます。
「このサブネットからの通信だけ許可する」といったファイアウォールやアクセス制御リスト(ACL)の設定では、許可・拒否する相手をCIDR表記(例:192.168.10.0/24)でまとめて指定します。ネットワークアドレスと範囲を正しく計算できないと、意図せず通信を止めたり、逆に穴を開けてしまったりします。
セキュリティの現場で、範囲を過不足なく指定するための土台になる計算です。
式
用語・記号の解説
記号
| \(N\) | エヌ | ネットワークアドレス。そのネットワークの先頭(ホスト部が全て0)のアドレスで、ネットワーク自体を指す名前として使います。 |
| \(B\) | ビー | ブロードキャストアドレス。そのネットワークの末尾(ホスト部が全て1)のアドレスで、ネットワーク内の全員に一斉送信するときに使います。 |
| \(W\) | ダブリュー | ワイルドカードマスク。サブネットマスクの0と1を反転したもの。ホスト部が1で並び、ブロードキャストを求めるときやアクセス制御で使います。 |
| \(p\) | ピー | プレフィックス長。「/24」の「24」の部分で、ネットワーク部が何ビットあるかを表します。(英語の prefix より) |
| \(H\) | エイチ | 総ホスト数。そのネットワークに入るアドレスの総数で、\(H = 2^{32-p}\) です。(英語の host より) |
| \(U\) | ユー | 使用可能ホスト数。実際に機器へ割り当てられるアドレスの数で、総数からネットワークアドレスとブロードキャストの2つを引いた値です。 |
| \(\land\) | ろんりせき アンド | 論理積(AND)。2つのビットが「どちらも1のときだけ1」になる演算。ネットワークアドレスを求めるのに使います。 |
| \(\lor\) | ろんりわ オア | 論理和(OR)。2つのビットが「どちらかが1なら1」になる演算。ブロードキャストアドレスを求めるのに使います。 |
用語
| サブネット | さぶねっと | 大きなIPネットワークを、いくつかの小さなネットワークに区切った一つ一つのこと。部署ごと・拠点ごとにネットワークを分ける(サブネット化する)ことで、管理や安全性を高められます。 |
| サブネットマスク | さぶねっとますく | IPアドレスのうち「どこまでがネットワーク部で、どこからがホスト部か」を示す32ビットの値。ネットワーク部が1、ホスト部が0で並びます(例:255.255.255.0)。 |
| プレフィックス長 | ぷれふぃっくすちょう | ネットワーク部のビット数。「/24」のように書き、サブネットマスクと同じ情報をより短く表したものです。 |
| CIDR | サイダー しーあいでぃーあーる | クラスに縛られず、プレフィックス長で自由にネットワークを区切る方式(Classless Inter-Domain Routing)。「192.168.1.0/24」のようなスラッシュ付きの表記で表します。今のインターネットの標準です。 |
| ネットワークアドレス | ねっとわーくあどれす | そのネットワークの先頭のアドレス(ホスト部が全て0)。個々の機器には割り当てず、ネットワークそのものを指す名前として使います。 |
| ブロードキャストアドレス | ぶろーどきゃすとあどれす | そのネットワークの末尾のアドレス(ホスト部が全て1)。ネットワーク内の全機器へ同時に送信するための特別なアドレスです。 |
| ワイルドカードマスク | わいるどかーどますく | サブネットマスクのビットを反転した値。ホスト部が1で並び、ブロードキャストの計算やルーターのアクセス制御で使われます。 |
| オクテット | おくてっと | IPv4アドレスをピリオドで区切った1つ分(8ビット=0〜255)のこと。192.168.1.0 なら「192」「168」「1」「0」がそれぞれ1オクテットです。 |
| プライベートIPアドレス | ぷらいべーとあいぴーあどれす | 家庭や社内など、組織の内側だけで使うために予約されたIPアドレス(10.0.0.0〜10.255.255.255・172.16.0.0〜172.31.255.255・192.168.0.0〜192.168.255.255)。インターネット上ではそのままでは使えません。反対に世界で通用するものをパブリックIPアドレスと呼びます。 |
| IPクラス (クラスフル) |
あいぴーくらす | CIDRが広まる前に使われていた、先頭の数(第1オクテット)でネットワークの大きさを区分する古い考え方(クラスA・B・C…)。今は使われませんが、用語として残っているためこのページでも表示しています。 |
| IPv4 | あいぴーぶいふぉー | 32ビット(約43億通り)のアドレス方式で、最も広く使われています。このページが扱うのもIPv4です。 |
| IPv6 | あいぴーぶいしっくす | 128ビットで、事実上ほぼ無限にアドレスを作れる新しいアドレス方式。IPv4のアドレス不足を解消するために作られました。 |
| ビット | びっと | 0か1のどちらかを表す情報の最小単位。IPv4アドレスは32ビット、IPv6アドレスは128ビットで構成されます。 |
前提として理解しておくといいこと
このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
| 2進数と10進数(高校 情報Ⅰ・基本情報技術者試験) |
|
| べき乗・指数(中学1年) |
|
| 論理演算 AND・OR(高校 情報Ⅰ) |
|
| ビットとバイト(高校 情報Ⅰ) |
|
Excelで計算する方法
| プレフィックス長 p | 24 |
| ホスト部のビット数 (32−p) | =32-B1 |
| 総ホスト数 | =2^B2 |
| 使用可能ホスト数 | =MAX(B3-2,0) |
| プレフィックス長 p | 24 |
| サブネットマスクの整数値 | =(2^32)-(2^(32-B1)) |
| 第1オクテット | =INT(B2/16777216) |
| 第2オクテット | =INT(MOD(B2,16777216)/65536) |
| 第3オクテット | =INT(MOD(B2,65536)/256) |
| 第4オクテット | =MOD(B2,256) |
2つ目の表は、サブネットマスクを4つのオクテット(0〜255)に分けて求めます。B2でマスク全体を整数として計算し、B3〜B6で256で割った商・余りを使ってオクテットごとに取り出しています。/24 なら 255.255.255.0 になります。
Googleスプレッドシートで計算する方法
| プレフィックス長 p | 24 |
| ホスト部のビット数 (32−p) | =32-B1 |
| 総ホスト数 | =2^B2 |
| 使用可能ホスト数 | =MAX(B3-2,0) |
| プレフィックス長 p | 24 |
| サブネットマスクの整数値 | =(2^32)-(2^(32-B1)) |
| 第1オクテット | =INT(B2/16777216) |
| 第2オクテット | =INT(MOD(B2,16777216)/65536) |
| 第3オクテット | =INT(MOD(B2,65536)/256) |
| 第4オクテット | =MOD(B2,256) |
Pythonで計算する方法
import ipaddress
ip = "192.168.10.130" # IPアドレス
prefix = 24 # プレフィックス長(/24 の 24)
net = ipaddress.ip_network(f"{ip}/{prefix}", strict=False)
total = net.num_addresses # 総ホスト数 = 2 ** (32 - prefix)
usable = max(total - 2, 0) # 使用可能ホスト数(/31・/32 は 0)
print(f"ネットワークアドレス: {net.network_address}")
print(f"ブロードキャスト: {net.broadcast_address}")
print(f"サブネットマスク: {net.netmask}")
print(f"ワイルドカードマスク: {net.hostmask}")
print(f"総ホスト数: {total}")
print(f"使用可能ホスト数: {usable}")
数式記述言語(LaTeX等)での書き方(コピペ可)
N = IP ∧ mask
N = \mathrm{IP} \land \mathrm{mask}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>N</mi>
<mo>=</mo>
<mi>IP</mi>
<mo>∧</mo>
<mi>mask</mi>
</mrow>
</math>
N = IP ^^ mask
BitAnd[ip, mask]
N := Bits:-And(ip, mask);
N = bitand(ip, mask);
N = IP ∧ mask
B = N ∨ W
B = N \lor W
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>B</mi>
<mo>=</mo>
<mi>N</mi>
<mo>∨</mo>
<mi>W</mi>
</mrow>
</math>
B = N vv W
BitOr[network, wildcard]
B := Bits:-Or(network, wildcard);
B = bitor(network, wildcard);
B = N ∨ W
H = 2^(32 − p)
H = 2^{32 - p}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>H</mi>
<mo>=</mo>
<msup>
<mn>2</mn>
<mrow><mn>32</mn><mo>−</mo><mi>p</mi></mrow>
</msup>
</mrow>
</math>
H = 2^(32 - p)
2^(32 - p)
H := 2^(32 - p);
H = 2^(32 - p);
H = 2^(32-p)
U = H − 2
U = H - 2
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>U</mi>
<mo>=</mo>
<mi>H</mi>
<mo>−</mo>
<mn>2</mn>
</mrow>
</math>
U = H - 2
H - 2
U := H - 2;
U = H - 2;
U = H - 2
ChatGPT に聞いて計算してもらう方法
あなたはネットワークの計算アシスタントです。次の計算を、必ずPython(標準ライブラリの ipaddress モジュール)を実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。 IPv4アドレス 192.168.10.130 をプレフィックス長 /24 で計算し、次を求めてください。 1. ネットワークアドレス 2. ブロードキャストアドレス 3. サブネットマスクとワイルドカードマスク 4. 総ホスト数と使用可能ホスト数 計算に使ったコードと、実行結果の数値を示してください。
計算ドリル(演習問題)
このページの4つの式を、自分の手で計算できるようになるための演習問題です(基本情報技術者試験レベル)。
答えと解説は解答ページにあります。
使い方
-
1数値を入力計算したい数値を入力欄に入力します
-
2計算「計算する」ボタンを押します
-
3結果を確認計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
DataChefの特徴
専門知識不要、直感的で簡単な操作
個人情報を登録することなく使用できます
「ダウンロード」押下でファイルを自動削除
クレジット表記不要
商用利用許諾の連絡も不要です
