Публичный IP-адрес OpenVPN на интерфейсе tun0 вместо сети vpn

Публичный IP-адрес OpenVPN на интерфейсе tun0 вместо сети vpn

Я не могу получить доступ к устройствам в локальной сети за клиентом 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

Связанный контент