![TCP를 통한 Unix 소켓 브리지 구축](https://linux55.com/image/126622/TCP%EB%A5%BC%20%ED%86%B5%ED%95%9C%20Unix%20%EC%86%8C%EC%BC%93%20%EB%B8%8C%EB%A6%AC%EC%A7%80%20%EA%B5%AC%EC%B6%95.png)
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
로컬 보안이 취약해지거나 서비스 거부가 발생할 수 있습니다.)