"모든" 주소를 수신하는 프로세스에서 루프백 인터페이스 또는 주소를 제외합니다.

"모든" 주소를 수신하는 프로세스에서 루프백 인터페이스 또는 주소를 제외합니다.

호스트의 실제 이름과 서비스에서 실제로 사용하는 포트를 사용하여 SOCKS 프록시를 통해서만 액세스할 수 있는 호스트에서 실행되는 일부 서비스에 연결할 수 있는 설정을 만들려고 합니다. 서비스는 변경할 필요가 없으며 작동합니다.) 이를 위해 다음 단계를 따릅니다.

  • 서비스를 실행하는 호스트에 액세스할 수 있는 중간 호스트에 대한 SSH 연결을 사용하여 SOCKS 터널을 엽니다.
  • fc00::1사용하지 않는 일부 IPv6 주소를 루프백 장치에 할당합니다(예:).
  • socat해당 주소에 액세스하고 연결 요청을 SOCKS 프록시로 전달하려는 서비스에서 사용되는 포트를 엽니다 .
  • /etc/hosts액세스하려는 호스트에 대한 항목과 루프백 장치에 할당된 주소를 추가합니다.

이 모든 단계를 자동화할 계획입니다. 이것은 한 가지 문제를 제외하고는 완벽하게 작동합니다. 내 로컬 컴퓨터에서 실행되는 많은 서비스는 원격 호스트에서 액세스하려는 것과 동일한 포트(예: SSH, HTTP...)를 사용하며 적어도 기본적으로 모든 인터페이스를 수신합니다(예: "모든" 주소 0.0.0.0/ ::0). 이렇게 하면 다른 프로세스가 특정 주소에서도 동일한 포트를 열지 못하게 됩니다. 원래 루프백 주소( 127.0.0.1/ ::1)만 수신하도록 재구성할 수 있는 일부 서비스가 있지만 SSH와 같은 일부 서비스의 경우 이는 의미가 없으며, 내가 사용하는 일부 사용자 영역 애플리케이션의 경우 어떤 포트를 사용하여 열었는지에 대한 이벤트 제어가 없습니다. 어느 주소.

생각할 수 있는 한 가지 해결책은 청취 소켓을 열 때 "모든" 주소를 지정하는 프로세스가 해당 주소를 사용하지 않도록 인터페이스(두 번째 루프백 장치를 만들 수 있음) 또는 주소를 표시할 수 있는 경우입니다.

이것이 가능합니까, 아니면 이 문제를 해결할 다른 방법이 있습니까?

관련 정보