CIDR(Classless Inter-Domain Routing)は、1990年代に導入されたアドレス指定方式であり、アドレス/プレフィックス長(例:192.0.2.0/24)という形式の可変長プレフィックスを使用してIPアドレスを割り当て、ルートを集約するものです。 IPv4アドレスの枯渇やルーティングテーブルの肥大化を解決するため、固定されたクラスフルなA、B、C方式に取って代わりました。プレフィックス長は、先頭のビット数がネットワークを識別し、残りのビット数が個々のホストを識別する割合を示しており、IPv4およびIPv6の両方において、ビット境界に沿った柔軟なブロックサイズの指定を可能にします。 CIDRの管理が不十分だと、プレフィックスの重複、ブロック境界のずれ、集約の破綻といった具体的な障害が発生し、ルーティング、VPN、ファイアウォールルール、ピアリングの設定を複雑化させるため、ネットワーク運用においては正確なアドレス計画が不可欠となります。
CIDRの仕組み
CIDR では、ネットワークを IP アドレスと、ネットワークを識別する先頭のビット数を示すプレフィックス長として表現します。残りのビットは、そのネットワーク内のホストを識別します。
- プレフィックス長を選択:スラッシュの後に記述されるプレフィックス長は、ブロックのサイズを決定します。IPv4における「/24」は、ネットワークビットを24ビットに固定し、ホストビットを8ビット残すため、このブロックには256個のアドレスが含まれます。
- ブロックの割り当て:レジストリまたはプロバイダーは、クラスA、B、またはCのネットワーク全体ではなく、ニーズに合ったブロックを割り当てます。ブロックのサイズは、ビット境界上で任意のサイズに設定できます。
- 必要に応じて細分化する:組織は、個々のサブネット用にブロックを長いプレフィックスに分割します。/24は、2つの/25ブロックまたは4つの/26ブロックに分割できます。
- ルーティングのための集約:先頭のビットパターンが共通する連続したブロックは、1つの短いプレフィックスとしてアドバタイズされます。隣接する2つの/24ブロックは、アラインメントが取れている場合、1つの/23として集約できます。
- 最長一致による転送(Forward by longest match):ルーターは宛先アドレスを自身のテーブルと照合し、プレフィックスが最も長い一致するエントリを使用します。したがって、より具体的なルートが、より広範なルートよりも優先されます。
CIDR表記はIPv6にも同様に適用され、サブネットには/64などのプレフィックスが一般的に使用されます。プレフィックスの長さは、暗黙のクラス境界に取って代わり、サブネットマスクと連動して機能します。サブネットマスクは、単に同じビット数を別の方法で表記したものに過ぎません。
CIDRに関するよくある問題
2つのチームが、例えば/23と、その中に含まれる/24といったように、重複するブロックを割り当てた場合、トラフィックが誤ったネットワークに到達したり、断続的に失敗したりすることがあります。この問題は、VPN、ピアリング、またはクラウドネットワークが接続され、ルートが競合する際に頻繁に発生します。
ブロックには、プレフィックスの境界上にないホストアドレスが記述されることがあります。例えば、10.1.1.0/24 を意図していたにもかかわらず、10.1.1.64/24 と記述される場合などです。プラットフォームによってはこれを拒否するものもあれば、黙って正規化するものもあり、その結果、ルートやファイアウォールのエントリに混乱を招く不一致が生じることがあります。
計画担当者は、IPv4サブネットの先頭と末尾のアドレスが通常、ネットワークアドレスとブロードキャストアドレス用に予約されており、クラウドプラットフォームではさらに多くのアドレスが予約されていることを見落としがちです。サイズをぴったり合わせるように設計されたサブネットでは、導入時点で使用可能なアドレスが尽きてしまいます。
トポロジーを考慮せずにブロックを割り当てると、アドレスが各サイトに散在してしまうため、1つのルートに要約することができません。その結果、ルーティングテーブルが肥大化し、サマリールートが使用できなくなったり、存在しないアドレスへのトラフィックを引き寄せたりすることになります。
DHCPスコープ、ファイアウォールオブジェクト、IPAMレコードは、それぞれ同じネットワークに対して異なるプレフィックス長を保持しています。その結果、ホストが誤ったマスクを取得したり、ルールが範囲の一部をカバーし損ねたりしますが、各システムは内部的には一貫しているように見えるため、原因の特定が困難になります。