로컬 호스트에서만 수신 대기하는 소켓에 대한 IP 전달 원격 연결?

로컬 호스트에서만 수신 대기하는 소켓에 대한 IP 전달 원격 연결?

특정 포트를 사용하여 PC1에서 PC2로 데이터를 전송해야 하는데 PC2에서 열린 소켓은 localhost만 수신하고 있습니다. PC1의 연결을 수락하도록 소켓을 "속이는" 방법이 있습니까?

답변1

ssh포트포워딩과 함께 사용할 수 있습니다 .

예를 들어

ssh <remotehost> -L 1234:<target>:5678

이 명령은 원격 호스트에 연결하고 로컬 포트 ​​1234를 서버의 원격 포트 5678에 연결합니다 <target>.

귀하의 경우에는 대상 호스트에 직접 연결 <target>됩니다 .localhost

답변2

애플리케이션이 localhost에 바인딩된 경우 포트를 전달하는 유일한 방법은 요청을 루프백 인터페이스에 NAT하는 것입니다. 따라서 다음을 수행하여 이를 달성할 수 있습니다.

iptables 규칙을 추가합니다.

iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to 127.0.0.1:5678

이제 대상 컴퓨터의 포트 1234에서 보내는 모든 요청은 127.0.0.1:5678로 전달됩니다.

그런 다음 다음을 수행하는 것을 잊지 마십시오.

IP 전달 활성화:

echo 1 /proc/sys/net/ipv4/ip_forward

라우팅 로컬 네트워크 활성화:

echo 1 /proc/sys/net/ipv4/conf/eth0/route_localnet

관련 정보