crypto.getRandomValues でローカル生成 — 外部へ送信されません。
機能の説明
選択した帯域からランダムな TCP/UDP ポート番号を生成します。ツールは読み込み時とオプション変更のたびに生成します。Range(Registered・Ephemeral・Any)を選び、Count を 1〜1,000 で設定し、ポートが重複してはならないときは Unique をオンにします。単一の値は大きな文字で、バッチはリストで表示されます。乱数はローカルの crypto.getRandomValues に由来します。
使い方
- Range を選びます。Registered(1024-49151)がデフォルトであり、通常の選択です。
- Count を設定します(1〜1,000)。
- ポートが一意でなければならない場合は Unique をオンにします。
- 結果をコピーします。
例
Registered 帯域から一意な 5 ポート: 32764、21044、48812、18377、40291。
Ephemeral 帯域から 3 ポート: 52143、49872、61009。
どちらのリストの値も、すべてその帯域の内側にあります。それがこのツールの唯一の仕事であり、Unique はさらに「決して重複しない」ことも保証します。
TCP ポートの仕組み
ポートは 16 ビットの数値、1〜65535 です。IANA はこの空間を 3 つの帯域に分けます:
| 帯域 | 範囲 | 個数 | 用途 |
|---|---|---|---|
| Well-known | 1-1023 | 1,023 | システムサービス: HTTP 80、HTTPS 443、SSH 22、DNS 53 |
| Registered | 1024-49151 | 48,128 | IANA に登録されたアプリケーション: MySQL 3306、PostgreSQL 5432 |
| Ephemeral | 49152-65535 | 16,384 | クライアント側のアウトバウンド接続。OS が選ぶ |
開発者がローカルサービスに Registered 帯域を選ぶ理由:
- 1024 未満では、バインドに root または管理者権限が必要です。dev サーバーのために
sudoするのは間違った取引です。 - 49152-65535 の内側では、OS がいつでも任意のアウトバウンド接続にあなたのポートを渡す可能性があります。リスナーは OS と競合し、バインドに失敗しえます。
- Registered の中間帯域はデフォルトで静かです。有名なデーモンだけが主張する 48,128 個の値があります。ランダムに 1 つ選び、有名な少数(3306、5432、6379、8080)を避ければ、衝突は消えます。
Unique の仕組み。 ツールは帯域全体に対して部分 Fisher-Yates シャッフルを実行し、先頭の count 件を取ります - 構成上すべてのポートが一意で、拒否ループは不要です。上限は算術的に決まります。ephemeral 帯域は 16,384 個の値しか持たないため、一意な ephemeral ポート 20,000 個の要求は不可能です。count が帯域サイズを超えると生成は失敗し、ツールは結果をクリアします。範囲を広げるか、count を下げてください。
補足事項
- Unique は無料: 帯域サイズを超えるまでは何もコストがかかりません。超えた場合は、黙って重複するのではなく、派手に失敗します。
- 1 つのポートに 1 つのプロトコル。 同じ番号の TCP ポートと UDP ポートは別々のエンドポイントです。このツールが生成するのは番号であって、バインドではありません。
- プライベート: 乱数はローカルの
crypto.getRandomValuesに由来します。 - 関連ツール: MAC Address Generator、
ULIDULIDA 128-bit identifier like a UUID, but timestamp-prefixed and Crockford-base32 encoded — so it sorts by creation time and is shorter to read.
Generator。