ポートが開いているときに他のサービスによって使用されるのを防ぐにはどうすればよいでしょうか?

ポートが開いているときに他のサービスによって使用されるのを防ぐにはどうすればよいでしょうか?

制限された範囲 (1024+) 内の連続したポートで複数のサービスが実行されています (それらのポートでリッスンしています)。 時々、これらのサービスを再起動する必要があり、サービスの 1 つがデータベースに接続するために他のサービスのポートをローカル ポートとして使用していることが起こります。 その結果、他のサービスは現在ビジー状態のポートでリッスンできないというエラーが発生します。 netstat を使用してサービスを手動で特定し、このサービスを再起動してポートの変更を強制する必要があります。そうすることで、ポートが他の正当なサービスによって自由に使用できるようになります。

ポートがオープンとして使用されるのを防ぎ、リッスン モードでのみオープンできるようにする方法はありますか?

システム: Linux

現在、9000~9100のポート範囲を使用しています

答え1

通常、これらのポートは「一時」ポート範囲外にあるはずです(非特権ポートとは異なります)。範囲はnet.ipv4.ip_local_port_range sysctl私のシステムではデフォルトで 32768~60999 が表示されます。

local_port_rangeが十分に高い場合、ポート9000が送信元ポートとして自動的に選択されることはありません(ただし、プログラムが明示的にこのポートにバインドします。

また、sysctl にポートを追加することもできますnet.ipv4.ip_local_reserved_ports(/etc/sysctl.d 経由)。このオプションでは、個々のポート番号をスペースで区切ったリストを指定します。

関連情報