Ubuntu 18.04 keine DNS-Auflösung bei Verbindung mit openvpn

39

Wenn ich über Gnome Network-Manager eine Verbindung zu einem VPN-Netzwerk herstelle, geht die DNS-Auflösung verloren, und in der Praxis kann ich weder innerhalb noch außerhalb des VPN-Netzwerks auf Ressourcen zugreifen.

Wenn ich Ubuntu 16.04 verwendete und das VPN verwendete, " /etc/resolv.conf/" enthielt die Datei die DNS-Server des (VPN-) Netzwerks, mit dem ich verbunden war. Jetzt enthält es immer die folgenden Einträge:

nameserver 127.0.0.53
search myprovider.com

Soweit ich verstanden habe, 127.0.0.53ist die Adresse des DNS-Stubs, der von der system-resolved.

Ich vermute, dass dies ein Fehler ist, weil das VPN der Ubuntu 16.04 gut funktionierte. Kann ich die DNS-Server meines Netzwerks einstellen, wenn ich einen VPN-Dienst verwende?

Aktualisieren:

Ich habe versucht, mit der am Ende des Beitrags angehängten Konfigurationsdatei eine Verbindung zum OpenVPN-Netzwerk herzustellen, erhalte jedoch die folgende Fehlermeldung:

 Authenticate/Decrypt packet error: cipher final failed

Ich habe überprüft, dass der Server die LZO-Komprimierung verwendet, und ich habe es auch aktiviert. Die Verbindung bleibt bestehen, ich kann jedoch nicht zu einer Seite innerhalb oder außerhalb des VPN navigieren.

In die unten aufgeführte Konfigurationsdatei habe ich die in den Antworten angegebenen Lösungen aufgenommen

 client
 dev tun
 proto udp
 remote openvpn.bibsys.no 1194
 remote my-server-2 1194
 resolv-retry infinite
 nobind
 user myuser
 group myuser
 persist-key
 persist-tun
 ca ca-cert.pem
 cert openvpn.crt
 key openvpn.key
 cipher AES-256-CBC
 comp-lzo yes
 script-security 2
 up /etc/openvpn/scripts/update-systemd-resolved
 down /etc/openvpn/scripts/update-systemd-resolved
 down-pre
orestis
quelle
1
Beim Debuggen eines ähnlichen Problems, das nicht exakt gleich gelöst werden konnte, verwendete ich resolvectl statusund resolvectl helpum meine spezifische Lösung herauszufinden.
notbad.jpeg

Antworten:

25

Ich habe in diesem Blog-Beitrag eine Lösung gefunden . Obwohl zwei Lösungen erwähnt werden, bevorzuge ich die zweite, da dies bedeutet, dass mein DNS vom OpenVPN-Server festgelegt wird (die erste Lösung bedeutet, dass ich dieselben DNS-Server verwende, unabhängig davon, ob ich mit dem OpenVPN-Server verbunden bin oder nicht).

Zusamenfassend:

  • sudo mkdir -p /etc/openvpn/scripts
  • sudo wget https://raw.githubusercontent.com/jonathanio/update-systemd-resolved/master/update-systemd-resolved -P /etc/openvpn/scripts/
  • sudo chmod +x /etc/openvpn/scripts/update-systemd-resolved

Bearbeiten Sie dann Ihre OpenVPN-Client-Datei (z. B. client.ovpn), indem Sie die Up- / Down-Skripte folgendermaßen ändern:

script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
up /etc/openvpn/scripts/update-systemd-resolved
down /etc/openvpn/scripts/update-systemd-resolved

(Ich habe die ursprünglichen Auf- / Ab-Einstellungen auskommentiert).

Andy Turfer
quelle
Wenn man das Gnome-Dienstprogramm openvpn verwendet, wo soll die Datei config.ovpn gespeichert werden?
orestis
1
config.ovpnwird nicht "gefunden" - es ist die Client-Konfigurationsdatei, die für die Verbindung verwendet wird. Entweder generieren Sie es oder es wird Ihnen von Ihrem OpenVPN-Anbieter ausgestellt (und es wird möglicherweise nicht aufgerufen config.ovpn- es kann auch anders lauten client.ovpn).
Andy Turfer
Das funktioniert einfach perfekt.
Ahsanul Haque
2
Ich bekommeWARNING: Failed running command (--up/--down): external program fork failed
Dummkopf
Leider funktionierte dies nicht für ein VPN, das TCP verwendet, Sites außerhalb von VPN werden nicht aufgelöst, daher habe ich angefangen, client.pritunl.com/#install zu verwenden , was nützlich war
Saisurya Kattamuri
48

Problem

Die Datei /etc/resolv.confwird vom /etc/openvpn/update-resolv-confSkript nicht aktualisiert, da sie unter resolvconfUbuntu 18.04 nicht standardmäßig installiert ist.

Tatsächlich sucht eine der ersten Zeilen dieses Skripts nach der /sbin/resolvconfausführbaren Datei:

[ -x /sbin/resolvconf ] || exit 0

Die Installation von resolvconf über apt-getist keine Lösung, da das /etc/openvpn/update-resolv-confSkript die /etc/resolv.confDatei mit dem übertragenen DNS-Eintrag aktualisiert , das tun-Gerät sie jedoch anscheinend ignoriert.

Lösung

  1. Ubuntu 18.04 wird verwendet systemd-resolved, Sie müssen also nur das openvpn-Hilfsskript für systemd-resolvedvia installieren

    sudo apt install openvpn-systemd-resolved
    

    oder mit dieser GitHub Anleitung

  2. Aktualisieren Sie Ihre config.ovpnDatei und fügen Sie folgende Zeilen hinzu:

    script-security 2
    up /etc/openvpn/update-systemd-resolved
    down /etc/openvpn/update-systemd-resolved
    down-pre
    

    Das, anstatt das Auf und Ab /etc/openvpn/update-resolv-confder conf zu addieren.

  3. Um DNS-Leakage zu verhindern, sollten Sie diese Zeile am Ende der config.ovpnDatei einfügen (gemäß diesem Systemkommentar ):

    dhcp-option DOMAIN-ROUTE .
    
Qlimax
quelle
1
Vielen Dank, ich arbeite für Ubuntu 18.04. Und ich möchte angeben, dass dieser Parameter script-security 2noch vor den Zeilen hoch / runter benötigt wird, sonst stürzt das Programm mit einem Fehler ab (OpenVPN 2.4.4)
lucidyan
Froh, dass es geholfen hat :) Der letzte Satz in der Antwort wurde geändert, bei mir script-security 2 war das nicht nötig. Das liegt vielleicht daran, dass ich den openvpn-Client als root (mit sudo) verwende
Qlimax
1
@Qlimax Wissen Sie, wie wir diese Einstellungen in den Gnome OpenVPN-Client importieren?
Orestis
2
@orestis Sie müssen dieses Paket installieren sudo apt-get install network-manager-openvpn-gnome Dann sollten Sie in der Lage sein, .ovpn-Konfigurationsdateien in den gnome-Netzwerkmanager zu importieren. askubuntu.com/questions/187511/… Die Benutzeroberfläche hat sich im Laufe der Zeit geändert. Sie sollten dies unter settings-> network-> vpn
Qlimax
1
Überrascht, dass dies für so viele von Ihnen funktioniert: Ich habe eine ovpn.config, aber NetworkManager scheint sie nicht zu verwenden. Haben Sie die Datei bearbeitet und neu importiert, um insbesondere die Up / Down-Skripte zu ersetzen? Weil ich diese undurchsichtige Binärdatei / usr / lib / NetworkManager / nm-openvpn-service-openvpn-helper sehe, für die ich keine Dokumentation finden konnte. Wenn ein erneuter Import von ovpn.config erforderlich ist, ändern Sie die Antwort.
Harald
4

Tatsächlich gibt es eine viel einfachere Lösung für dieses Problem. Das Problem ist der DNS-Verkehr und wie Ubuntu 18 das schafft. Standardmäßig ist die IP-Weiterleitung deaktiviert, was OpenVPN benötigt, um eine ordnungsgemäße Vernetzung zu gewährleisten. Sie müssen lediglich den folgenden Befehl ausführen:

sudo nano /etc/sysctl.conf

Sobald Sie diese Datei geöffnet haben, suchen Sie nach der Zeile, die enthält net.ipv4.ip_forward. Wenn diese Zeile kommentiert ist, entfernen Sie das # -Zeichen am Anfang der Zeile (wenn es nicht kommentiert ist, liegt ein anderes Problem vor). Speichern Sie die Datei und starten Sie die OpenVPN-Serverinstanz neu.

Für dieses Update sind nach dem Upgrade auf Ubuntu 18 keine Änderungen am Client- oder OpenVPN-Code erforderlich. Das Funktionieren wurde getestet und bestätigt.

Dies erfordert jedoch natürlich, dass Sie den Server verwalten können. Und leider gibt es den Fehler für viele, die gerade mit 18.04 eine Verbindung zu einem OpenVPN-Server herstellen, der von jemand anderem verwaltet wird ...

Max
quelle
hat bei mir nicht funktioniert. Wie haben Sie in Ihrem Fall festgestellt, dass dies das Problem ist?
Hwjp
WARNUNG: Sie müssen ip_forward NIEMALS auf dem openvpn- Client aktivieren ! Es ist ein Sicherheitsrisiko. Auf dem openvpn- Server benötigen Sie ihn möglicherweise, abhängig von der verwendeten Konfiguration, und wahrscheinlich wird dieser Kommentar deshalb angezeigt.
Higuita
2

Getestet unter Ubuntu 18.04 am 13. September 2018

Es gibt noch weitere nützliche Befehle, mit denen Sie die gewünschten Einstellungen über die Befehlszeile vornehmen können. In meinem Fall können Sie Ihre VPN-Verbindung jedoch sowohl über die Befehlszeile als auch über die grafische Benutzeroberfläche steuern.

sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com ifname --

ifname -- ist standardmäßig erforderlich, hat jedoch keine Auswirkungen

sudo nmcli connection modify la.vpn.contoso.com ipv4.dns 172.16.27.1 sudo nmcli connection modify la.vpn.contoso.com ipv4.dns-search int.contoso.com sudo nmcli connection modify la.vpn.contoso.com ipv4.never-default yes

never-default sollte Remote-Gateway nicht als Standardroute verwenden

Und noch viel mehr interessierter letzter Schliff:

nmcli connection modify la.vpn.contoso.com vpn.data 'ca = /tmp/la.vpn.contoso.com/you/ca.crt, key = /tmp/you.key, dev = tun, cert = /tmp/you.crt, cert-pass-flags = 1, comp-lzo = adaptive, remote = la.vpn.contoso.com:1194, connection-type = tls'

Anschließend können Sie vpn mit der GUI steuern oder folgende Befehle verwenden:

sudo nmcli --ask connection up la.vpn.contoso.com sudo nmcli connection down la.vpn.contoso.com

vskubriev
quelle
0

Ich bin auch betroffen. In meinem Fall verwende ich OpenVPN mit einem internen Nameserver (der sich im VPN befindet). Das funktionierte bis Ubuntu 17.10 (mit "hosts: files dns" in /etc/nsswitch.conf).

/etc/resolv.conf wurde von den openvpn-Skripten korrekt aktualisiert (durch Aufrufe von / etc / openvpn / update-resolv-conf in der Konfigurationsdatei des openvpn-Clients).

Die Namensauflösung für Hosts im VPN funktionierte jedoch nicht mehr (oder zumindest sporadisch ... Ich denke, der lokale DNS-Cache hat die Namen ausgewählt, aber nach einer ziemlich langen Zeit).

Was zu helfen scheint oder sogar das Problem zu beheben (obwohl das noch zu früh ist), ist die Installation des folgenden Pakets:

sudo apt installiere openvpn-systemd-resolved

In ein paar Tagen werde ich mehr Erfahrung haben, ob dies mein Problem behebt oder nicht.

Wenn Sie auch betroffen sind, versuchen Sie dies und schreiben Sie Kommentare!

Prost,

Michael.

Michael Opdenacker
quelle
Schließlich scheint es keine Lösung zu sein. Ich habe wieder das Problem. Ich denke, etwas anderes hat es zum
Laufen gebracht
1
Vielleicht löschst du dann deine Antwort? Es scheint, dass die Entscheidung bereits im Folgenden gefunden wurde
lucidyan