VM VPN을 통한 1:1 NAT

VM VPN을 통한 1:1 NAT

다른 VPN 클라이언트(예: Cisco, OpenVPN 등)에 연결하는 클라이언트 서버가 몇 개 있습니다. 각 서버에 대해 Ubuntu 14 VM(VPN 클라이언트가 영구적으로 연결됨)을 설정하여 모든 트래픽을 라우팅하려고 합니다. 서버와 연결되므로 다양한 VPN 클라이언트 간에 계속 전환할 필요가 없습니다.

VM에는 두 개의 고정 IP(LAN에 브리지)가 있으며 고정 IP로 전달되는 모든 트래픽을 원격 서버로 라우팅 eth0하고 싶습니다 .10.1.1.200tun010.50.1.1

저는 다음과 같은 규칙을 설정했습니다 iptables.

iptables -t nat -A POSTROUTING -s 10.1.1.200 -j SNAT --to-source 10.50.1.1
iptables -t nat -A PREROUTING -d 10.50.1.1 -j DNAT --to-destination 10.1.1.200
iptables -A FORWARD -s 10.50.1.1 -j ACCEPT
iptables -A FORWARD -d 10.1.1.200 -j ACCEPT

제가 이해한 바에 따르면 LAN IP( 10.1.1.200)와 원격 서버의 IP(OpenVPN 연결을 통해)( 10.50.1.1) 사이에 1:1 NAT가 생성 net.ipv4.ip_forward = 1되고 VM에서 호스트 서버에 연결할 수 있습니다. .

호스트 시스템에서 으로 핑, 텔넷, SSH를 시도했지만 10.1.1.200연결이 거부되었습니다.

소스/대상 IP의 몇 가지 다른 순열을 시도했지만 및 인터페이스를 명시적으로 설정했지만 -i아무 -o것도 작동하지 않습니다.

어떤 아이디어가 있나요?

답변1

문제를 해결했습니다. 동일한 서브넷에 여러 서버가 있는 클라이언트에 대해 전체 LAN IP 범위를 대상 서버 IP 범위에 매핑하여 패킷이 올바른 LAN IP로 돌아오도록 했습니다.

iptables -v -t nat -A PREROUTING -i eth0 -d 192.168.2.0/24 -j NETMAP --to 10.50.1.0/24
iptables -v -t nat -A POSTROUTING -o tun0 -j MASQUERADE

관련 정보