サブネットマスクの計算方法|IP 範囲とホスト数を実例で確認

  • URLをコピーしました!
目次

はじめに

サブネットマスクの計算は、アドレス設計、機器の設定、通信障害の切り分けで繰り返し必要になります。一方で、2 進数への変換から始める解説では、目の前の IP アドレスがどの範囲に属するのかを確認するまでに時間がかかりがちです。

本記事では、IPv4 の IP アドレスとサブネットマスクから範囲とホスト数を求める手順を、実例と早見表で整理します。計算結果を DHCP の配布範囲や、同一サブネットの判定へつなげる考え方も扱います。

この記事でわかること
  • サブネットマスクと CIDR 表記(/26 など)の対応
  • ネットワークアドレス・ブロードキャストアドレス・利用可能範囲の求め方
  • 総アドレス数と利用可能なホストアドレス数の違い(/31・/32 を含む)
  • 必要なアドレス数からプレフィックス長と DHCP 配布範囲を決める考え方
  • マスクの不一致で送信先の判断が食い違う仕組みと確認の順番

結論として、IPv4 の IP アドレスとサブネットマスク(またはプレフィックス長)がそろえば、ネットワークアドレス・ブロードキャストアドレス・利用可能範囲・ホスト数を計算で求められます。反対に、IP アドレスだけでは設定すべきマスクは一意に決まりません。マスクは設計資料、端末や機器の設定値、DHCP で配布された値などで確認します。

目的に応じて、次の箇所から読み進めることをおすすめします。

計算機は結果を素早く確認するためのツールです。本記事では、その結果がどのように求まるかと、設計や切り分けでの使い方を説明します。

サブネットマスクと CIDR 表記の基本

IPv4 アドレスは 32 ビットで、サブネットマスクはそのうち先頭の何ビットをネットワーク部として扱うかを示します。マスクを 2 進数で見ると、先頭から連続した 1 の部分がネットワーク部、残りの 0 の部分がホスト部です。同じネットワークに属するアドレスは、ネットワーク部の値がすべて一致します。

CIDR 表記の /24 や /26 は、マスクの先頭から続く 1 の数(プレフィックス長)を表します。255.255.255.0 は先頭 24 ビットが 1 のため /24、255.255.255.192 は先頭 26 ビットが 1 のため /26 です。255.255.255.0 と /24 は、表記が違うだけで同じマスクを表します。

/24 では「255 のオクテットがネットワーク部、0 のオクテットがホスト部」と読めますが、これはマスクがオクテットの境目で区切れる場合に限った見方です。/26 のマスク 255.255.255.192 は第 4 オクテットが 11000000 で、1 つのオクテットの途中で区切れています。このため基本はビットで考え、区切りがオクテットの途中にある場合は後述の計算手順を使います。マスクは連続した 1 と 0 で構成されるため、各オクテットに現れる値は 0、128、192、224、240、248、252、254、255 のいずれかです。

プレフィックス長が 1 増えるとホスト部が 1 ビット減り、総アドレス数は半分になります。例えば /24 を /25 に変えると、総アドレス数は 256 から 128 に、通常の LAN で端末に割り当てられるアドレス数は 254 から 126 に減ります。後者は 2 を引いた値のため、厳密には半分ではありません。

IP アドレスの先頭の数値からクラス A・B・C の既定マスクを当てはめる判断は、現在のネットワークには当てはまりません。Cisco のテクニカルノートも、CIDR の導入以降、クラスの呼び方は業界でほとんど使われなくなったと注記しています。

社内 LAN でよく使うプライベート IPv4 アドレスは、RFC 1918 で 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 の 3 つが定められています。172 系でプライベートなのは 172.16.0.0〜172.31.255.255 までで、172.168.x.x のようなアドレスは含まれません。

サブネットマスク早見表

実務で使うことの多いプレフィックス長を、総アドレス数と、通常の IPv4 LAN で利用可能なホストアドレス数に分けて整理します。「区切り位置と幅」は、次の章の計算で使う値です。

CIDRサブネットマスク総アドレス数利用可能なホストアドレス数(通常の LAN)区切り位置と幅
/16255.255.0.065,53665,534第 2・第 3 オクテットの境目
/21255.255.248.02,0482,046第 3 オクテット、幅 8
/22255.255.252.01,0241,022第 3 オクテット、幅 4
/23255.255.254.0512510第 3 オクテット、幅 2
/24255.255.255.0256254第 3・第 4 オクテットの境目
/25255.255.255.128128126第 4 オクテット、幅 128
/26255.255.255.1926462第 4 オクテット、幅 64
/27255.255.255.2243230第 4 オクテット、幅 32
/28255.255.255.2401614第 4 オクテット、幅 16
/29255.255.255.24886第 4 オクテット、幅 8
/30255.255.255.25242第 4 オクテット、幅 4
/31255.255.255.2542対象外(P2P リンクで 2 個とも使用)第 4 オクテット、幅 2
/32255.255.255.2551対象外(単一アドレスの指定)―

利用可能なホストアドレス数は、ネットワークアドレスとブロードキャストアドレスを除いた数です。適したプレフィックス長は、端末数、将来の増設、セグメントの分け方で変わるため、「/26 なら中規模のフロア」のように規模を固定して選ばないことをおすすめします。

/31 と /32 は通常の LAN と分けて考える

/31 は、RFC 3021 で定められた IPv4 のポイントツーポイント(P2P)リンク向けの使い方です。ホスト部が 1 ビットしかないため、2 つのアドレスを両方とも端点のアドレスとして使います。

参考: RFC 3021 — Using 31-Bit Prefixes on IPv4 Point-to-Point Links
“the two addresses above MUST be interpreted as host addresses”
(上記の 2 つのアドレスは、ホストアドレスとして解釈しなければならない)
https://www.rfc-editor.org/rfc/rfc3021

RFC 3021 は P2P リンク以外のインターフェースへの影響を検討しておらず、片側だけが /31 に対応するリンクは正しく動作しない可能性があるとしています。Cisco は Ethernet インターフェースでの設定例を示したうえで、そのセグメントで必要な IPv4 アドレスが 2 つだけであることを確認するよう説明しています。

/32 は 1 つのアドレスだけを表し、ループバックインターフェースや、特定のホストを指す経路などに使われます。/31 の「2」と /32 の「1」は総アドレス数であり、通常の LAN で端末に割り当てる数と同じ意味ではありません。

クラウドの仮想ネットワークでは、ネットワークアドレスとブロードキャストアドレス以外にも、サービス側が予約するアドレスがあります。2^h − 2 をクラウドのサブネットの利用可能数としてそのまま使わず、各サービスのドキュメントで予約数を確認することをおすすめします。

サブネットマスクの計算方法

IP アドレスとマスクから範囲を求めるときは、区切りを含むオクテットに注目すると、2 進数へ変換せずに計算できます。ここでは、ブロック幅(マジックナンバー)を使う方法を示します。

手順
プレフィックス長とマスクを確認する

/n 表記の場合は、早見表で対応するマスクを確認します。ホスト部のビット数は 32 − n です。

手順
区切りオクテットを探す

マスクの中で 255 でも 0 でもないオクテットが、ネットワーク部とホスト部の区切りを含むオクテットです。/16 や /24 のように 255 と 0 だけで構成される場合は、オクテットの境目で区切れています。この場合はブロック幅を求めず、手順 5 へ進みます。

手順
ブロック幅を求める

ブロック幅は「256 − 区切りオクテットのマスク値」です。/26(255.255.255.192)なら 64、/21(255.255.248.0)なら 8 です。

手順
IP アドレスが入る区間を求める

区切りオクテットで 0 からブロック幅の倍数を並べ、IP アドレスの同じオクテットの値を含む区間の先頭と末尾(次の区間の先頭 − 1)を求めます。この値は区切りオクテット 1 つ分の値で、まだ IPv4 アドレス全体ではありません。

手順
アドレス全体を組み立てる

区切りオクテットより上位のオクテットは、IP アドレスの値をそのまま残します。区切りオクテットには手順 4 の先頭(ネットワーク側)と末尾(ブロードキャスト側)を入れ、それより下位のオクテットはネットワーク側を 0、ブロードキャスト側を 255 にします。オクテットの境目で区切れる場合は、255 のオクテットをそのまま残し、0 のオクテットを同じように 0 と 255 にします。利用可能範囲は、ネットワークアドレスの次からブロードキャストアドレスの 1 つ前までです。

ネットワークアドレス(ホスト部がすべて 0)とブロードキャストアドレス(ホスト部がすべて 1)は、通常の LAN では端末に割り当てません。Cisco の解説でも、この点が明記されています。

参考: Cisco — Configure IP Addresses and Unique Subnets for New Users
“host ids of all zeros or all ones are not allowed”
(ホスト部がすべて 0、またはすべて 1 のホスト ID は使用できない)
https://www.cisco.com/c/en/us/support/docs/ip/routing-information-protocol-rip/13788-3.html

計算例 1: 192.168.1.130/26(先頭以外の区間)

/26 のマスクは 255.255.255.192 で、区切りオクテットは第 4 オクテットです。ブロック幅は 256 − 192 = 64 となり、第 4 オクテットは次の 4 つの区間に分かれます。

区間第 4 オクテットの範囲ネットワークアドレスブロードキャストアドレス
10〜63192.168.1.0192.168.1.63
264〜127192.168.1.64192.168.1.127
3128〜191192.168.1.128192.168.1.191
4192〜255192.168.1.192192.168.1.255

192.168.1.130 の第 4 オクテット 130 は、3 番目の区間(128〜191)に入ります。上位の 192.168.1 はそのまま残すため、結果は次のとおりです。

項目値求め方
ネットワークアドレス192.168.1.128区間の先頭 128
ブロードキャストアドレス192.168.1.191次の区間の先頭 192 − 1
利用可能範囲192.168.1.129〜192.168.1.190先頭 + 1 から末尾 − 1 まで
利用可能なホスト数622^(32 − 26) − 2 = 64 − 2

同じ /26 でも、192.168.1.10/26 であれば 10 は 1 番目の区間(0〜63)に入り、ネットワークアドレスは 192.168.1.0、利用可能範囲は 192.168.1.1〜192.168.1.62 です。どの区間に入るかで結果が変わるため、先頭の区間の値を覚えるのではなく、区間を求める手順を使うことをおすすめします。

計算例 2: 172.16.45.200/21(第 3 オクテットで区切る)

/21 のマスクは 255.255.248.0 です。区切りオクテットは第 3 オクテット(248)で、ブロック幅は 256 − 248 = 8 です。第 3 オクテットは 0、8、16、24、32、40、48 …と 8 刻みで区切られ、45 は 40〜47 の区間に入ります。

項目値求め方
ネットワークアドレス172.16.40.0第 3 オクテットは区間の先頭 40、第 4 オクテットは 0
ブロードキャストアドレス172.16.47.255第 3 オクテットは区間の末尾 47、第 4 オクテットは 255
利用可能範囲172.16.40.1〜172.16.47.254先頭 + 1 から末尾 − 1 まで
利用可能なホスト数2,0462^(32 − 21) − 2 = 2,048 − 2

区切りが第 3 オクテットにある場合、その下位の第 4 オクテットは、ネットワーク側で 0、ブロードキャスト側で 255 にします。この範囲では 172.16.40.255 や 172.16.47.0 も、ネットワークアドレスやブロードキャストアドレスではなく、端末に割り当てられるアドレスです。末尾が .0 や .255 かどうかではなく、プレフィックス全体で判定します。

オクテットの境目で区切れる場合(/16・/24)

10.20.30.40/16 のようにマスクが 255.255.0.0 の場合は、ブロック幅を求める必要はありません。上位 2 オクテットの 10.20 をそのまま残し、下位 2 オクテットをネットワーク側で 0.0、ブロードキャスト側で 255.255 にします。結果は、ネットワークアドレス 10.20.0.0、ブロードキャストアドレス 10.20.255.255、利用可能範囲 10.20.0.1〜10.20.255.254(65,534 個)です。/24 も同様に、第 4 オクテットだけを 0 と 255 にします。

ホスト数の計算式

ホスト部のビット数を h(= 32 − プレフィックス長)とすると、総アドレス数は 2^h です。通常の IPv4 LAN で利用可能なホストアドレス数は、ネットワークアドレスとブロードキャストアドレスを除いた 2^h − 2 で求めます。/26 なら h = 6 で総アドレス数 64、利用可能なホストアドレス数 62 です。/31・/32 とクラウドの予約アドレスは、早見表の補足のとおりこの式の対象外です。

補足: 2 進数の AND で見た仕組み

上記の手順は、IP アドレスとマスクの論理積(AND)を 10 進数のまま求める方法です。AND では両方のビットが 1 の位置だけが 1 になるため、ホスト部が 0 になり、ネットワークアドレスが残ります。192.168.1.130/26 の第 4 オクテットで確認すると、次のとおりです。

  10000010  (130)
& 11000000  (192)
-----------
  10000000  (128)

結果の 128 が、ネットワークアドレスの第 4 オクテットです。ホスト部にあたる下位 6 ビットをすべて 1 にした 10111111(191)が、ブロードキャストアドレスの第 4 オクテットになります。

必要なホスト数からサブネットと DHCP 範囲を決める

サブネットの大きさは、端末の台数だけでなく、そのセグメントで消費するアドレスの合計から決めます。ここでは数え方と、決めたサブネットの中で DHCP の配布範囲を分ける考え方を示します。

必要なアドレス数からプレフィックス長を選ぶ

通常の IPv4 LAN では、2^h − 2 が必要なアドレス数以上になる最小の h を選び、プレフィックス長を 32 − h とします。必要なアドレス数には、次のような消費分を含めます。

  • DHCP で配布する端末(PC、スマートフォン、無線 LAN 経由の機器など)
  • デフォルトゲートウェイ(冗長構成では、機器ごとのアドレスと共有する仮想アドレスを使う場合があります)
  • 固定 IP で運用するサーバー、プリンター、ネットワーク機器の管理用アドレス
  • DHCP の予約や、確定している増設・更改の計画分
必要なアドレス数条件を満たす最小の h2^h − 2プレフィックス長
15530/27(/28 の 14 では不足)
50662/26
1007126/25

将来分の余裕は、一律の割合で上乗せするより、増設計画、固定割り当ての台数、機器の更改時に新旧を並行稼働させる期間などを数えて決めることをおすすめします。数えた結果が境界に近い場合は、プレフィックス長を 1 ビット短くする(例: /26 から /25)か、セグメントの分け方を見直します。

VLAN ごとに 1 つのサブネットを割り当てる設計でも、この数え方はそのまま使えます。VLAN の分け方は、VLAN 設計の基礎|トランクと VLAN 間ルーティングの設計指針で解説しています。

設計例: 192.168.10.0/26 で DHCP 配布範囲を分ける

192.168.10.0/26 の利用可能範囲は、192.168.10.1〜192.168.10.62 の 62 個です。この中でゲートウェイと固定割り当てを先に決め、残りを DHCP の動的配布に使う例を示します。

用途範囲個数
ネットワークアドレス192.168.10.0割り当て不可
ゲートウェイ192.168.10.11
固定割り当て(サーバー、プリンター、管理用など)192.168.10.2〜192.168.10.1918
DHCP 動的配布192.168.10.20〜192.168.10.6243
ブロードキャストアドレス192.168.10.63割り当て不可

この例で DHCP が動的に配布できるのは 43 個で、サブネットの利用可能数 62 個とは一致しません。DHCP で配布する端末が 43 台を超える見込みがあれば、固定割り当ての整理か、プレフィックス長の見直しが必要です。

DHCP サーバーでは、ゲートウェイや固定割り当てのアドレスを動的配布の対象から除外します。除外や予約の設定方法、予約アドレスを配布範囲の内側と外側のどちらに置くかは製品によって異なるため、使用する機器の仕様で確認してください。Cisco ルーターでの除外設定と固定割り当ては、Cisco ルーター DHCP サーバー設定|固定 IP 割り当ての落とし穴と対処で解説しています。

同一サブネットの判定とマスク不一致の確認

2 台の機器が同じサブネットにあるかは、先頭のオクテットが似ているかではなく、各アドレスが同じ範囲に入るかで判定します。マスクが食い違うと、機器ごとに判定結果が変わります。

同じサブネットかを範囲で判定する

192.168.1.130/26 の範囲は 192.168.1.128〜192.168.1.191 です。同じ /26 を設定した 192.168.1.190 はこの範囲に入るため同じサブネットですが、192.168.1.194 は 192.168.1.192〜192.168.1.255 の範囲に入るため別のサブネットです。先頭 3 オクテットが同じ 192.168.1 でも、同じサブネットとは限りません。

送信する機器は、自身のアドレスとマスクで宛先が同じネットワークにあるかを判定し、同じであれば宛先へ直接送り、異なればゲートウェイ(ルーター)へ送ります。この基本的な判定は、RFC 1122 の 3.3.1.1(Local/Remote Decision)で定められています。直接送る場合は宛先自身、ルーターへ送る場合はルーターの MAC アドレスを ARP で調べます。詳しくは、ARP とは|IP アドレスと MAC アドレスを結ぶ仕組みとルーター越えの違いで解説しています。

マスクが食い違うと送信先の判断が変わる

同じ L2 セグメントに、A = 192.168.1.10/24 と B = 192.168.1.130/25 が接続されている場合を考えます。ここでは、各機器のインターフェースは 1 つで、特別な個別ルートはない基本的な例とします。

判定する機器自身のマスクで求めた範囲宛先判定送り方
A(192.168.1.10/24)192.168.1.0〜192.168.1.255B(192.168.1.130)範囲内B へ直接送る
B(192.168.1.130/25)192.168.1.128〜192.168.1.255A(192.168.1.10)範囲外デフォルトゲートウェイへ送る

実際の送信では、各機器はルーティングテーブルを参照します。IP アドレスとマスクから作られる直接接続の経路もその一部のため、マスクが違うと経路の内容も変わります。

この例では、A は B を同じネットワークと判断して直接送りますが、B は A を別のネットワークと判断し、応答をゲートウェイへ渡そうとします。その先の動作は、B にゲートウェイが設定されているか、そのゲートウェイが B から到達できるアドレスか、ルーターが A へ転送するか、経路上に通信の状態を追跡するファイアウォールがあるかなどで変わります。このため、片方向だけ届く、応答が戻らない、一部の通信だけ失敗するといった障害が起こり得ます。ルーター経由で結果的に通信できる構成もあるため、マスクの不一致が必ず通信断になるとは限りません。

通信障害を切り分ける順番

マスクを設計値に合わせても、VLAN、経路、フィルタリングに問題があれば通信は回復しません。原因を 1 つに決めつけず、次の順で確認することをおすすめします。

手順
設計値と実際の設定を照合する

各機器の IP アドレス、プレフィックス長、デフォルトゲートウェイを、設計資料や DHCP で配布している値と照合します。Windows では ipconfig /all、Linux では ip addr で、実際に設定されているマスクやプレフィックス長を確認できます。相手の値に合わせるのではなく、設計値に合わせて修正します(参考: Microsoft Learn — ipconfig)。

手順
同じ VLAN / L2 に到達しているか確認する

スイッチポートの VLAN 割り当てや、トランクで許可している VLAN を確認します。マスクが一致していても、異なる VLAN に接続されていれば直接通信できません。

手順
経路とゲートウェイを確認する

行きと戻りの両方向について、端末のゲートウェイ設定と、ルーターが宛先への経路を持っているかを確認します。

手順
フィルタリングを確認する

ACL、ファイアウォール、端末側のファイアウォールで、対象の通信が許可されているかを確認します。

サブネット計算から、IP の仕組みや経路制御まで体系的に学びたい方には、『マスタリングTCP/IP 入門編(第6版)』が関連書籍の候補になります。出版社の目次では、第 4 章「IPプロトコル」、第 5 章「IPに関連する技術」、第 7 章「ルーティングプロトコル(経路制御プロトコル)」を扱っていることを確認できます。
(広告)Kindle 版(Amazon) / 単行本(Amazon)

まとめ

サブネットマスクの計算は、区切りオクテットとブロック幅から IP アドレスが入る区間を求め、アドレス全体を組み立てる手順で整理できます。計算結果は、利用可能範囲の確認だけでなく、DHCP の配布範囲の設計や、同一サブネットの判定にも使えます。

  • IP アドレスとマスクがそろえば、範囲とホスト数を計算で求められる。
  • IP アドレスだけでは、設定すべきマスクは一意に決まらない。
  • 区間の先頭と末尾に、上位と下位のオクテットを補ってアドレスにする。
  • 通常の LAN で使えるのは 2^h − 2 個で、/31・/32 は別の扱い
  • DHCP の配布数は、固定割り当てや除外範囲を考慮して求める。
  • 同一サブネットかは、先頭オクテットではなく範囲で判定する。
  • マスク不一致の切り分けは、設定・VLAN・経路・フィルタの順で確認する。

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次