[[Vorlage(Getestet, )]] {{{#!vorlage Wissen [:Router:] [:Router/Multifunktionsgerät:Router-Multifunktionsgerät] [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis()]] 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:]. 1. Man installiert auf dem Router zusätzlich einen DNS-Server, z.B. [:DNS-Server_Bind:Bind] oder [https://nlnetlabs.nl/projects/unbound/about Unbound] {en}. Den Clients teilt man per DHCP die eigene IP-Adresse als DNS-Server mit. 1. 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/systemd-resolved: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 [:Router/DHCP-Server: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: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/systemd-resolved: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: {{{#!vorlage Befehl 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. #tag: Netzwerk, Internet, System, Router