TCP를 통한 Unix 소켓 브리지 구축

TCP를 통한 Unix 소켓 브리지 구축

Unix 소켓을 사용하여 서로 통신하는 두 개의 프로세스(클라이언트와 서버)가 있습니다 /tmp/tm.ipc. 프로세스(클라이언트나 서버) 모두 TCP를 지원하지 않습니다.

클라이언트-> /tmp/tm.ipc->서버

이제 동일한 서브넷에서 실행되는 두 개의 다른 컴퓨터에서 실행되도록 두 프로세스를 분리하고 싶습니다. 그러므로 나는 둘 사이에 일종의 TCP 브리지를 구축하고 싶습니다.

클라이언트 -> /tmp/tm-machine1.ipc-> TCP 포트 15432 -> /tmp/tm-tm-machine2.ipc-> 서버

원래는 Socat을 사용하려고 했는데 이건 서버 수신 부분만 다루는 것 같습니다.

socat -d -d TCP4-LISTEN:15432,fork UNIX-CONNECT:/tmp/tm.ipc

이제 클라이언트의 Unix 소켓을 해당 포트에 연결하고 싶습니다. 어떻게 해야 하나요?

답변1

SSH 열기충분한 버전(OpenSSH 6.7/6.7p1(2014-10-06) 이상)이 이를 수행할 수 있으며 SSH가 클라이언트에서 서버 시스템으로 시작되는 경우 다음과 같이 작성할 수 있습니다.

ssh -L /path/to/client.sock:/path/to/server.sock serverhost

그런 다음 클라이언트가 연결되고 /path/to/client.sock서버가 수신합니다 /path/to/server.sock. 설정해야 할 수도 있습니다 . -o StreamLocalBindUnlink=yes을 참조 하십시오.ssh_config(5)

(그리고 사용하지 마십시오 /tmp. 부적절하게 사용하면 /tmp로컬 보안이 취약해지거나 서비스 거부가 발생할 수 있습니다.)

관련 정보