No puedo acceder a los dispositivos en la red local detrás del cliente openvpn usando la IP pública del servidor VPN.
Un poco de información:
Servidor Openvpn (openVZ, Debian7)
Cliente opevpn (raspberry pi 2 raspbian jessie).
Todo funciona bien cuando uso otro cliente VPN para acceder a la red local detrás de otro cliente (cliente 1 VPN <> servidor VPN <> cliente 2 VPN). Desde el cliente 2 tengo acceso a la red local detrás de la VPN del cliente 1. En el servidor cfg configuré iroute, etc.
El problema es cuando intento acceder, por ejemplo, a la cámara IP en la red local detrás del cliente 1 usando la IP pública del servidor VPN.
En el lado del cliente establezca:
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
En el servidor configurado:
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 es la dirección IP de Raspberry Pi 2 en VPN
Usé tcpdump para ver por qué no funciona.
La razón es que los paquetes del servidor VPN tienen una IP pública en la dirección de origen. Cuando el cliente VPN recibió este paquete con una dirección IP pública de origen, respondió automáticamente usando la interfaz WAN, no tun0.
¿Puede ayudarme alguien? ¿Qué debo hacer en iptables en el servidor?
PD: en el firewall del servidor solo tengo una regla de iptables:
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source PUBLICIP