애플리케이션의 기본 포트가 아닌 모니터링 콘솔과 동일한 TCP 포트(및 동일한 인터페이스)를 사용하는 두 개의 애플리케이션이 있습니다. 해당 포트를 사용하는 데 관심이 없으며 SO_REUSEADDR을 변경하거나 포트의 소스 코드를 변경할 수 없습니다.
이 두 응용 프로그램을 동일한 운영 체제에서 실행하려면 어떻게 해야 합니까?
답변1
커널이 이를 허용한다면 어떤 수신 연결이 어떤 응용 프로그램에 연결되어야 하는지 알 수 있는 방법이 없습니다.
애플리케이션이 다른 IP에 바인딩되도록 해야 합니다. 대부분의 응용 프로그램은 이 작업을 수행할 수 있습니다(그러나 대부분은 포트 변경도 허용합니다...).
애플리케이션이 이를 허용하지 않으면 서로 다른 네트워크 스택(두 개의 서로 다른 물리적 머신 또는 가상 머신, 어쩌면 도커)에서 실행합니다.
답변2
직접 테스트하지는 않았지만 Linux의 경우 NIC에 대해 두 개의 다른 IP를 설정하고 다음을 사용할 수 있습니다 bindhack
.
http://www.ryde.net/code/bind.c.txt
그렇지 않으면 16진수 편집기를 사용하여 바이너리의 하드코드된 포트 번호를 변경할 수 있습니다. 디버거에서 분해하거나 실행하면 이를 변경할 올바른 위치를 찾는 데 도움이 될 수 있습니다.