In diesem Artikel wird beschrieben, wie Sie die DNS-Auflösung auf einem Linux-System konfigurieren können. Der Service resolved ist ein Systemd-Dienst, der für die Auflösung von DNS-Anfragen zuständig ist. Dieser kann zusätzlich zu den klassischen Methoden wie /etc/hosts und /etc/resolv.conf verwendet werden.
Der Vorteil von resolved ist, dass es die DNS-Anfragen asynchron und parallel verarbeitet. Dadurch wird die Antwortzeit auf DNS-Anfragen verkürzt und die Systemleistung verbessert. Zusätzlich kann er auch DNS-Anfragen cachen, um die Antwortzeit weiter zu verkürzen.
Die Konfiguration von resolved erfolgt über die Datei /etc/systemd/resolved.conf. In dieser Datei können Sie die DNS-Server, die aufgelösten Domains und die DNS-Suche konfigurieren. Die Konfiguration wird in der Sektion [Resolve] vorgenommen.
# Öffnen der Konfigurationsdatei
nano /etc/systemd/resolved.conf
Beispiel-Konfiguration:
[Resolve]
DNS=<DNS-Server-IP>
Domains=<Domain (z.B. local)>
Damit ist resolved bereits fertig konfiguriert. Allerdings müssen noch weitere Schritte unternommen werden, um resolved zu aktivieren.
Um resolved zu aktivieren, müssen Sie den Dienst starten und sicherstellen, dass er beim Systemstart gestartet wird.
# Starten des Dienstes
systemctl start systemd-resolved
# Aktivieren des Dienstes
systemctl enable systemd-resolved
# Überprüfen des Dienststatus
systemctl status systemd-resolved
Damit ist resolved aktiviert und konfiguriert, allerdings müssen Sie noch die DNS-Auflösung in der Datei /etc/nsswitch.conf konfigurieren.
Die DNS-Auflösung wird in der Datei /etc/resolv.conf konfiguriert. In dieser Datei können Sie die Reihenfolge der DNS-Auflösung konfigurieren. Die Konfiguration wird in der Sektion hosts vorgenommen.
Damit sich aber resolved um die DNS-Auflösung kümmert, müssen Sie die Datei /etc/resolv.conf auf einen symbolischen Link zu /run/systemd/resolve/stub-resolv.conf umleiten.
# Löschen der Datei /etc/resolv.conf (falls vorhanden)
rm /etc/resolv.conf
# Erstellen des symbolischen Links
ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Damit ist die DNS-Auflösung auf Ihrem Linux-System konfiguriert und resolved ist aktiviert. Sie können nun die DNS-Auflösung testen, indem Sie eine Domain auflösen.
# Auflösen einer Domain
nslookup web.de
Antwort sollte in etwa so aussehen:
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: web.de
Address: 82.165.229.83
Name: web.de
Address: 82.165.229.138
Sie können sich die Statistiken von resolved anzeigen lassen, indem Sie den Befehl resolvectl status ausführen.
# Anzeigen der Statistiken
resolvectl statistics
# Statistiken, welche jede Sekunde aktualisiert werden
watch -n 1 resolvectl statistics
Beispiel-Ausgabe:
Transactions
Current Transactions: 0
Total Transactions: 227
Cache
Current Cache Size: 2
Cache Hits: 50
Cache Misses: 181
Wenn Sie resolved in einem Proxmox-Container (LXC) verwenden möchten, muss verhindert werden, dass proxmox die Datei /etc/resolv.conf überschreibt. Dazu muss lediglich eine leere Datei mit dem Namen /etc/.pve-ignore.resolv.conf angelegt werden.
# Anlegen der Datei
touch /etc/.pve-ignore.resolv.conf
Danach können die Scritte von oben ganz normal ausgeführt werden.
Da der DNS-Server in der Konfiguration von resolved festgelegt wird, ist es notwendig diese Einstellung in der Datei /etc/systemd/resolved.conf zu ändern, wenn der DNS-Server geändert werden soll.
Dies ist zusätzlicher Aufwand, aber die spürbare Verbesserung der Systemleistung und die asynchrone Verarbeitung von DNS-Anfragen rechtfertigen diesen Aufwand. Dazu entlastet es auch den DNS-Server massiv.