Jak zarezerwować listę portów dla własnych aplikacji?
Mówiąc ściślej, produkt, który tworzę, ma wiele procesów i dużo komunikacji między nimi.
Problemem jest to, że - od czasu do czasu - system operacyjny kradnie moje porty. To rzadkie, ale się zdarza.
Może to być spowodowane tym, że inna aplikacja użyła „:: bind” bez określonego portu.
A czasem moje własne aplikacje kradną port, gdy wywołuję „:: connect” z niezwiązanym gniazdem. Jak widać ze strony podręcznika:
Jeśli gniazdo nie zostało już powiązane z adresem lokalnym, funkcja connect () powiąże go z adresem, który, chyba że rodziną adresów gniazda jest AF_UNIX, jest nieużywanym adresem lokalnym.
Więc moje pytanie brzmi: czy mogę zarezerwować porty, których potrzebuję, aby system operacyjny ich nie używał? Czy można tego dokonać za pomocą / etc / services? A może jest inny sposób?
SELinux
w trybie wymuszania może spełnić twoje wymagania, wciąż się tego uczę. Więc tylko domyślać, może można zdefiniować własną politykę SELinux
do rezerwy Twoi portów, takich jak my_server_port_t tcp 1111, 2222, 3333, 4444-4600
. Jeśli Twoja aplikacja będzie działać wszędzie (nie aplikacja serwera), obawiam się, że nie możesz kontrolować, czy SELinux
jest WŁĄCZONA, czy WYŁĄCZONA.