Nie mogę tego rozgryźć. Serwer działa na VPS z siecią prywatną. Muszę dotrzeć do innego VPS w tym samym centrum danych od klienta za pośrednictwem serwera OpenVPN. Adres IP serwera LAN to 10.128.182.211, a pole, do którego muszę dotrzeć, to 10. Mogę pingować LAN serwera z klienta. Pcham trasę i widzę ją w kliencie:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 192.168.2.1 0.0.0.0 UG 303 0 0 wlan0
10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0
10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
128.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun
192.168.2.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
192.168.14.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Wypróbowałem te dwie reguły na serwerze:
iptables -A FORWARD -i tun0 -o ens4v1 -j ACCEPT
iptables -A FORWARD -i ens4v1 -o tun0 -j ACCEPT
Ale wciąż nic. Obecnie kieruję cały ruch klienta przez VPN, a przekazywanie IP jest włączone i działa.
AKTUALIZACJA
Zrozumiałem to ... tak oczywiste, naprawdę. Potrzebowałem reguły MASQUERADE, takiej jak ta, której używam, aby uzyskać dostęp do Internetu.
-A POSTROUTING -o ens3 -j MASQUERADE
-A POSTROUTING -o ens4v1 -j MASQUERADE
networking
vpn
routing
openvpn
przeciek
źródło
źródło
/etc/network/interfaces
wyglądaOdpowiedzi:
Korzystanie z MASQUERADE jest najprostszym podejściem, ale możesz także skonfigurować routing, dodając trasę do VPN do wszystkich maszyn LAN.
Zobacz: http://openvpn.net/index.php/open-source/documentation/howto.html#scope
Niektóre VPS nie mogą wykonać MASQUERADE, więc zamiast tego zrobiłbyś to:
iptables -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 12.34.56.78
--to-source
Rozwiązaniem byłoby adres interfejsu wyjściowegoźródło