tun0 接口上的 OpenVPN 公共 IP,而不是 VPN 网络

tun0 接口上的 OpenVPN 公共 IP,而不是 VPN 网络

我无法使用 VPN 服务器的公共 IP 访问 openvpn 客户端后面的本地网络中的设备。

一点信息:

OpenVPN 服务器(openVZ、Debian7)

Opevpn 客户端(raspberry pi 2 raspbian jessie)。

当我使用其他 VPN 客户端访问其他客户端后面的本地网络(客户端 1 VPN <> 服务器 VPN <> 客户端 2 VPN)时,Everythink 工作正常。从客户端 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 源地址的数据包时,自动使用 WAN 接口而不是 tun0 进行响应。

有人可以帮助我吗?我应该在服务器上的 iptables 中设置什么?

PS:在服务器上的防火墙中,我只有一条 iptables 规则:

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

相关内容