![VPN 네트워크가 아닌 tun0 인터페이스의 OpenVPN 공용 IP](https://linux55.com/image/76431/VPN%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EA%B0%80%20%EC%95%84%EB%8B%8C%20tun0%20%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EC%9D%98%20OpenVPN%20%EA%B3%B5%EC%9A%A9%20IP.png)
VPN 서버의 공용 IP를 사용하여 openvpn 클라이언트 뒤에 있는 로컬 네트워크의 장치에 액세스할 수 없습니다.
약간의 정보:
OpenVPN 서버(openVZ, Debian7)
Opevpn 클라이언트(라즈베리 파이 2 raspbian jessie).
다른 VPN 클라이언트를 사용하여 다른 클라이언트 뒤의 로컬 네트워크(클라이언트 1 VPN <> 서버 VPN <> 클라이언트 2 VPN)에 액세스하면 Everythink가 제대로 작동합니다. 클라이언트 2에서 VPN 뒤의 클라이언트 1의 로컬 네트워크에 액세스할 수 있습니다. 서버 cfg에서 iroute 등을 설정했습니다.
문제는 VPN 서버의 공인 IP를 사용하여 클라이언트 1 뒤의 로컬 네트워크에 있는 IP 카메라에 접속하려고 할 때입니다.
클라이언트 측에서:
iptables -I FORWARD -i tun0 -p tcp -d 192.168.2.2 --dport 8080 -j ACCEPT
iptables -t nat -I PREROUTING -i tun0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.2.2:8080
서버에 설정:
iptables -I FORWARD -i venet0 -p tcp -d 10.8.0.6 --dport 8080 -j ACCEPT
iptables -t nat -I PREROUTING -i venet0 -p tcp --dport 8080 -j DNAT --to-destination 10.8.0.6:8080
10.8.0.6은 VPN의 Raspberry Pi 2 IP 주소입니다.
tcpdump를 사용하여 왜 작동하지 않는지 확인했습니다.
그 이유는 VPN 서버에서 들어오는 패킷의 소스 주소가 공인 IP를 갖고 있기 때문입니다. VPN 클라이언트가 공용 IP 소스 주소로 이 패킷을 수신하면 tun0 대신 WAN 인터페이스를 사용하여 자동으로 응답합니다.
누구든지 나를 도와줄 수 있나요? 서버의 iptables에 무엇을 설정해야 합니까?
추신: 서버의 방화벽에는 iptables 규칙이 하나만 있습니다.
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source PUBLICIP