VPN 클라이언트로 포트 전달

VPN 클라이언트로 포트 전달

해결할 수 없을 것 같은 문제에 직면했습니다. VPS에 VPN 서버가 있습니다. 내 클라이언트 컴퓨터(홈 LAN)를 연결할 수 있습니다. 제대로 작동합니다. 클라이언트 PC에서 VPS IP 주소를 얻습니다.

하지만 특정 포트를 사용하여 VPN을 통해 클라이언트 PC에 연결할 수 있기를 원합니다. MineCraft 서버가 있고 VPN을 통해 MC 서버에 연결할 수 있기를 원합니다.

IP 전달을 활성화했습니다.

sysctl -w net.ipv4.ip_forward=1

특정 포트를 전달해 보세요.

iptables -t nat -A PREROUTING -d 50.x.x.x -p tcp --dport 25565 -j DNAT --to-dest 10.98.0.2:25565

50.xxx는 내 VPN 공용 IP 주소입니다. 10.98.0.2는 클라이언트의 로컬(tun0) IP 주소입니다.

어떤 이유로 작동하지 않습니다. tcpdump port 25565클라이언트에 연결하려고 하면 VPN 서버에 다음이 나타납니다.

20:49:58.345498 IP MyInternetPublicIP.62336 > VPNPublicIP.25565: Flags [S], seq 2320085851, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
20:50:01.344059 IP MyInternetPublicIP.62336 > VPNPublicIP.25565: Flags [S], seq 2320085851, win 8192, options [mss 1460,nop,wscale 2,nop,nop,sackOK], length 0
20:50:07.342439 IP MyInternetPublicIP.62336 > VPNPublicIP.25565: Flags [S], seq 2320085851, win 8192, options [mss 1460,nop,nop,sackOK], length 0

클라이언트측에는 아무것도 표시되지 않습니다. 나는 뭔가를 놓치고 있다고 확신합니다. 단지 무엇인지 모르겠습니다.

답변1

다음과 같이 필터 테이블(체인 또는 거기에서 호출되는 체인)에서 FORWARD전달을 허용해야 합니다.

iptables -I FORWARD 1 -d 10.98.0.2 -p tcp --dport 25565 -j ACCEPT

클라이언트에 VPN을 통해 응답 패킷이 전송되도록 하는 특별한 구성이 없는 경우 SNAT도 구성해야 합니다.

iptables -t nat -A POSTROUTING -m conntrack --ctstate DNAT -d 10.98.0.2 -p tcp --dport 25565 -j SNAT --to-source 10.98.0.1

10.98.0.1이 VPS VPN 주소라고 가정합니다.

관련 정보