Ich kann mit der öffentlichen IP des VPN-Servers nicht auf Geräte im lokalen Netzwerk hinter dem OpenVPN-Client zugreifen.
Ein paar Informationen:
OpenVPN-Server (openVZ, Debian7)
Opevpn-Client (Raspberry Pi 2 Raspbian Jessie).
Alles funktioniert einwandfrei, wenn ich einen anderen VPN-Client verwende, um auf das lokale Netzwerk hinter dem anderen Client zuzugreifen (Client 1 VPN <> Server-VPN <> Client 2 VPN). Von Client 2 aus habe ich Zugriff auf das lokale Netzwerk hinter Client 1 VPN. In der Serverkonfiguration stelle ich iroute usw. ein.
Das Problem tritt auf, wenn ich versuche, beispielsweise auf eine IP-Kamera im lokalen Netzwerk hinter Client 1 zuzugreifen, indem ich die öffentliche IP des VPN-Servers verwende.
Legen Sie auf der Clientseite Folgendes fest:
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
Auf dem Server eingestellt:
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 ist die Raspberry Pi 2 IP-Adresse im VPN
Ich habe tcpdump verwendet, um zu sehen, warum es nicht funktioniert.
Der Grund dafür ist, dass die Pakete vom VPN-Server eine öffentliche IP in der Quelladresse haben. Wenn der VPN-Client dieses Paket mit öffentlicher IP-Quelladresse empfängt, antwortet er automatisch über die WAN-Schnittstelle, nicht über tun0.
Kann mir jemand helfen? Was muss ich in iptables auf dem Server einstellen?
PS: In der Firewall auf dem Server habe ich nur eine iptables-Regel:
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source PUBLICIP