질문
두 개의 원격 컴퓨터에서 실행되고 특정 프로토콜을 통해 통신하는 두 개의 프로그램이 있습니다. 내가 아는 것은 프로토콜이 UDP를 통해서만 통신하고 포트 1101과 1102를 사용하며 두 컴퓨터가 동일한 로컬 네트워크에 있어야 한다는 것입니다.
VPN(p2p)을 사용하여 이 작업을 수행했지만 SSH 터널을 통해 iptables를 사용할 수 있는지 알고 싶습니다(여기서는 SSH 터널링이 필수입니다).
저는 두 개의 Linux Debian wheezy 서버를 사용하여 두 프로그램 사이의 인터넷을 통해 터널을 엽니다. UDP 트래픽을 한 쪽에서 다른 쪽으로(모든 포트에 대해) 리디렉션하는 SSH 터널을 생성했지만 작동하지 않습니다. 이를 위해 나는 socat(여기서는 포트 1101)을 사용합니다.
transmission from computer1 --> port 1101/server1 --> socat to port 61101 --->
---> ssh tunnel --->
---> socat from port 61101--> port 1101/server2 --> reception on computer2
내 목표는 "computer2"의 관점에서 "server2"가 "computer1"과 똑같이 동작하도록 만드는 것입니다(또는 그 반대로). 패킷을 전송할 때 IP 주소를 올바르게 변환해야 하며 이에 따라 전송되는 데이터도 변경되어야 합니다.
SSH는 키 파일을 사용하여 자동으로 로그인하도록 구성됩니다.
내 터널 구성
이것이 두 포트를 양방향으로 리디렉션하도록 터널을 구성한 방법입니다.
#From server1's shell
$ ssh -f -N -T -R51101:localhost:51101 login@server2 # reverse tunnel for port 1101
$ ssh -f -N -T -R51102:localhost:51102 login@server2 # reverse tunnel for port 1102
$ ssh -f -N -T -L61101:localhost:61101 login@server2 # tunnel for port 1101
$ ssh -f -N -T -L61102:localhost:61102 login@server2 # tunnel for port 1102
#socat redirection on server1
$ socat TCP4-LISTEN:51101,fork UDP4:server1:1101 #redirects from the tunnel to the local 1101 port
$ socat TCP4-LISTEN:51102,fork UDP4:server1:1102 #redirects from the tunnel to the local 1102 port
$ sudo socat -d -d UDP4-LISTEN:1101,fork,bind=1101 TCP4:localhost:61101 #redirects to both tunnel and local UDP port 1101
$ sudo socat -d -d UDP4-LISTEN:1102,fork,bind=1102 TCP4:localhost:61102 #redirects to both tunnel and local UDP port 1102
#From server2's shell
#socat redirection on server2
$ socat TCP4-LISTEN:61101,fork UDP4:server1:1101 #redirects from the tunnel to the local 1101 port
$ socat TCP4-LISTEN:61102,fork UDP4:server1:1102 #redirects from the tunnel to the local 1102 port
$ sudo socat -d -d UDP4-LISTEN:1101,fork,bind=1101 TCP4:localhost:51101 #redirects to both tunnel and local UDP port 1101
$ sudo socat -d -d UDP4-LISTEN:1102,fork,bind=1102 TCP4:localhost:51102 #redirects to both tunnel and local UDP port 1102
iptables를 사용하여 이 작업을 수행하는 것이 가능하다고 생각하지만 방법을 모르겠습니다.
누구든지 해결책이 있습니까? 아니면 올바른 주소 변환을 위해 iptables를 사용하는 방법에 대한 팁이 있습니까?