![ポートが開いているときに他のサービスによって使用されるのを防ぐにはどうすればよいでしょうか?](https://rvso.com/image/1598550/%E3%83%9D%E3%83%BC%E3%83%88%E3%81%8C%E9%96%8B%E3%81%84%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%E4%BB%96%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AE%E3%82%92%E9%98%B2%E3%81%90%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
制限された範囲 (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 経由)。このオプションでは、個々のポート番号をスペースで区切ったリストを指定します。