IPv4 レンジ展開

IPv4 レンジや CIDR をすべてのアドレス一覧に展開し、件数をリアルタイム表示。ファイアウォールルールや資産管理に便利。

範囲をリストに。 開始-終了の範囲(192.168.1.1-192.168.1.20)または CIDR(10.0.0.0/28)を入力すると、範囲内の全アドレスと件数を取得。巨大な範囲はブラウザ保護のため制限します。ローカル計算。

10,000 アドレスを超える範囲は最初の 10,000 件のみ表示し件数を付記。

範囲をリストに展開する

同じ範囲を表す 2 つの書き方

CIDR ブロックと開始 - 終了のペアはどちらも連続したアドレス範囲を表しますが、表現力は同じではありません。CIDR が表せるのはサイズが 2 のべき乗で、ベースアドレスがそのサイズに整列したブロックだけです。10.0.0.0/30 は正当ですが、10.0.0.1/30 は下位ビットがマスクで消えるため 10.0.0.0/30 と同じブロックを指します。192.168.0.254-192.168.1.2 のような任意の範囲は単一の CIDR では書けず、3 つ必要になります。

このツールは両方の形式を受け付け、どちらも明示的なリストに展開します。リストの利用側が CIDR を理解しない場面、たとえば古い機器の許可リスト、表計算の列、シェルのループ、そして範囲が本当に思ったとおりを覆っているかの確認などで役立ちます。

境界ケースが重要な理由

自作の展開処理でよくあるバグは、アドレスを 4 つの独立した数値として扱い、最後のオクテットだけを加算することです。範囲が境界をまたがないうちは動きますが、またいだ瞬間に 192.168.0.255 の次が 192.168.1.0 ではなく 192.168.0.256 になります。32 ビット整数に変換して加算し、また戻せば繰り上がりは自動的に正しくなります。採用に値する方法はこれだけです。

もう 1 つの落とし穴は符号です。ビット演算の結果が符号付き 32 ビット整数になる言語では、符号なしに戻さないかぎり 255.255.255.255 は -1 になります。127.x.x.x より上のアドレスがすべて影響を受けるため、10 や 192 で始まる RFC 1918 の範囲だけでテストしているとバグが表に出ません。

出力に上限がある理由

/8 には 1670 万個のアドレスが含まれます。これをテキストとして実体化すると約 250 MB になり、描画が終わる前にタブが固まります。ここでは出力に上限を設け、実際の総数は別に表示します。ブラウザに描画させることなく範囲の本当の規模を確認できます。本当に巨大なブロックを走査する必要があるなら、テキストボックスのリストではなくサーバー側のストリーム処理で行ってください。

オープンソースに関する注記:バニラ JavaScript で実装。サードパーティライブラリは使用していません。

よくある質問

どの入力形式に対応していますか?
10.0.0.0/29 のような CIDR 表記か、ハイフンや空白で区切った開始・終了アドレス(例:10.0.0.1 - 10.0.0.9)のどちらでも受け付けます。
出力に上限があるのはなぜですか?
/8 全体を列挙すると 1600 万行を超え、タブが固まってしまいます。上限によりページの応答性を保ちつつ、件数欄には範囲の実際のサイズを表示しています。
一覧にネットワークアドレスとブロードキャストアドレスは含まれますか?
含まれます。範囲内のすべてのアドレスをそのまま列挙するため、利用可能なホストだけでなくブロック全体が得られます。
範囲が拒否されたのはなぜですか?
多くの場合、終了アドレスが開始アドレスより数値的に小さいためです。本ツールは 32 ビット整数として比較するので、10.0.0.5 から 10.0.0.1 は有効な範囲になりません。
結果をファイアウォールのルールに貼り付けられますか?
はい、範囲を展開する典型的な目的がそれです。多くのツールは改行区切りの一覧を受け付けますが、CIDR に対応している箇所では CIDR ブロックのほうが簡潔です。
オクテットの繰り上がりも正しく処理されますか?
されます。演算は 32 ビット整数上で行うため、10.0.0.255 から 10.0.1.0 へまたぐ範囲も正しく続きます。