ランダム IP アドレス生成ツールでできること
インターネットプロトコル(IP)のアドレスをランダムに作成します。135.68.115.145 のようなおなじみの4つの数字からなる IPv4 か、21ad:631c:53d2:d8e3:2eda:4eb0:9613:bd98 のような長い16進数の IPv6 を選べます。グローバルアドレスのみ、プライベートネットワークのアドレスのみ、またはすべてのアドレスから選べ、一度に最大1,000件まで生成できます。
開発者は、テスト用のデータベースを埋める、フォームや入力チェックがすべての正しい形式を受け付けるか確かめる、ログ解析やファイアウォールのルールを試す、例を書く、といった目的でランダムなアドレスを使います。学生はサブネットの計算練習に使います。
アドレスはブラウザの中で作成されます。ツールが生成したアドレスに接続することはなく、ネットワークに何かを送信することもありません。
使い方
- 「バージョン」で「IPv4」か「IPv6」を押します。バージョンを切り替えると、すぐに新しいアドレスが生成されます。
- 「アドレスの範囲」を選びます。
- グローバルのみ(プライベートと予約済みを除外):初期設定です。
- プライベートのみ(LAN、ユニークローカル):家庭や社内のネットワークで使うアドレスです。
- すべてのアドレス:取りうるすべての値を対象にします。
- 「個数」を設定します。初期値は10件で、上限は1,000件です。
- IPv6 で各グループを省略せずに書く必要がある場合は、「IPv6 を省略せずに表示」をオンにします。IPv4 を選んでいる間は、このボタンはグレー表示になります。
- 「結果の区切り」を選びます。初期設定は改行です。
- 「アドレスを生成」を押し、「コピー」を押します。
直近10回分の結果は、ページを離れるか「クリア」を押すまで、それぞれ「コピー」ボタン付きで「最近の結果」に残ります。
生成例
以下は、このページの裏で動いているコードを実際に実行した結果です。
| 設定 | 実行結果の一例 |
|---|---|
| IPv4、グローバルのみ | 135.68.115.145, 32.97.85.245, 120.174.184.237 |
| IPv4、プライベートのみ | 10.125.216.44, 10.219.46.158, 10.9.72.248 |
| IPv4、すべてのアドレス | 170.62.138.27, 121.245.231.165, 143.171.94.124 |
| IPv6、グローバルのみ | 21ad:631c:53d2:d8e3:2eda:4eb0:9613:bd98 |
| IPv6、グローバルのみ | 2258:9a97:b7c7:f511:216c:969:b5ff:557d |
| IPv6、プライベートのみ | fd6e:3736:baea:555:1499:7806:3b7a:b276 |
| IPv6、すべてのアドレス | ecbd:c4a8:4f41:64fe:3e7d:1b1b:27cc:5f17 |
| IPv6、グローバルのみ、省略せずに表示 | 2bd5:8531:03d4:eefc:9d19:9295:d31f:0a45 |
2つ目の IPv6 の行に注目してください。969 というグループは、本当は 0969 です。省略形では先頭のゼロを省きます。また、ゼロだけのグループが続く部分は :: に置き換えるので、2001:0db8:0000:0000:0000:0000:0000:0001 は 2001:db8::1 になります。
仕組み
IPv4 アドレスは32ビット、IPv6 アドレスは128ビットの数値です。ツールはブラウザの安全な乱数源 crypto.getRandomValues からそのビット数分のランダムな値を取得し、通常の表記法で書き出します。
IPv4、グローバルのみ。 ランダムな32ビットの値を引きます。それが特殊用途のブロックに入っていれば捨てて、新しい値を引き直します。除外されるブロックは次のとおりです。
- 0.0.0.0/8(「このネットワーク」)
- 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16(プライベートネットワーク)
- 100.64.0.0/10(通信事業者が使う共有アドレス空間)
- 127.0.0.0/8(ループバック)と 169.254.0.0/16(リンクローカル)
- 192.0.0.0/24、192.0.2.0/24、198.51.100.0/24、203.0.113.0/24(プロトコル用とドキュメント用の範囲)
- 192.88.99.0/24 と 198.18.0.0/15(旧リレー用とベンチマーク用の範囲)
- 224.0.0.0/4(マルチキャスト)と 240.0.0.0/4(255.255.255.255 を含む予約済み)
捨てて引き直すことで、残りのグローバルアドレスがすべて同じ確率に保たれます。
IPv4、プライベートのみ。 3つのプライベートブロックを合わせた中から、アドレスを1つ選びます。各ブロックには大きさに比例した割合が与えられるので、どのプライベートアドレスも同じ確率になります。
IPv6、グローバルのみ。 結果はグローバルユニキャストの範囲 2000::/3 に収まります。つまり、最初のグループは 2 か 3 で始まります。2001::/23(プロトコル用の割り当て)、2001:db8::/32 と 3fff::/20(ドキュメント用)、2002::/16(6to4)は除外されます。
IPv6、プライベートのみ。 結果は fd00::/8 のユニークローカルアドレスです。これは fc00::/7 のうち、ローカルで割り当てるネットワーク用の半分です。
ヒントと制限
- テストデータ専用です。 ここで作ったグローバルアドレスは、実在のネットワークのものかもしれません。通信を送るために使わないでください。
- ドキュメントには例示用に予約された範囲を使いましょう。マニュアルやスクリーンショットには、192.0.2.0/24、198.51.100.0/24、203.0.113.0/24、2001:db8::/32 を使ってください。
- 重複について。 アドレスはそれぞれ独立に引かれます。取りうる値が数十億あるので、少数の生成で重複することはまずありませんが、ツールは重複を防ぎません。
- 割り当て済みかどうか。 「グローバルのみ」は「特殊用途のブロックに入っていない」という意味です。実際に誰かに割り当てられているかどうかは確認しません。
- 2進数の練習。 アドレスをビットで見るには、各数値を2進数翻訳ツールで変換してください。たとえば 10 は 00001010 です。
そのほかのランダムな IP アドレスの作り方
Python。 ipaddress.IPv4Address(random.getrandbits(32)) で任意の IPv4 アドレスを、ipaddress.IPv6Address(random.getrandbits(128)) で任意の IPv6 アドレスを作れます。結果の .is_global や .is_private を確認し、条件に合わなければ引き直します。
Excel や Google スプレッドシート。 =RANDBETWEEN(1,223)&"."&RANDBETWEEN(0,255)&"."&RANDBETWEEN(0,255)&"."&RANDBETWEEN(1,254) で、おおまかな IPv4 アドレスを作れます。プライベートや予約済みのブロックは除外されません。
Faker ライブラリ。 多くのプログラミング言語向けのテストデータ用パッケージに、IP アドレスを作る機能があります。
関連ツール
テスト用の記録と組み合わせる一意の ID には、UUID 生成ツールを使ってください。ランダムなポート番号などの値には、乱数生成ツールで 1024 から 65535 のような範囲を指定してください。