SheepDev

IP・ネットワーク計算

このIPは指定したCIDRに含まれる?

使うツール

許可ルールは192.0.2.128/25なのに、ログに192.0.2.127がある。先頭の数字はほとんど同じですが、このアドレスは範囲外です。IPの包含は文字列の前方一致では判定できません。比較ツールへ小さな例を入れて、境界の内側と外側を一つずつ確かめると、設定レビューの根拠を説明しやすくなります。

一台を比べるときは/32を付ける

左:許可候補の範囲、右:確認したい一台
192.0.2.128/25
192.0.2.200/32

IP包含・CIDR比較へ入力すると、左が右を含む関係になります。/25の範囲は.128から.255なので、.200はその中です。共通部分は192.0.2.200/32、右だけの部分はありません。右を一台として指定する/32を忘れて/24にすると、比較対象は256個の範囲へ変わり、知りたかった問い自体が別になります。

IPv6の一台は/128で指定します。たとえば2001:db8:1::/64と2001:db8:1::1234/128なら、同様に左が右を含みます。IPv4とIPv6を同じ比較へ混在させることはできません。見た目が似ていたり、IPv4を埋め込んだIPv6表記だったりしても、どのアドレス体系として比較しているかを明示します。

.127と.128を一つずつ試す

左を192.0.2.128/25のまま、右を192.0.2.127/32に変えると非重複です。右を192.0.2.128/32にすると包含になります。末尾側では.255が含まれ、192.0.3.0は含まれません。代表的な一台が通ることだけで範囲全体を判断せず、先頭の一つ前、先頭、末尾、末尾の一つ後を確認すると、境界のずれに気づけます。

この包含は数値上の範囲の話です。.128がネットワークアドレスとして使われるモデルであっても、CIDRの範囲から消えるわけではありません。割り当て可能なホストか、ファイアウォールで一致するか、実際に疎通するかは別の問いです。ツールは機器やルールエンジンへ問い合わせず、入力された範囲だけを比較します。

範囲を広げたかは、左右の向きで読む

左を変更前、右を変更後として比較
192.0.2.0/25
192.0.2.0/24

右が左を含み、共通部分は192.0.2.0/25、左だけは空、右だけは192.0.2.128/25です。この右だけの部分が、新たに加わる範囲です。逆に変更前を/24、変更後を/25にすれば、同じ.128/25が左だけへ現れ、削られた範囲になります。左右を入れ替えても重なるかどうかは同じですが、差分の意味は逆になります。

レビューへ添えるなら、『包含あり』だけでなく、追加されるCIDRと削除されるCIDRを分けて書きます。許可ルールなのか拒否ルールなのかで運用上の意味は変わるため、広がったことを必ず改善と呼ぶのも避けます。比較結果は範囲の変化を示す材料であり、セキュリティ方針の正しさを自動評価した結果ではありません。

文字列が違っても、同じ範囲になる

192.0.2.10/24と192.0.2.200/24を比較すると、両方とも192.0.2.0から.255なので等しい関係です。入力にホスト部分が残っていても、比較時にはプレフィックスの範囲へ正規化されます。変更履歴で末尾の数字だけが変わっていても、実際の範囲が変わったとは限りません。反対に、末尾が同じでも/25から/24へ変われば範囲は変わります。

単一の正規化されたCIDR同士は、同じか、一方が他方を含むか、離れているかになります。任意の開始・終了を持つ区間のような、端だけが交差する関係を無理に想定する必要はありません。複数行の許可リスト全体を調べたい場合は、一つのCIDRの比較結果だけで一覧全体を評価したことにしないようにします。

範囲内なのに接続できないとき

包含が確認できても、通信が通るとは限りません。対象サービスが見ている送信元IPが、手元の端末に表示されるIPと同じかを確認する必要があります。NAT、プロキシ、VPNなどがある環境では、比較したいアドレスの出どころを取り違えることがあります。このツールから実ネットワークを調査することはありません。管理している側の記録と、比較に使った値を照合します。

ポート、プロトコル、ルールの優先順位、別の拒否条件、経路も、この範囲計算の対象外です。『IPの範囲としては含まれる』までを一つの確認結果として切り出し、残りは実環境の設定を確認します。問題を小さく分けることで、アドレスの計算を何度もやり直すだけの調査を避けられます。

変更前後の比較を残す

確認には、左を変更前、右を変更後とするなど、向きを固定します。共通部分、追加、削除を確認し、必要に応じてIPv4/CIDRやIPv6/CIDRで開始・終了も読みます。入力例のアドレスは説明用であり、そのまま実設定へ追加するためのものではありません。結果を見てから、権限のある設定管理手順の中で採用可否を判断してください。

含まれるアドレスが同じでも、ルール全体の動作は同じとは限らない

許可するCIDRと拒否するCIDRが同じ設定に並んでいたら、どちらを先に評価するかで接続の可否が変わる場合があります。このツールが比べるのはアドレス集合の包含・共通・差分であり、ファイアウォールの上から順に評価する規則や、ルーティングの選択規則ではありません。二つのCIDRが重なると分かっても、それだけで設定競合の結論にはできません。対象のアクション、評価順序、ポート、プロトコルなどは別の条件です。アドレス条件を切り出して確認した結果として使います。

変更前を左、変更後を右へ置いたら、右から左を引いた範囲が新しく増えた部分、左から右を引いた範囲が除かれた部分です。左右を反対にすると説明も反対になります。『包含あり』という短い表示だけを変更報告へ貼るのではなく、どちらがどちらを含むかを具体的に書きます。192.0.2.0/25から192.0.2.0/24への変更なら、192.0.2.128/25が追加されると読めます。その追加が必要だったのかを判断するために差分を見るのであって、広い方が常に良い設定という意味ではありません。

確認を小さくするなら、境界の直前、境界そのもの、直後の一台ずつを/32として比べます。IPv6の一台なら/128です。内部の一台が含まれるだけでは、端のアドレスまで想定どおりかは分かりません。実ネットワークへの通信をしなくても、範囲計算の境界はこのように確かめられます。到達性を調べる作業が必要になった場合は、権限と対象を確認した別の診断として扱い、この計算機が通信試験を済ませたとは説明しません。

参考資料

使うツール

使い方・解説 →