用語辞典・コマンド・確認ツール

CIDR計算

CIDR計算とは

CIDR(サイダー)計算は、CIDR表記からネットワーク範囲、利用可能なアドレス数などを求める計算です。CIDRはClassless Inter-Domain Routing(クラスレス・インタードメイン・ルーティング)の略で、アドレスとプレフィックス長さを組み合わせます。

プレフィックス長さは先頭からネットワークとして固定して扱うビット数です。残りのホストビットの組み合わせからネットワークアドレス、範囲末尾、総アドレス数を求めます。ただし「利用可能ホスト数」はプロトコルと用途で例外があります。

CIDR計算で分かるのは数学上のアドレスブロックです。そのブロックが自組織へ割り当て済みか、Internetへ経路されるか、DHCPで配布できるか、ファイアウォールで許可されるかは別です。

アドレスビット列をプレフィックス境界で分け、ネットワークブロック・端点・総数を導く通常IPv4、ポイントツーポイント、ホスト経路、IPv6と運用方針を分ける
横一列のアドレスビットタイルをネットワーク側とホスト側へ境界で分け、ネットワークブロック、先頭と末尾、アドレス総数へ展開し、通常IPv4サブネットの両端、二端末ポイントツーポイント、単一ホスト経路、ブロードキャストを持たないIPv6を別パネルにし、結果をルーター、割当データベース、ファイアウォールへ別々に渡すピクトグラム図解
図1IPv4の「総数から2を引く」は通常サブネットの古典的な目安です。/31、/32、特殊用途、IPv6へ一律適用しません。

計算を四段階へ分ける

Parseアドレスとプレフィックスを分ける

IPv4かIPv6か、プレフィックス長さがビット幅内か、アドレス表記が正しいかを検査します。

Maskネットワークビットを固定する

プレフィックス部分を残し、ホスト部分をすべて0にしてネットワーク先頭を求めます。

Rangeホストビットの最小・最大を作る

ホスト部分を0または1へ揃え、ブロックの先頭と末尾を求めます。

Count組み合わせ総数を求める

アドレスビット幅からプレフィックス長さを引いたホストビット数を指数として総数を出します。

Interpretプロトコル上の特殊アドレスを除く

IPv4ブロードキャスト、/31、/32、予約済み用途、IPv6の規則を個別に適用します。

Operate割当・経路・方針を確認

実際の所有範囲、ゲートウェイ、DHCPプール、ACL、オンリンク設定を設計へ反映します。

IPv4は32ビット、IPv6は128ビット

IPv4でプレフィックスが/pならホストビットは32 - p、総アドレス数は2^(32-p)です。IPv6なら128 - pを使います。大きなIPv6ブロックは通常の整数型を越えるため、arbitrary precision計算が必要です。

プレフィックス長はアドレスの区切り位置と一致するとは限りません。IPv4 dotted十進のオクテット境界、IPv6の16進 quartet境界の途中でもプレフィックスを切れます。文字列の桁だけで範囲を決めません。

ネットワークアドレスはホストビットを0へする

アドレスとプレフィックスマスクのbitwise ANDを取るとネットワークアドレスです。IPv4ではプレフィックスマスクをdotted十進へ変換できますが、非連続マスクは通常のCIDRプレフィックスでは表せません。

入力アドレスがネットワーク先頭でなくても、CIDR calculatorは所属ブロックを求められます。設定ファイルによってはホストビット付きCIDRを拒否または自動正規化するため、保存時はネットワークアドレスへ揃えます。

IPv4の末尾とブロードキャスト

通常のIPv4サブネットではホストビットをすべて1にした末尾がdirectedブロードキャストアドレス、ホストビットをすべて0にした先頭がネットワークアドレスとして扱われます。古典的なホスト割当数は総数からこの二つを引きます。

ただしブロードキャスト転送はネットワーク方針で無効なことが多く、末尾アドレスの存在と実際にブロードキャストが転送されることは別です。クラウドネットワークが予約済みアドレスを追加で確保する場合もあります。

/31と/32は「総数−2」の例外

IPv4 /31は二点間リンクで両アドレスをエンドポイントとして使えるよう標準化されています。ネットワーク・ブロードキャストとして二つとも除けば利用数0になってしまうため、用途を確認します。

/32は一個のIPv4アドレスを示し、ホスト経路、ループバック、方針オブジェクト等で使います。一個ホストを表すからゲートウェイなしで常にオンリンクという意味ではなく、経路文脈が必要です。

IPv6にはブロードキャストアドレスがない

IPv6はブロードキャストを使わずマルチキャストを使います。プレフィックスのホスト部をすべて1にしたアドレスをIPv4のブロードキャストとして除外しません。subnet-router anycast等、用途上の予約・anycast意味は別に確認します。

一般LANで/64が広く使われるのはSLAAC等の仕様・運用によるもので、計算上ほかのプレフィックスが存在できないからではありません。ポイントツーポイントやループバック、委任では異なるプレフィックスも使います。

包含・重複を調べる

二つのCIDRブロックは、一方のネットワークアドレスが他方の範囲へ入り、プレフィックス長を比較することで包含を判定できます。経路集約では連続し境界の揃った複数ブロックだけを短いプレフィックスへまとめられます。

見かけ上連続するアドレスを誤って集約すると、所有していない隣接範囲まで経路・許可してしまいます。集約後の先頭・末尾を再計算し、元ブロックの和と一致するか確認します。

「利用可能」は目的を明記する

数学上の総アドレス数、一般ホストへ割り当てられる数、DHCPプールへ入れる数、クラウド事業者が利用者へ渡す数、Internetでグローバルに経路可能な数は異なります。

calculatorの結果を記録するときは、ネットワーク、lastアドレス、プレフィックスマスク、総数に加え、「何を除外した利用可能数か」を表示します。IPv4とIPv6で同じ列名を機械的に使いません。

CIDR計算はプレフィックスビットでアドレスブロックの境界と総数を求める処理です。IPv4通常サブネット、/31、/32、IPv6を分け、計算結果を割当、経路、DHCP、ファイアウォールの事実へ取り違えません。

CIDRのprefixとaddress allocation・route aggregation:RFC 4632、IPv4 /31 point-to-point:RFC 3021、IPv6 addressing architecture:RFC 4291

関連用語