![Публичный IP-адрес OpenVPN на интерфейсе tun0 вместо сети vpn](https://rvso.com/image/76431/%D0%9F%D1%83%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%B9%20IP-%D0%B0%D0%B4%D1%80%D0%B5%D1%81%20OpenVPN%20%D0%BD%D0%B0%20%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B5%20tun0%20%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%BE%20%D1%81%D0%B5%D1%82%D0%B8%20vpn.png)
Я не могу получить доступ к устройствам в локальной сети за клиентом OpenVPN, используя публичный IP-адрес VPN-сервера.
Немного информации:
OpenVPN-сервер (openVZ, Debian7)
Клиент Opevpn (raspberry pi 2 raspbian jessie).
Все работает отлично, когда я использую другой vpn-клиент для доступа к локальной сети за другим клиентом (клиент 1 VPN <> сервер VPN <> клиент 2 VPN). С клиента 2 у меня есть доступ к локальной сети за клиентом 1 VPN. В настройках сервера я настраиваю iroute и т. д.
Проблема возникает, когда я пытаюсь получить доступ, например, к IP-камере в локальной сети за клиентом 1, используя публичный IP-адрес VPN-сервера.
На стороне клиента установлено:
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 — это IP-адрес Raspberry Pi 2 в VPN.
Я использовал tcpdump, чтобы посмотреть, почему это не работает.
Причина в том, что пакеты от VPN-сервера имеют публичный IP в исходном адресе. Когда vpn-клиент получает этот пакет с публичным IP-адресом источника, автоматически отвечает, используя интерфейс WAN, а не tun0.
Кто-нибудь может мне помочь? Что мне нужно сделать, чтобы настроить iptables на сервере?
PS: В брандмауэре на сервере у меня только одно правило iptables:
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source PUBLICIP