Wie man verschiedene DNS-Server für die Namensauflösung bestimmter Domänen verwendet - VPN Use-Case
Steckbrief
Veröffentlicht:
Kategorien:
Tags:
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.