사용자 지정 응용 프로그램을위한 포트 목록을 어떻게 예약합니까?
구체적으로 말하면, 내가 만들고있는 제품에는 많은 프로세스와 많은 상호 통신이 있습니다.
내가 겪고있는 문제는-가끔씩-OS가 내 포트를 훔친다는 것입니다. 드물지만 발생합니다.
다른 애플리케이션이 포트를 지정하지 않고 ":: bind"를 사용했기 때문일 수 있습니다.
또는 언 바운드 소켓으로 ":: connect"를 호출하면 내 응용 프로그램이 포트를 훔칩니다. 매뉴얼 페이지에서 볼 수 있듯이 :
소켓이 로컬 주소에 아직 바인딩되지 않은 경우 connect ()는 소켓의 주소 패밀리가 AF_UNIX가 아닌 한 사용되지 않는 로컬 주소 인 주소에 바인딩해야합니다.
그래서 제 질문은 OS가 사용하지 않도록 필요한 포트를 예약 할 수 있습니까? / etc / services를 사용하여이 작업을 수행 할 수 있습니까? 아니면 다른 방법이 있습니까?
SELinux
시행 모드에서 요구 사항을 충족시킬 수 있는지 확실하지 않지만 여전히 배우고 있습니다. 따라서 추측으로 포트와 같은 포트 SELinux
를 예약 하기위한 고유 한 정책을 정의 할 수 있습니다 my_server_port_t tcp 1111, 2222, 3333, 4444-4600
. 응용 프로그램이 서버 응용 프로그램이 아닌 모든 곳에서 실행될 경우 SELinux
ON 또는 OFF 여부를 제어 할 수 없습니다 .