SSH-터널 포트 포워딩

SSH-터널 포트 포워딩

2개의 VM이 있는데 하나는 개인 IP 주소(NAT 뒤)이고 다른 하나는 공용입니다. NAT로 SSH 터널을 만들었습니다. 목표는 공용 VM을 NAT 뒤의 네트워크에 연결하고 이를 통해 일부 트래픽을 전달하는 것입니다. 요점은 (테스트 목적으로) 공용 서버에 있는 유사한 애플리케이션으로 이 네트워크에서 실행되는 애플리케이션을 스푸핑하는 것입니다.

그래서 나는 다음과 같은 것을 만들었습니다.

터널 활성화

sudo ssh [email protected] -w 0:0

어드레싱

ifconfig tun0 10.253.253.1/30 pointopoint 10.253.253.2 - Local

ifconfig tun0 10.253.253.2/30 pointopoint 10.253.253.1 - Remote

내부 네트워크에 경로 추가

ip route add 10.0.3.0/24 via 10.253.253.1

양방향 통신의 경우(실제로는 확실하지 않음)

sudo arp -sD 10.253.253.1 ens18 pub

로컬에서 포트 전달

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -I FORWARD 1 -s 10.253.253.1 -j ACCEPT
sudo iptables -I FORWARD 1 -d 10.253.253.1 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 10.253.253.1 -j MASQUERADE

실제로 이것은 거의 작동하고 있습니다. 로컬 호스트에서 애플리케이션 서비스를 끄면 원격 호스트로 트래픽을 전달합니다. 그러나 주요 문제가 있습니다. 이 로컬 서버는 포트 4660에서 요청을 보내고 다른(내부 응용 프로그램)은 포트 4661에서 응답합니다. 포트 4661에서 들어오는 모든 트래픽을 포트 4660의 터널 인터페이스로 전달하려면 추가 규칙이 필요한 것 같습니다. 이걸 처리하려고? 저는 iptables에 대해 잘 알지 못합니다. 하지만 비슷한 것을 시도했지만 작동하지 않습니다.

iptables -A PREROUTING -t nat -i eth0 -p udp --dport 4661 -j DNAT --to 10.253.253.1:4660
iptables -A FORWARD -p udp -d 10.253.253.1 --dport 4660 -j ACCEPT

답변1

좋아, 내가 해냈어:

iptables -A PREROUTING -t nat -i eth0 -p udp --dport 4661 -j DNAT --to 10.253.253.2:4661(remote tun address)

관련 정보