Wie man verschiedene DNS-Server für die Namensauflösung bestimmter Domänen verwendet - VPN Use-Case

Insider Blog

Autor

Steckbrief

Veröffentlicht:

April 21, 2022

Kategorien:

Das bewegt uns

Tags:

VPN, Linux

Wie man ausgewählte Domains über VPN unter Linux auflöst

In der heutigen Welt nutzen mehr Menschen als je zuvor VPN-Dienste, um aus der Ferne zu arbeiten. In manchen Fällen ist es jedoch nicht wünschenswert, den gesamten Datenverkehr und alle Domainnamenauflösungen über die VPN-Verbindung zu leiten. Selbst wenn der VPN-Server möchte, dass der Client genau so konfiguriert werden soll, kann der Client so konfiguriert werden, dass er die Anforderung, den gesamten Datenverkehr über die VPN-Verbindung zu leiten, ignoriert.

Zum Beispiel kann bei Openvpn die Option

pull-filter ignore redirect-gateway

verwendet werden, um den openvpn-client anzuweisen, alle "route all"-Anfragen des Servers zu ignorieren.

FRITZ!Box Beispiel

Kürzlich musste ich eine VPN-Verbindung zu einer FRITZ!Box nutzen. Das ist ein sehr beliebter Router in Deutschland, der nicht nur einfache VPN-Verbindungen anbietet, sondern auch alle Hosts in seinem Netzwerk zu seinem eigenen DNS hinzufügt. Wenn Sie mit einem Rechner mit dem Namen workstation ansprechen wollen, können Sie ihn über den dns-Namen "workstation.fritz.box" erreichen. Die fritz-box selbst ist auch unter dem dns-Namen fritz.box.

In meinem Fall ziehe ich es aus Geschwindigkeits- und Datenschutzgründen vor, meinen eigenen DNS-Server für alle Abfragen zu verwenden - das heißt, ich möchte nur die Domains mit dem Suffix fritz.box über die FRITZ!Box auflösen.

Lösung mit einem lokalen DNS-Server - dnsmasq

Dnsmasq ist ein leichtgewichtiger DNS-Server, den man auf dem eigenen Rechner laufen lassen kann, um die Kontrolle über die Namensauflösung zu bekommen. Ein netter Nebeneffekt ist, dass er seinen eigenen DNS-Cache hat, was wiederkehrende DNS-Abfragen schneller macht. Hier ist, wie ich ihn eingerichtet habe:

Bevor Sie beginnen, müssen Sie herausfinden, welcher DNS-Server im VPN verwendet wird. Normalerweise ist es das Standard-Gateway, das normalerweise ein .1 am Ende hat. Sie können die VPN-Protokolle genau beobachten, um herauszufinden, welcher DNS-Server bei der Verbindung verwendet wird.

Es gibt ein Tool namens dig, das DNS-Abfragen über bestimmte DNS-Server durchführen kann, zum Beispiel

dig @192.168.1.1 a fritz.box

wird den DNS-Server 192.168.1.1 nach der IP von fritz.box fragen. Dig ist sehr praktisch bei der Fehlersuche bei DNS-Problemen und Ihrer Einrichtung zu testen. Sie müssen es eventuell auf Ihrem System installieren. Unter Debian befindet es sich in einem Paket namens dnsutils.

Installieren Sie zuerst dnsmasq auf Ihrem Linux und bearbeiten Sie seine Konfiguration (normalerweise in /etc/dnsmasq.conf). Fügen Sie diese Zeilen hier ein:

resolv-datei=/etc/resolv.dnsmasq.conf
server=/fritz.box/192.168.1.1

fritz.box ist die Domain, die über den VPN-Dnsserver aufgelöst werden soll, in diesem Beispiel 192.168.1.1.

Die Resolv-Datei wird dnsmasq mitteilen, wie es seine DNS-Anfragen auflösen soll, falls es keine anderen Regeln gibt, also erstellen wir /etc/resolv.dnsmasq.conf mit dem Inhalt

Nameserver 1.1.1.1

Wenn Sie eine statische Netzwerkkonfiguration verwenden, können Sie diese jetzt einfach bearbeiten, um 127.0.0.1 als Nameserver zu verwenden. Wenn Sie automatische IP-Konfiguration mit dhcp verwenden, müssen Sie Ihren dhcp-Client so konfigurieren, dass er den neuen lokalen DNS-Server verwendet. Unter Debian, ist der Standard dhclient. In diesem Fall editieren Sie /etc/dhcp/dhclient.conf und fügen hinzu:

domain-name-servers 127.0.0.1 vorangestellt;

Das war's. Alles, was Sie jetzt noch tun müssen, ist dnsmasq neu zu starten, damit es seine Konfiguration neu lädt und dhclient neu zu verbinden/starten (das Trennen und erneute Verbinden des Netzwerks kann funktionieren, im Zweifelsfall starten Sie den Rechner neu).

Jetzt können Sie überprüfen, ob die Datei /etc/resolv.conf folgendes enthält

nameserver 127.0.0.1

als ersten Nameserver enthält. Wenn dies der Fall ist, sollte die ausgewählte Domain (in meinem Beispiel fritz.box) nun aufgelöst werden.

Bei dnsmasq können Sie mehrere server=-Zeilen hinzufügen, was praktisch ist, wenn Sie mehrere Domains haben, die über verschiedene DNS-Server aufgelöst werden müssen.

Vorheriger Artikel
Für Entwickler, Für Shopbetreiber - Wir arbeiten nicht mit beliebigen Frameworks, Bibliotheken, Plugins und Programmiersprachen. Wir lieben es professionell. Software, die bei Helm & Walter entsteht, soll leistungsfähig und schlank sein. Hier unsere Favoriten: PHP (rekursives Akronym für PHP: Hypertext Preprocessor) ist eine weit verbreitete und für den …
June 27, 2017
Bernd Helm
Nächster Artikel
Wir haben einen Wrapper veröffentlicht, der Amazon MWS in SP API umwandelt, um Entwicklern mit veralteten Systemen eine einfache Lösung anzubieten. Dieses Open-Source-Projekt bietet eine praktische Alternative zur Neuentwicklung und unterstützt die Fortführung bestehender Anwendungen.
February 21, 2024
Bernd Helm