ubuntuusers.de

DNS-Server

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Dieser Artikel beschreibt die Möglichkeiten zur Bereitstellung eines DNS-Servers über ein Router-Multifunktionsgerät[2].

Man hat grundsätzlich diese Möglichkeiten:

  1. Man teilt den Clients per DHCP lediglich die IP-Adressen von DNS-Servern mit. Hierzu siehe Router/DHCP-Server.

  2. Man installiert auf dem Router zusätzlich einen DNS-Server, z.B. Bind oder Unbound 🇬🇧. Den Clients teilt man per DHCP die eigene IP-Adresse als DNS-Server mit.

  3. Man installiert auf dem Router einen DNS-Cache, dies ist ein DNS-Server, welcher selber keinerlei Autorität über irgendwelche DNS-Namen oder -Zonen hat, sondern alle bei ihm eintreffenden Anfragen an ihm bekannte DNS-Server (Forwarder) weiterleitet und die Antworten speichert. Bei Ubuntu kann man hierfür beispielsweise Dnsmasq oder systemd-resolved verwenden. Den Clients teilt man per DHCP die eigene IP-Adresse (in diesem Artikel beispielhaft: 192.168.33.1) als DNS-Server mit; dazu muss man im DHCP-Server des Routers diese als Namensserver für die Clients konfigurieren.

Im weiteren beschränkt sich dieser Artikel auf die zuletzt genannte Variante.

DNS-Cache mit dnsmasq

Diese Wahl liegt nahe, wenn man ohnehin dnsmasq bereits als DHCP-Server verwendet. In der Konfigurationsdatei /etc/dnsmasq.conf muss lediglich die Funktion DNS-Cache aktiviert werden:

interface=LAN
listen-address=127.0.0.1
listen-address=192.168.33.1
server=8.8.8.8
server=213.73.91.35
  • Mit interface gibt man den Namen (hier beispielhaft: LAN) der Netzwerkschnittstelle an, auf der DNS-Anfragen erwartet werden. Man kann dieses Schlüsselwort mehrmals verwenden.

  • listen-address benennt eine IP-Adresse dieses DNS-Servers. (Die man dem Router über die Netzwerk-Konfiguration bereits gegeben hat.) Man sollte immer zusätzlich auch eine Adresse aus dem Block 127/8 angeben, damit der Router seinen eigenen DNS-Cache auch selbst benutzen kann.

  • server bezeichnet einen anderen DNS-Server, an den DNS-Anfragen weitergeleitet werden. (Forwarder) Man kann dieses Schlüsselwort mehrmals verwenden.

In den Artikel Dnsmasq und Router/DHCP-Server finden sich weitere Hinweise.

DNS-Cache mit systemd-resolved

Dies ist attraktiv, wenn man auf dem Router systemd-networkd zur Konfiguration des Netzwerks benutzt und dnsmasq nicht installieren möchte.

Man richtet zuerst den DNS-Cache auf dem Router ein, so wie es im Artikel systemd-resolved beschrieben ist. Die zu befragenden DNS-Server kann man z.B. in der .network-Datei der Schnittstelle zum Internet hinterlegen.

Der DNS-Cache von systemd-resolved ist nun zwar auf den Ports 53/udp und 53/tcp über das Netzwerk erreichbar, jedoch nur über die Adresse 127.0.0.53. Somit kann nur der Router selber den DNS-Server nutzen. Damit Rechner im LAN diesen Server auch erreichen können, müssen auf dem Router aus dem internen Netzwerk auf seiner internen IP-Adresse (hier beispielhaft: 192.168.33.1) eintreffende DNS-Anfragen auf diese IP-Adresse umgeleitet werden. Dies kann per NAT erfolgen, wie im Artikel Router/NAT beschrieben, hier jedoch für die interne Netzwerkschnittstelle:

iptables -t nat -I  PREROUTING -p tcp --dport 53 -d 192.168.33.1/32                -j NETMAP --to 127.0.0.53/32
iptables -t nat -T POSTROUTING -p tcp --sport 53 -s 127.0.0.53/32 ! -d 127.0.0.0/8 -j NETMAP --to 192.168.33.1/32 
iptables -t nat -I  PREROUTING -p udp --dport 53 -d 192.168.33.1/32                -j NETMAP --to 127.0.0.53/32
iptables -t nat -T POSTROUTING -p udp --sport 53 -s 127.0.0.53/32 ! -d 127.0.0.0/8 -j NETMAP --to 192.168.33.1/32  

Dies funktioniert nicht über das Protokoll IPv6, da systemd-resolved kein Netzwerk-Interface hierfür besitzt.

Diese Revision wurde am 20. März 2022 18:56 von kB erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Router, System, Internet, Netzwerk