Não consigo acessar dispositivos na rede local atrás do cliente openvpn usando IP público do servidor VPN.
Um pouco de informação:
Servidor OpenVPN (openVZ, Debian7)
Cliente Opevpn (raspberry pi 2 raspbian jessie).
Everythink funciona bem, quando eu uso outro cliente VPN para acessar a rede local atrás de outro cliente (cliente 1 VPN <> servidor VPN <> cliente 2 VPN). Do cliente 2 tenho acesso à rede local atrás da VPN do cliente 1. No servidor cfg eu configurei iroute etc.
O problema é quando tento acessar, por exemplo, câmera ip na rede local atrás do cliente 1 usando IP público do servidor VPN.
No lado do cliente, configure:
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
No conjunto de servidores:
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 é o endereço IP do Raspberry Pi 2 na VPN
Usei o tcpdump para ver por que não funcionava.
O motivo é que os pacotes do servidor VPN possuem um IP público no endereço de origem. Quando o cliente VPN recebe este pacote com endereço de origem IP público, responde automaticamente usando a interface WAN e não o tun0.
Alguém pode me ajudar? O que devo fazer no iptables no servidor?
PS: No firewall do servidor tenho apenas uma regra de iptables:
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source PUBLICIP