Ubuntu und OpenVPN: Gepushte DNS Server Systemweit bekannt machen

Achtung! Dieser Artikel ist älter als ein Jahr. Der Inhalt ist möglicherweise nicht mehr aktuell!

Um mich mit meinem Heimnetzwerk zu verbinden benutze ich OpenVPN. Der Endpoint liegt auf meiner pfSense Firewall. Dort kann ich eine fertige OpenVPN Konfigurationsdatei erzeugen, in der alle benötigten Zertifikate und Verbindungsdetails hinterlegt sind.

In Ubuntu kann man diese Konfiguration in den Network Manager importieren. Leider funktioniert das nicht so wirklich. Selbst wenn man manuell diese Einstellungen ändert und manuell DNS Server setzt, werden diese nicht Systemweit bekannt gemacht. Das Resultat ist eine stehende Verbindung, jedoch ohne Namensauflösung. Surfen an sich macht dann nicht viel.

Auf den Network Manager werde ich also erstmal wieder verzichten, da ich bei einer VPN Verbindung nicht an drei verschiedenen Programmen rumdoktern will. Ich benutze als Fallback also das Terminal.

Mein OpenVPN Server pushed die IP Adressen des DNS Servers. Damit diese nun Systemweit bekannt ist hat man ein paar Möglichkeiten.

Unelegante Lösung: /etc/resolv.conf anpassen

Diese Lösung ist nicht elegant, da ich hier wieder manuell am System rumschrauben muss. Bei Linux konfiguriert man in dieser Datei alle DNS Server, die zur Namensauflösung verwendet werden sollen.

Mittlerweile ist auf jedem Linux das resolvconf Package installiert. Das Programm setzt in der Datei die IP 127.0.0.1 (also Localhost) und startet einen DNS Forwarder. Die Abfragen werden dann an die DNS Server weitergeleitet, die das Programm per DHCP erhalten hat.

Für einen normalen Anwender ist das super, da er sich nie mit den verschiedensten DNS Einstellungen pro Netzwerk rumschlagen muss. Um nun die VPN DNS Server zu verwenden muss man die Datei jedes mal entsprechend anpassen. Keine Elegante Lösung.

Elegante Lösung: OpenVPN Konfiguration anpassen

Das OpenVPN Programm kann mit dem resolvconf Programm sprechen und bei einer erfolgreichen Verbindung die gepushten DNS Server als Forwarder eintragen.

Dazu muss man einmalig die Konfigurationsdatei anpassen und folgenden Block am Ende hinzufügen:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

pfSense: OpenVPN Client Export Utility

Die drei Zeilen können auch direkt beim Exportiern angegeben werden, was noch Endbenutzerfreundlicher ist. Einfach die drei Zeilen bei Advanced hinzufügen.

openvpn_client_export_utility_advanced

Bonus: Verbose Ausgabe

Um die gepushten Information sichtbar zu machen, muss man OpenVPN in einen gesprächigeren Modus schalten. Ein Aufruf, der alle wichtigen Informationen anzeigt, jedoch keinen Traffic Fluss (und somit Scroll-Freundliche) sieht zum Beispiel so aus:

:~$ sudo openvpn --config firewall-udp-1194-laptop-config.ovpn --verb 4

Darin findet man zum Beispiel eine Zeile, die die gepushten Infos enthält:

PUSH: Received control message: 'PUSH_REPLY,route 192.168.1.0 255.255.255.0,dhcp-option DOMAIN veloc1ty.lan,dhcp-option DNS 192.168.3.2,dhcp-option DNS 192.168.3.3 [...]

Und das update-resolv-conf aufgerufen wird:

[...] /etc/openvpn/update-resolv-conf [...]
dhcp-option DOMAIN veloc1ty.lan
dhcp-option DNS 192.168.3.2
dhcp-option DNS 192.168.3.3

##


Du hast einen Kommentar, einen Wunsch oder eine Verbeserung? Schreib mir doch eine E-Mail! Die Infos dazu stehen hier.

🖇️ = Link zu anderer Webseite
🔐 = Webseite nutzt HTTPS (verschlüsselter Transportweg)
Zurück