解決策 1:
(2^16)-1、または 0 ~ 65,535 (-1 は、ポート 0 が予約されていて利用できないためです)。 (o_O Tync がポート 0 を使用できないことを思い出させ、Steve Folly がポートの数ではなく最大のポートを要求したことを思い出したので編集)
しかし、あなたはおそらくこれについて間違った方法で進んでいます。非標準ポートの賛成派と反対派がいます。最もカジュアルなスキャナー以外は無関係であり、最新のソフトウェアと適切なファイアウォール技術と強力なパスワードを使用することで、最もカジュアルなスキャナーを寄せ付けないようにすることができます.つまり、セキュリティのベスト プラクティスです。
解決策 2:
1 ~ 65535 が利用可能で、範囲 1 ~ 1023 のポートが特権 1:これらのポートをリッスンするには、アプリケーションを root として実行する必要があります。
解決策 3:
1 ~ 65535 は正当な TCP ポートですが、1 ~ 1023 は既知のポート サービス用です。一時的なポートが確立された後にサービスを開始すると、独自のサービスでランダムな問題が発生する可能性があります。ご存じないかもしれませんが、エフェメラル ポートとは、リモート エンド ポイント (またはその趣旨の何か) のためにローカルに接続されているポートです。したがって、ポート 20001 でリッスンする TCP サービスを作成すると、今日も明日もうまくいくかもしれません。しかし、ある日、サービスが起動して 20001 にバインドしようとすると、一時ポートとして取得されたために失敗する場合があります。解決策があります。管理者または自分自身に、サーバーのシステム エフェメラル ポート範囲ポリシーを変更してもらう必要があります。 Linux システムでは、次の 2 つのステップで実行されます:
- 動的に
- 永続的に
再起動を計画していない限り、両方の手順を実行する必要があります (この場合、動的手順は必要ありません)。 40000 から 65535 までの範囲を設定するには、次の手順を実行します:
ダイナミック
echo 40000 65535 > /proc/sys/net/ipv4/ip_local_port_range
または
sysctl -w net.ipv4.ip_local_port_range="40000 65535"
永久
以下を /etc/sysctl.conf に追加します:
net.ipv4.ip_local_port_range = 40000 65535
現在の設定を読み取るか、変更を確認するには:
/sbin/sysctl net.ipv4.ip_local_port_range
出力は次のようになります:
net.ipv4.ip_local_port_range = 9000 65500
サーバーの目的を理解していることを確認してください。範囲を縮小しすぎると、他の問題が発生する可能性があります。
ハッピーコーディング! (またはあなたが何をしても)