ランダムポート生成
技術的な詳細
ランダムポート生成器の仕組み
このツールでできること
ランダムポート生成器は、偏りのない棄却サンプリングを用いた crypto.getRandomValues() により、要求されたIANA範囲から1つ以上のTCP/UDPポート番号を選択します。デフォルトでは、ウェルノウンポートと、広く使われている開発用ポートの厳選リスト(3000、8080、5432、6379など)の両方を避けるため、生成された番号は新しいローカルサービスですぐに利用できます。
開発者によくある利用シーン
新しいマイクロサービス、docker-composeスタック、または一時的なテスト環境を立ち上げる開発者は、衝突しないポートを考えずに選ぶためにこのツールを使います。SREはIANAテーブルを手動で調べることなく、新しい社内サービス用のポートを割り当てられます。「エフェメラル」範囲は、本番のカーネル挙動に一致する短命ソケットを必要とするクライアント側TCPテストハーネスに最適です。
データ形式、型、またはバリエーション
利用可能な事前定義範囲は3つです:Well-known(1–1023)、Registered / Unprivileged(1024–49151)、Dynamic / Ephemeral(49152–65535)。生成された各番号には分類が注記されます。一般的なポートを避けるリストは、HTTP/HTTPS、SSH、一般的なデータベースポート、一般的な開発サーバー、メッセージキュー、標準的なキャッシュサービスをカバーします。
よくある落とし穴とエッジケース
ランダムなポート割り当ては、そのポートが実際にあなたのマシンで空いているかどうかを確認しません。これにはOSレベルでのbind試行が必要です。「一般的なポートを避ける」リストは厳選されたもので網羅的ではありません。業界特有のデフォルト(Cassandra 9042、Elasticsearch 9300など)はフラグされますが、カスタムの社内サービスは依然として衝突する可能性があります。最初の候補がローカルの何かと競合した場合は、新しいバッチを生成してください。
コードではなくこのツールを使うべき場面
単発のサービス設定やサンプル作成では、このブラウザツールを使用してください。自動化では、OSにポートを割り当てさせる(ポート0にbindして選ばれた値を読み戻す)方法を優先してください。これによりポートが実際に空いていることが保証され、ランダム選択とbindの間の競合も回避できます。