CIDR 表記の読み方: サブネット・マスク・ホスト数

CIDR 表記の読み方を整理します。/n の意味、プレフィックスからネットマスクへの変換、利用可能なホスト数の計算、ネットワークアドレスとブロードキャストアドレスの求め方、そして /31 と /32 の特殊ケースまで扱います。

192.168.1.0/24 のような CIDR ブロックは、1 つの文字列に 2 つの事実を 詰め込んでいます。開始アドレスとプレフィックス長です。スラッシュの後ろの 数字は、ほとんどの人が読み違える唯一の部分です。それはホスト数でも、 アドレスでも、掛け合わせる 2 のべき乗でもありません。ネットワーク部として 固定される先頭ビットの個数です。残りはすべて、その 1 つの数字から導かれ ます。CIDR (Classless Inter-Domain Routing) は RFC 4632 で定義されて います。

/n の意味

IPv4 アドレスは 32 ビットです。プレフィックス長 /n は、先頭 n ビットが ネットワークを識別し、ブロック内のすべてのアドレスで同じであることを表し、 残りの 32 − n ビットはホストビットとして自由に変化します。

192.168.1.0/24 は先頭 24 ビットを固定します。最初の 3 オクテット (192.168.1) がロックされ、最後のオクテットがホスト部となって、取りうる 256 個の値を動きます。プレフィックスが大きいほど固定ビットが多く、ホスト ビットが少なく、ブロックが小さくなります。/25/24 の 2 倍ではなく 半分のサイズです。ここで多くの人がつまずきます。プレフィックスを上げると、 アドレス空間は下がります。

プレフィックスからネットマスクへ

ドット 10 進のネットマスクは、プレフィックスを 32 ビットに書き下した ものにすぎません。n 個の 1 の後に 32 − n 個の 0 が続き、4 つの オクテットにまとめられます。

プレフィックス ネットマスク ホストビット 全アドレス
/8 255.0.0.0 24 16,777,216
/16 255.255.0.0 16 65,536
/24 255.255.255.0 8 256
/25 255.255.255.128 7 128
/26 255.255.255.192 6 64
/27 255.255.255.224 5 32
/28 255.255.255.240 4 16
/29 255.255.255.248 3 8
/30 255.255.255.252 2 4
/31 255.255.255.254 1 2
/32 255.255.255.255 0 1

中途半端なオクテット値は、ビットを左から埋めた結果です。/26 は最後の オクテットからホストビットを 2 つ奪い、6 ビットが固定されます。11000000 = 192 です。/30 はホストビットが 2 つだけ残ります。11111100 = 252 です。 ネットマスクのオクテットを手で求めるなら、固定ビットを左から 1 として 書き、変換してください。128・192・224・240・248・252・254・255 が、部分的な オクテットが取りうる唯一の値です。

利用可能なホスト数の計算

ブロックの全アドレスは 2^(32 − n) です。通常のサブネットでは、そのうち 2 つがホストアドレスとして使えません。最初がネットワークアドレス、最後が ブロードキャストアドレスです。したがって利用可能なホストは 2^(32 − n) − 2 です。

/242^8 = 256 全体、256 − 2 = 254 利用可能。典型的な家庭・ 小規模オフィスのサブネットです。.0 がネットワーク、.255 が ブロードキャスト、.1 から .254 までがホスト分です。

/262^6 = 64 全体、64 − 2 = 62 利用可能。/24/26 ブロック 4 つにきれいに分かれます (64 + 64 + 64 + 64 = 256)。各ブロックに 62 個の利用可能アドレスがあります。1 つのサブネットを 4 つの VLAN に 切り分けるときによく使います。

/302^2 = 4 全体、4 − 2 = 2 利用可能。4 つのアドレスのうち 2 つだけが使え、伝統的に両端だけにアドレスが必要な 2 台のルータ間の ポイントツーポイントリンクに使います。「無駄になる」2 つのアドレス (ネットワーク + ブロードキャスト) がブロックの半分であり、だからこそ /31 が存在します。

ネットワークアドレスとブロードキャストアドレス

ネットワークアドレスはホストビットがすべて 0 のブロックで、ブロードキャスト アドレスはホストビットがすべて 1 です。2 つが一緒になって範囲を囲みます。

ある IP がどのブロックに入るかを求めるには、アドレスをネットマスクで マスクします。192.168.1.137/26 を見てみましょう。ブロックサイズは 2^6 = 64 なので、ブロックは最後のオクテットで 64 の倍数から始まります。 .0.64.128.192 です。アドレス .137.128.191 の 間に入るので、次のようになります。

  • ネットワークアドレス: 192.168.1.128
  • 最初の利用可能ホスト: 192.168.1.129
  • 最後の利用可能ホスト: 192.168.1.190
  • ブロードキャストアドレス: 192.168.1.191
  • 次のブロックの開始: 192.168.1.192

近道として、当該オクテットのブロックサイズは 256 − (ネットマスクの オクテット) です。/26 なら 256 − 192 = 64 で、64 アドレスごとに ブロックが始まることを確認できます。ネットワークアドレスは、ホストの オクテット以下でブロックサイズの最大の倍数です。

/31/32: 特殊ケース

/31 はホストビットが 1 つなので 2^1 = 2 全アドレスです。通常の ルールどおりなら、ネットワークとブロードキャストを引いた後に利用可能 ホストが 0 になり、役に立ちません。RFC 3021 は /31 をポイントツー ポイントリンク用に再定義します。両方のアドレスがホストアドレスとして 使え、ネットワークやブロードキャストを予約しません。これにより /30 が 無駄にする 2 つのアドレスを取り戻し、これをサポートするハードウェアの ルータ間リンクで今や標準となっています。利用可能な 2 つのアドレスが、 ちょうどリンクの 2 つの端点です。

/32 はホストビットが 0 なので 2^0 = 1 アドレスです。ブロック自体が 単一のホストです。/32 はホストルート、1 台のマシンだけにマッチする ファイアウォールルール、ループバックアドレス、アクセスリストで見かけます。 203.0.113.5/32 はちょうど 203.0.113.5 だけを意味します。

この 2 つは「ネットワークとブロードキャストで 2 つ引く」ルールがもう 当てはまらない場所です。一般式で覆おうとせず、例外として覚えてください。

プライベート範囲

3 つの IPv4 範囲が RFC 1918 によってプライベート用に予約されており、 公開インターネットではルーティングされません。

CIDR 範囲 アドレス数
10.0.0.0/8 10.0.0.010.255.255.255 16,777,216
172.16.0.0/12 172.16.0.0172.31.255.255 1,048,576
192.168.0.0/16 192.168.0.0192.168.255.255 65,536

172.16.0.0/12 ブロックが、人々が最もよく間違えるものです。プレフィックス が /16 ではなく /12 なので、172.16 から 172.31 までを含みます。 172.16 1 つではなく、/16 ブロック 16 個です。3 番目のオクテットの ニブルの固定ビット 4 つが、なぜ 255 ではなく 31 で止まるのかの理由です。

IPv6 CIDR についてのメモ

IPv6 も同じスラッシュ表記を使いますが、アドレスが 32 ビットではなく 128 ビットなので、ホスト数の計算はスケールがまったく変わります。典型的な エンドサイトのサブネットは /64 で、ホストビットが 64 個残ります。 2^64、単一サブネットにおよそ 1,800 京個のアドレスです。/64 の「利用 可能ホスト」を計算する人はいません。サブネット内のアドレス枯渇が計画上の 懸念にならないほど大きな数であり、IPv6 にはそもそも引くべきブロードキャスト アドレスもありません。

知っておくとよい慣習として、先頭 64 ビットはネットワークプレフィックス (ISP やレジストリが多くは /48/56 として割り当て) で、下位 64 ビット はインターフェース識別子です。IPv6 のサブネット化は通常、IPv4 のように きつきつのブロックからホスト数を絞り出すことではなく、/64 より上の プレフィックスをどう切るかという問題です。

手作業 vs ツール

上の計算は、ブロックがなぜその範囲を持つのかを教えてくれるので理解する 価値があります。しかし日々の作業で、任意のブロックのネットワークアドレス・ ブロードキャスト・利用可能範囲・ホスト数を求めるのは、障害対応中の午前 2 時に頭の中でやるより、ツールに任せたほうがよい固定幅の 2 進演算です。 私たちの CIDR 計算機192.168.1.137/26 の ようなブロックを受け取り、ネットワークアドレス・ブロードキャスト・最初と 最後の利用可能ホスト・全数と利用可能数・ドット 10 進のネットマスクを 一度に返し、/31/32 の特殊ケースも含みます。

手で解くときは、3 つだけをはっきり覚えてください。プレフィックスはホスト ではなくネットワークビットを数えること、全アドレスは 2^(32 − n) である こと、そして 2 つ引くルールは /31/32 を除いてどこにでも適用される ことです。残りはすべて、その 3 つの事実の上での単純な計算です。