it-swarm.com.de

OpenVPN ist nicht das Standard-Gateway für den gesamten Datenverkehr

Ich versuche, meinen Client dazu zu bringen, den gesamten Datenverkehr über einen VPS weiterzuleiten, auf dem OpenVPN ausgeführt wird. Wie Sie sehen können, werden Pings sowohl für Domänen als auch für unformatierte IP-Adressen zugelassen, aber es wird kein Datenverkehr zugelassen, der durch Curl und Traceroute erzeugt wird. Der Datenverkehr funktioniert ordnungsgemäß, wenn keine Verbindung zum VPN besteht.

Alle Informationen finden Sie hier: https://Pastebin.com/tGspNefn

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

Client:

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
21
DrDinosaur

Die Lösung besteht aus zwei Teilen:

1. Leiten Sie den gesamten Verkehr in den Tunnel um

Die einfachste Lösung - verwenden Sie die OpenVPN-Option --redirect-gateway autolocal (Oder fügen Sie sie als redirect-gateway autolocal In die Konfigurationsdatei ein.

2. Behandeln Sie den Datenverkehr auf dem OpenVPN-Server

Nachdem der Tunnel geöffnet ist, wird der gesamte Datenverkehr in den Tunnel geleitet und am Ende des Servers über die Schnittstelle tun0 Angezeigt.

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

a. Paketweiterleitung aktivieren

Standardmäßig ist in den meisten Distributionen die Paketweiterleitung 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

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

Stellen Sie außerdem sicher, dass iptables den weitergeleiteten Datenverkehr nicht blockiert:

~ # iptables -I FORWARD -j ACCEPT

Dies ist gut genug zum Testen - in der Produktion möchten Sie die Firewall-Regeln etwas spezifischer gestalten, aber das ist hier nicht möglich.

b. NAT die ausgehenden Pakete aus dem Tunnel

Wenn die Weiterleitung aktiviert ist, werden die Pakete standardmäßig mit unveränderter Quelladresse weitergeleitet, dh in Ihrem Fall 10.8.0.6. Solche Pakete werden entweder auf dem ISP-Gateway abgelegt oder selbst wenn sie das Ziel erreichen, findet die Antwort die nie Weg zurück. Diese privaten Adressen sind im Internet nicht routingfähig.

Die Lösung besteht darin, NAT den Ausgangsverkehr), dh die private 10.8.0.6 Adresse durch die öffentliche IP des VPN-Servers zu ersetzen. Dadurch wird sichergestellt, dass die Antworten den VPN-Server erreichen und dort auch Lass dich zurück in den Tunnel leiten.

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

. Teste es

Versuchen Sie nun ping 8.8.4.4 Von Ihrem VPN-Client aus. Sie sollten eine Antwort sehen. Lass es uns wissen wenn nicht :)

34
MLu