[[Vorlage(Getestet, jammy)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] }}} {{{#!vorlage Hinweis In diesem Artikel wird nur für Clients die Benutzung und Konfiguration von DNS-Servern beschrieben. Die Einrichtung eines Rechners als autoritativer oder rekursiver DNS-Server wird in anderen Artikeln behandelt, siehe beispielsweise: [:Router/DNS-Server:] }}} [[Inhaltsverzeichnis()]] DNS steht für "Domain Name System" und beschreibt die Namensauflösung von Host-Namen wie "fileserver.home.arpa oder "example.com". Domain-Namen wurden eingeführt, weil sich Menschen Namen besser merken können als IP-Adressen. Ein DNS-Server liefert auf Anfrage die IP-Adresse zum Host-Namen. Dieser Artikel betrachtet jedoch nur Unicast-DNS. Bestimmte Zonen wie '''.local''' werden über [wikipedia:Zeroconf#Multicast_DNS:mDNS] aufgelöst. Hierfür ist [:Avahi:] zuständig. Ein DNS-Server kann ebenso mehrere Rollen einnehmen, welche in folgender Tabelle erläutert werden. {{{#!vorlage Tabelle Resolver/Recursor DNS-Server, der auf rekursive Anfragen antwortet und die Informationen dazu hierarchisch von der root-Zone beginnend abfragt. Er kann die Antworten zwischenspeichern, um Anfragen schneller zu beantworten zu können und Traffic zu vermeiden. +++ Forwarder/stub-Resolver DNS-Server, der auf rekursive Anfragen antwortet, diese jedoch einfach an einen Resolver weiterleitet und die Antworten zwischenspeichert (Cache). +++ autoritativer Server DNS-Server, der Zonendateien mit Records enthält, die von anderen Resolvern abgefragt werden. }}} Ubuntu nutzt wie die meisten Betriebssysteme nur einen Stub-Resolver. Dieser leitet alle Anfragen an einen DNS-Server weiter, der diese rekursiv beantworten kann (dies kann ebenso ein Stub-Resolver sein). Der Grund hierfür ist einerseits die einfachere Implementierung (ein Stub-Resolver muss nicht iterativ bei den autoritativen Servern nachfragen), andererseits das Einsparen von Netzwerkverkehr, da mehrere Rechner einen Resolver nutzen können und so gleiche Anfragen nur einmal beim autoritativen Server gestellt werden müssen. Zudem kann der zentraler Resolver einen Cache haben und so Antworten schneller liefern, als wenn jeder Rechner diese iterativ bei den autoritativen Servern abfragen würde. Die IP-Adressen der Resolver kann Ubuntu auf 3 Wegen automatisch erhalten: {{{#!vorlage Tabelle DHCPv4 [https://datatracker.ietf.org/doc/html/rfc2132#section-3.8 RFC2132] {en} Mittels DHCPv4 kann Ubuntu ein oder mehrere IPv4-Adressen für DNS-Server erhaltenen. +++ DHCPv6 [https://datatracker.ietf.org/doc/html/rfc3646#section-3 RFC3646] {en} Mit DHCPv6 kann kann Ubuntu ein oder mehrere IPv6-Adressen für DNS-Server erhaltenen. +++ Router-Advertisement [https://datatracker.ietf.org/doc/html/rfc8106#section-5.1 RFC8106] {en} Mit dem Router-Advertisement kann Ubuntu ein oder mehrere IPv6-Adressen für DNS-Server erhaltenen. }}} All diese Optionen sind in der Praxis in Benutzung, je nach Umgebung kann es aber sein, dass nur bestimmte Methoden zur Verfügung stehen (z.B. in reinen IPv6-Netzwerken steht kein DHCPv4 zur Verfügung). Zudem können DNS-Server manuell über die Netzwerkkonfiguration wie [:NetworkManager:], [:systemd/networkd:] oder [:Netplan:] festgelegt werden. In manchen Fällen möchte man den DNS-Server selbst festlegen, da der verwendete bestimmte Anfragen verfälscht (um Zugriff auf bestimmte Internetseiten zu unterbinden) oder weil man z.B. Werbe-Domains auf 0.0.0.0 und :: auflösen möchte. Als Stub-Resolver kommt unter Ubuntu [:systemd/systemd-resolved:systemd-resolved] zum Einsatz. Dieser erhält IP-Adressen von Recursorn und fragt dort die DNS-Informationen rekursiv ab. = Aktuellen DNS-Server herausfinden = {{{#!vorlage Hinweis Bei systemd wurde der Befehl '''systemd-resolve''' in '''resolvectl''' [github:systemd/systemd/blob/main/NEWS:umbenannt]. }}} Der Befehl {{{#!vorlage Befehl resolvectl --no-pager |grep Server }}} Dies zeigt die IP-Adresse an, welche gerade als Recursor verwendet wird und welche Recursor zur Verfügung stehen. Ist einer nicht erreichbar, wird ein anderer gefragt. = Die Datei /etc/resolv.conf = Ursprünglich war unter UNIX- und Linux-Systemen vorgesehen, den DNS-Resolver manuell in diese Datei einzutragen. Da dies in vielen Fällen (u.a. bei Laptops) unkomfortabel ist, wurden Verwaltungsprogramme wie resolvconf entwickelt. In Ubuntu 18.04 und neuer existiert diese Datei gar nicht mehr, sondern sie ist eine symbolische Verknüpfung auf '''/run/systemd/resolve/stub-resolv.conf'''. Sie wird von [:systemd/systemd-resolved:systemd-resolved] verwaltet und darf auf keinen Fall manuell editiert werden, solange ein Verwaltungsprogramm aktiv ist. In dieser Datei ist nur die IPv4-Adresse 127.0.0.53 als DNS-Server eingetragen. Dies ist der Dienst systemd-resolved, welcher auf dem TCP- und UDP-Port 53 auf der IPv4-Adresse 127.0.0.53 lauscht. Die von systemd-resolved genutzten DNS-Server stehen in der Datei '''/run/systemd/resolve/resolv.conf'''. Diese erhält systemd-resolved nicht direkt, sondern über die Netzwerkkonfiguration, die auf verschiedenem Wege gemacht werden kann. In Ubuntu 16.04 und älter wurde [:resolvconf:] eingesetzt. = Desktopsysteme = Bei allen Desktop-Systemen ist der [:NetworkManager:] installiert. Der NetworkManager gibt die DNS-Server an systemd-resolved. Im NetworkManager kann über ''"Verbindungen bearbeiten"'' --> Verbindung auswählen --> ''"IPvX-Einstellungen"'' der DNS-Server sowohl für IPv4 als auch für IPv6 festgelegt werden. Dieser wird dann systemd-resolved mitgeteilt. = Server-Systeme = Unter Ubuntu 18.04 und neuer wird standardmäßig [:Netplan:] genutzt. Es kann aber auch [:systemd/networkd: systemd-networkd] genutzt werden. Auch der NetworkManager kann dort installiert und wie in Desktopsystemen genutzt werden. Die Nutzung der Datei '''/etc/network/interfaces''' funktioniert nicht, wenn man systemd-resolved nutzen möchte. = Verwaltung der /etc/resolv.conf unterbinden = Möchte man manuell in die Datei '''/etc/resolv.conf''' einen DNS-Server eintragen, so müssen die Verwaltungsprogramme dieser Datei deaktiviert bzw. deinstalliert werden. Soll der NetworkManager weiterhin installiert bleiben, muss er konfiguriert werden. Dazu muss in der Datei '''/etc/NetworkManager/NetworkManager.conf''' folgender Text innerhalb von ''[main]'' eingefügt werden: {{{ dns=none }}} Der NetworkManager bearbeitet dann nicht mehr die '''resolv.conf''', gibt seine Server jedoch weiterhin an systemd-resolved weiter. systemd-resolved muss daher ebenfalls abgeschaltet werden. Zuerst beendet man systemd-resolved mit {{{#!vorlage Befehl sudo systemctl stop systemd-resolved }}} Dann kann der Dienst mit {{{#!vorlage Befehl sudo systemctl disable systemd-resolved }}} deaktiviert werden (er startet dann nicht mehr automatisch). Danach muss die Datei '''/etc/resolv.conf''' [#resolv-conf-manuell-erstellen manuell erstellt] werden. = resolv.conf manuell erstellen = Nutzt man keine Verwaltungsprogramme für die Datei '''/etc/resolv.conf''', so muss diese Datei manuell erstellt werden. Zuerst muss die eventuelle symbolische Verknüpfung '''/etc/resolv.conf''' gelöscht werden. {{{ sudo rm /etc/resolv.conf }}} Danach muss mit root-Rechten eine neue Datei '''/etc/resolv.conf''' angelegt werden. Diese muss folgenden Inhalt haben: {{{ nameserver 10.0.0.1 #für IPv4 nameserver 2001:db8::1234:abcd #für IPv6 }}} Weitere Konfigurationsmöglichkeiten (u.a. zu Extended-DNS und Suchdomänen) sind in der [man:resolv.conf:Manpage] {en} beschrieben. #tag: Netzwerk, Internet, System, Sicherheit, Server