カスタムアプリケーション用にポートのリストを予約するにはどうすればよいですか?
具体的には、私が作成している製品には多くのプロセスとそれらの間の相互通信があります。
私が抱えている問題は、OSが時々ポートを盗むことです。それはまれですが、それは起こります。
これは、別のアプリケーションがポートを指定せずに「:: bind」を使用したことが原因である可能性があります。
または、バインドされていないソケットで ":: connect"を呼び出すと、自分のアプリケーションがポートを盗むことがあります。manページからわかるように:
ソケットがまだローカルアドレスにバインドされていない場合、connect()は、ソケットのアドレスファミリがAF_UNIXでない限り、未使用のローカルアドレスであるアドレスにバインドします。
だから私の質問は、OSがそれらを使用しないように必要なポートを予約できますか?これは/ etc / servicesで実現できますか?または別の方法がありますか?
SELinux
Enforcingモードで要件を満たすことができるかどうかはわかりませんが、まだ学習中です。したがって、推測にすぎないかもしれませんが、のようなポートSELinux
を予約するための独自のポリシーを定義できますmy_server_port_t tcp 1111, 2222, 3333, 4444-4600
。アプリケーションが(サーバーアプリケーションではなく)どこでも実行される場合、SELinux
オンまたはオフを制御できないのではないでしょうか。