IP・ネットワーク計算
IP範囲を広げず、短いCIDR一覧にまとめたい
使うツール
運用を続けていると、許可リストに細かいCIDRが増えていきます。似た数字を一つへまとめたくなりますが、短い一覧が必ず正しい一覧とは限りません。二つの範囲の間に含めてはいけないアドレスがあるなら、それを埋めてしまう変更は単なる整理ではありません。CIDR集約は、元のアドレス集合を変えずに表記を整理するために使います。
二つの/25は、境界が合えば/24になる
192.0.2.0/25
192.0.2.128/25結果は192.0.2.0/24です。前半は.0から.127、後半は.128から.255なので、隙間なく一つの/24を埋めています。各128個を合わせた256個という総数も一致します。ただし、総数が一致するだけでは同じ集合の証明になりません。開始と終了、途中に欠けた部分がないことも一緒に確認します。
二つが並んでいるだけでは、一つのCIDRになるとは限りません。192.0.2.64/26と192.0.2.128/26は隣接して合計128個ですが、/25の境界をまたぐので二つのままです。.64から.191を一つの/25で表すことはできません。大きさと、開始位置の整列の両方が集約条件になります。
親の範囲に含まれる行は、追加の範囲ではない
192.0.2.0/24
192.0.2.128/25
192.0.2.0/24結果は192.0.2.0/24の一行です。二回書かれた/24も、その中の/25も、対象のアドレスを増やしていません。行ごとの総数を足すと256+128+256ですが、重複を除いた対象は256個のままです。行数を減らすことと、許可対象を減らすことは別だと分かる例です。
ただし、元の設定で各行に別のポートや説明、適用先が付いているなら、アドレスが包含されることだけを理由に行を削除できません。このツールが扱うのはCIDRの集合です。ルールの付随条件や優先順位は入力していないため、設定ファイル全体を意味が同じまま整理するツールとしては使わないでください。
隙間がある一覧を、一つに包まない
192.0.2.0/26
192.0.2.128/26この二つはそのまま残ります。一つの/24にすれば短く見えますが、.64から.127と.192から.255を新たに含めてしまいます。元の128アドレスに対して結果が256となり、対象を倍へ増やす変更です。CIDR集約が二行を返したときは、失敗ではなく、対象を増やさないために必要な二行である可能性を考えます。
外側の最小値と最大値だけを残す方法も、途中の穴を消してしまいます。『すべてを含む大きな範囲』と『まったく同じアドレスだけを含む最小のCIDR一覧』は別の目的です。許可範囲を整理するときは、後者を求めているのか確認してから使います。
開始と終了しかない一覧は、範囲変換から
192.0.2.10
192.0.2.20192.0.2.10/31
192.0.2.12/30
192.0.2.16/30
192.0.2.20/32個数は2+4+4+1で11です。一つのきれいなCIDRへまとまらなくても、開始と終了を一つもはみ出していません。この場合の/31は範囲表現として二アドレスを意味し、そのまま二台のリンクを構成する指示ではありません。範囲の表記とネットワークへ割り当てる用途を分けて読みます。
始点が終点より後ならエラーになります。IPv4とIPv6を混在させた始点・終点も扱いません。大量のアドレスを一つずつ生成する必要はなく、境界に合うブロックへ分けます。入力がCIDR一つであれば、逆に開始と終了を読む用途にも使えます。
順序が変わっても、優先順位を評価したわけではない
集約結果はアドレス範囲に沿って整理され、元の入力順をルールの優先順位として保持するものではありません。『最初に一致したルールを使う』設定へ、そのまま出力を差し替えるのは別の変更になります。コメント、対象ポート、許可・拒否の区分などを外して計算した場合は、その情報を失った結果だと理解して扱います。
入力と出力は最大1,024件です。集約後の行数が減らなくても、整列や重複除去の確認には意味があります。IPv4とIPv6は分けて処理し、出力をもう一度集約して同じ結果になるかを見るのも、一つの整合確認です。ただし、その確認だけで元の許可対象との一致を証明したことにはなりません。
短くする前に、何を変えないか決める
元の一覧を残し、集約前後の境界、重複、隙間を確認します。範囲を変更したい目的があるなら、単なる整形とは分けて、増える対象と減る対象を明示します。SheepDevはルーターやファイアウォールへ設定を送信しません。計算結果をレビュー材料にし、実際の反映は対象システムの変更手順で判断します。
二行を一行にしたい、より先に守る条件
192.0.2.0/26と192.0.2.128/26を一つの/24へまとめると、元になかった.64から.127、.192から.255まで含みます。行数は二行から一行へ減りますが、アドレスの集合は増えています。このツールで行う集約は、元の範囲を増やさずに表記を整理するものです。見た目が短くならない結果は失敗ではなく、隙間を勝手に埋めなかった結果かもしれません。許可リストに使う場合、少ない行数よりも許可対象が変わらないことが重要です。
重複行や親に完全に含まれる範囲を削る場合も、アドレス以外の意味がない一覧かを確かめます。同じCIDRでも説明、担当、期限、許可と拒否のアクションが違う設定行なら、CIDRだけを抜き出して集約した結果をそのまま設定へ戻すことはできません。このツールはコメントや業務上の所有者を統合しません。まず純粋なアドレス集合として整理し、その結果を運用設定へ使えるかは元の条件と照合する、という二段階で使います。
検証には、元と結果のそれぞれからもう一方を引いて、どちらにも差がないことを確認する考え方が役立ちます。単なる総数一致だけでは、同じ数の別アドレスへ入れ替わった場合を見逃すからです。大きな範囲を一台ずつ列挙して比べる必要はなく、区間やプレフィックスの関係で確かめます。短くした結果を共有するときも、何行減ったかに加えて『対象アドレスを増減させない集約』であることを示すと、確認すべき条件が伝わります。