VPN ネットワークの代わりに tun0 インターフェイス上の OpenVPN パブリック IP

VPN ネットワークの代わりに tun0 インターフェイス上の OpenVPN パブリック IP

VPN サーバーのパブリック IP を使用して、openvpn クライアントの背後にあるローカル ネットワーク内のデバイスにアクセスできません。

ちょっとした情報:

Openvpn サーバー (openVZ、Debian7)

Opevpn クライアント (Raspberry Pi 2、Raspbian Jessie)。

他の VPN クライアントを使用して他のクライアントの背後にあるローカル ネットワークにアクセスすると、すべて正常に動作します (クライアント 1 VPN <> サーバー VPN <> クライアント 2 VPN)。クライアント 2 からは、クライアント 1 VPN の背後にあるローカル ネットワークにアクセスできます。サーバー 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のラズベリーパイ2のIPアドレスです

なぜ動作しないのかを確認するために tcpdump を使用しました。

その理由は、VPN サーバーからのパケットの送信元アドレスにパブリック IP が含まれているためです。VPN クライアントがパブリック IP 送信元アドレスを含むこのパケットを受信すると、tun0 ではなく WAN インターフェイスを使用して自動的に応答します。

誰か助けてくれませんか? サーバーの iptables で何を設定すればよいですか?

PS: サーバーのファイアウォールには iptables ルールが 1 つだけあります:

-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source PUBLICIP

関連情報