Як зарезервувати список портів для своїх спеціальних програм?
Якщо конкретніше, продукт, який я створюю, має багато процесів і багато взаємозв'язку між ними.
Проблема, яка у мене виникає, полягає в тому, що - раз у раз - ОС краде мої порти. Це рідко, але буває.
Це може бути тому, що інша програма використовувала ":: bind" без вказаного порту.
Або іноді мої власні програми вкрадають порт, коли я дзвоню ":: connect" з незв'язаним сокетом. Як видно зі сторінки man:
Якщо сокет ще не прив’язаний до локальної адреси, connect () прив'язує його до адреси, яка, якщо сімейство адрес сокета не є AF_UNIX, не є невикористаною локальною адресою.
Отже, моє запитання полягає в тому, чи можу я зарезервувати потрібні мені порти, щоб ОС їх не використовувала? Чи можна це досягти за допомогою / etc / services? Або є інший спосіб?
SELinux
в режимі Enforcing може відповідати вашим вимогам, я все ще навчаюсь цьому. Так тільки припущення, може бути , ви можете визначити свою власну політику SELinux
в резервне Yours портів, такі як my_server_port_t tcp 1111, 2222, 3333, 4444-4600
. Якщо ваша програма працюватиме скрізь (а не серверна програма), я боюся, що ви не можете контролювати, чи SELinux
ввімкнено або вимкнено.