Frage OpenVPN ist kein Standardgateway für den gesamten Datenverkehr


Ich versuche, meinen Client über eine VPS, auf der OpenVPN läuft, den gesamten Datenverkehr weiterzuleiten. Wie Sie sehen können, werden Pings sowohl für Domains als auch für rohe IP-Adressen möglich sein, aber Traffic, wie er durch curl und traceroute verursacht wird, lässt sich mit nichts erreichen. Der Datenverkehr funktioniert ordnungsgemäß, wenn er nicht mit dem VPN verbunden ist.

Alle Informationen sind hier: http://pastebin.com/Zpvzs7gW

Vielen Dank.

Arbeitskonfigurationen dank der folgenden Lösung:

Server:

port <integer>
proto udp
dev tun
ca ca.crt
cert vpnserver.crt
key vpnserver.key  # This file should be kept secret
dh dh4096.pem
tls-auth ta.key 0
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway autolocal"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

Klient:

client
dev tun
proto udp
remote x.x.x.x <port number>
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert vpnclient.crt
key vpnclient.key
tls-auth ta.key 1
ns-cert-type server
cipher AES-256-CBC
comp-lzo
verb 3

18
2017-11-30 23:42


Ursprung


/sbin/route add -net 0.0.0.0 netmask 128.0.0.0 gw 10.8.0.5  Warum Netzmaske 128.0.0.0? - Antony Gibbs
Danke DrDinosaur für das Aufzeigen serverfault.com/questions/312860/... - Antony Gibbs
Nächstes Mal extrahiere die relevant Informationen und fügen Sie es in die Frage ein. Pastebin-Snippets haben eine begrenzte Lebensdauer. - MLu


Antworten:


Es gibt zwei Teile in der Lösung:

1. Leite den gesamten Verkehr in den Tunnel um

Die einfachste Lösung - verwenden Sie OpenVPNs --redirect-gateway autolocal Option (oder legen Sie es in der Konfigurationsdatei als redirect-gateway autolocal.

2. Behandeln Sie den Datenverkehr auf dem OpenVPN-Server

Jetzt, da der Tunnel hochgefahren ist, geht der gesamte Verkehr in den Tunnel und erscheint am Ende des Servers tun0 Schnittstelle.

Sie müssen zwei Dinge konfigurieren, damit es funktioniert:

ein. Aktivieren Sie die Paketweiterleitung

Standardmäßig ist die Paketweiterleitung in den meisten Distributionen deaktiviert, daher gelangen Pakete von der Tunnelschnittstelle niemals zur öffentlichen Schnittstelle. Sie müssen die Weiterleitung aktivieren mit:

~ # sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

Sobald getestet, machen Sie die Änderung dauerhaft /etc/sysctl.conf

Stellen Sie auch sicher, dass iptables blockieren den weitergeleiteten Verkehr nicht:

~ # iptables -I FORWARD -j ACCEPT

Das ist gut genug zum Testen - in der Produktion werden Sie die Firewall-Regeln etwas genauer machen wollen, aber das ist hier nicht möglich.

b. NAT die ausgehenden Pakete aus dem Tunnel

Bei aktivierter Weiterleitung werden die Pakete standardmäßig mit ihrer Quelladresse unverändert weitergeleitet, in Ihrem Fall also 10.8.0.6 - Solche Pakete werden entweder auf dem ISP-Gateway abgelegt oder, selbst wenn sie zum Ziel gelangen, findet die Antwort niemals den Weg zurück. Diese privaten Adressen sind im Internet nicht routingfähig.

Die Lösung ist für NAT der Egress-Verkehr, d. H. Den privaten ersetzen 10.8.0.6 Adresse mit der öffentlichen IP-Adresse des VPN-Servers. Dadurch wird sichergestellt, dass die Antworten den VPN-Server erreichen und dort zurück in den Tunnel weitergeleitet werden.

~ # iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

3. Testen Sie es

Jetzt versuche es ping 8.8.4.4 von Ihrem VPN-Client. Sie sollten eine Antwort sehen. Lass es uns wissen, wenn nicht :)


27
2017-12-02 22:05



Das funktioniert jetzt perfekt. Vielen Dank für die qualitativ hochwertige Antwort. - DrDinosaur
Auf der Clientseite fügen Sie add client zur Datei client.conf hinzu, oder fügen Sie der Befehlszeile die Option -pull hinzu, damit der Client die vom Server gestoßene Konfiguration akzeptiert. Wenn der Client unter Windows Vista oder höher ausgeführt wird, deaktivieren Sie die Benutzerkontensteuerung, da andernfalls der auf dem Client ausgeführte openpn-Dienst keine Routen festlegen kann. - Viktor
> b. NAT die ausgehenden Pakete aus dem Tunnel Das war hilfreich für mich. - FelikZ
Beachten Sie, dass die FORWARD -j ACCEPT-Regel den Server zu einem offenen Router zwischen allen Schnittstellen macht. Es darf nicht auf Produktionssystemen verwendet werden. Aber für ein HowTo bekommen Sie im Grunde genommen schnell einen sehr guten Befehlssatz. - Sprinterfreak
Macht der Redirect all the traffic into the tunnel Schritt in der Client-Konfiguration? - aircraft