
Ich verwende eine OpenVPN-Verbindung zwischen meinem Laptop und meinem Server. Die Konfiguration hat bis heute funktioniert (ich habe einfach ausgeführt apt update && apt upgrade
), aber seitdem sind meine DNS-Einstellungen nach der Verbindung mit dem OpenVPN „falsch“.
Nach der Verbindung mit dem OpenVPN-Server habe ich zwei „Catch-All“-DNS-Domäneneinträge ( DNS Domain: ~.
) in meiner systemd-resolve
Konfiguration.
Bereinigte Ausgabe von systemd-resolve --status
:
Link 11 (tun0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.X.Y
DNS Domain: ~.
Link 2 (enp0s25)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 10.16.X.Y
10.16.X.Y
DNS Domain: ~.
Somit werden DNS-Anfragen nun nicht mehr sicher durch das VPN getunnelt, sondern können auch über das normale Netz geleitet werden.
Dies führt zu einem DNSLeak und noch schlimmer: VPN-interne Hostnamen werden (hin und wieder) nicht richtig aufgelöst.
Mir sind nur Möglichkeiten bekannt, den Eintrag zur tun0-Schnittstelle hinzuzufügen, DNS Domain: ~.
um das Problem zu beheben. Aber wie entferne ich einen bereits vorhandenen Eintrag aus der realen Schnittstelle?
Ich verwende diese Konfiguration bereits, um systemd-resolved in meiner OpenVPN-Client.conf zu aktualisieren:
# Upate systemd-resolvd
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .
Hat jemand eine Idee, wie man das lösen kann?
// Update: Es scheint sich um ein länger bekanntes Problem zu handeln, bei dem NetworkManager beginnt, die Stamm-DNS-Domäne willkürlich an Links anzuhängen. Es gibt eine interessante Diskussion darüber in einemGitHub-Problemim Repo des Entwicklers des update-systemd-resolved
Skripts.
// Wahrscheinlichdieses Commitzu NetworkManager hat es kaputt gemacht. Da es die Standard-DNS-Route für das Verhalten aller Schnittstellen eingeführt hat.
Antwort1
Fügen Sie der Client-Konfigurationsdatei (der Datei mit der Erweiterung .ovpn), die vom OpenVPN-Server heruntergeladen wurde, die folgende Zeile hinzu:
dhcp-option DOMAIN-ROUTE .
Wie Sie wissen, müssen Sie in Ubuntu 18.04 vor dem Hinzufügen dieser Zeile update-systemd-resolved
Skripte installieren, wie in beschriebenhttps://github.com/jonathanio/update-systemd-resolved
Wenn es immer noch nicht funktioniert, müssen Sie möglicherweise auch Ihren internen DNS-Server hinzufügen. Überprüfen Sie, ob die Zeilen, die Sie am Ende der .ovpn-Datei hinzufügen, wie folgt aussehen:
script-security 2
dhcp-option DNS 10.1.0.1 # replace this IP with your DNS server IP.
dhcp-option DOMAIN yourinternaldomain.local # replace this with your internal domain name.
dhcp-option DOMAIN-ROUTE .
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
Wenn Sie die Benutzeroberfläche (Gnome) verwenden, um eine Verbindung herzustellen
Wenn Sie die UI-VPN-Symbole zur Verbindung mit Ihrem VPN verwenden, müssen Sie zuletzt die geänderte OVPN-Datei erneut importieren.
Führen Sie dazu in einem Terminal Folgendes aus:
sudo apt install openvpn openvpn-systemd-resolved resolvconf
sudo apt install network-manager-openvpn network-manager-openvpn-gnome
Klicken Sie im Ubuntu-Startmenü:
Geben Sie das Wort „Netzwerk“ ein und klicken Sie auf Netzwerk. Es sollte ungefähr Folgendes angezeigt werden:
Klicken Sie in das "+" Melden Sie sich beim VPN an und klicken Sie auf die Option „Aus Datei importieren“:
Geben Sie nach dem Import einen Namen ein und klicken Sie oben rechts im Dialogfeld auf die Schaltfläche „Hinzufügen“.
Sie sind fertig!
Um eine Verbindung zum VPN herzustellen, klicken Sie auf das Netzwerksymbol und anschließend auf das Schlosssymbol.