linux-rhel-centos-fedora dns networkmanager rhel systemd-resolved

DNS on RHEL: NetworkManager & systemd-resolved (Artikel 075)

DNS-Verwaltung in der Red Hat Welt. Erfahren Sie das Zusammenspiel zwischen NetworkManager und systemd-resolved, die Nutzung von nmcli und die korrekte Konfiguration von Resolvern.

# DNS on RHEL: Den Resolver im Griff

TL;DR / Management Summary Im Gegensatz zu Ubuntu, das DNS fast ausschließlich über systemd-resolved regelt, ist in der RHEL-Welt (Red Hat Enterprise Linux) der NetworkManager der Dirigent. Er entscheidet, welche DNS-Server in die /etc/resolv.conf geschrieben werden oder ob er diese Aufgabe an systemd-resolved delegiert. Ein Senior Admin muss wissen, wie man DNS-Server via nmcli setzt und wie man verhindert, dass manuelle Änderungen in der resolv.conf vom System überschrieben werden.


# 1. Einführung & Architektur

Die DNS-Hierarchie in RHEL.

In RHEL 8/9 gibt es zwei Hauptakteure:

  1. NetworkManager: Verwaltet die Interfaces und deren Profile. Er schreibt standardmäßig die /etc/resolv.conf.
  2. systemd-resolved: Optional aktivierbar für Caching und DNSSEC.
graph TD
    A[nmcli / ifcfg-file] --> B[NetworkManager]
    B -->|Option 1: Default| C[/etc/resolv.conf - static file]
    B -->|Option 2: Proxy| D[systemd-resolved]
    D -->|Dynamically| E[/run/systemd/resolve/stub-resolv.conf]
    E -.->|Symlink| C

# 2. DNS via NetworkManager (nmcli)

Der Standard-Weg.

Verwenden Sie niemals vi /etc/resolv.conf auf einem RHEL-Server. Die Änderungen sind beim nächsten Netzwerk-Restart oder Reboot weg.

# DNS-Server setzen

# 1. Namen der Verbindung finden
nmcli connection show

# 2. DNS-Server hinzufügen
sudo nmcli connection modify "eth0" ipv4.dns "1.1.1.1 8.8.8.8"

# 3. DNS-Einträge priorisieren (ignore-auto-dns)
sudo nmcli connection modify "eth0" ipv4.ignore-auto-dns yes

# 4. Verbindung neu laden
sudo nmcli connection up "eth0"

# 3. systemd-resolved unter RHEL

Wenn Caching benötigt wird.

systemd-resolved ist in RHEL oft nicht standardmäßig aktiv. Wenn Sie es nutzen wollen:

# Aktivieren
sudo systemctl enable --now systemd-resolved

# Den NetworkManager anweisen, resolved zu nutzen
# In /etc/NetworkManager/conf.d/10-dns-resolved.conf:
# [main]
# dns=systemd-resolved

# Symlink für resolv.conf setzen
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

# 4. Day-2 Operations: Search-Domains & Metriken

Effiziente Auflösung.

# Search Domains setzen

Wichtig für interne Netze (ping server statt ping server.intern.local).

sudo nmcli connection modify "eth0" ipv4.dns-search "intern.local company.com"
sudo nmcli connection up "eth0"

# DNS Status prüfen

# Zeigt, welche Server NetworkManager aktuell kennt
nmcli dev show | grep DNS

# 5. Troubleshooting & “War Stories”

Wenn der Hostname nicht aufgelöst wird.

# Story 1: “Der DHCP-Overwrite”

Symptom: Der Admin setzt 1.1.1.1, aber nach 5 Minuten steht wieder die IP des lokalen Routers in der resolv.conf. Ursache: Der NetworkManager erhält DNS-Daten via DHCP und überschreibt die manuellen Werte. Lösung: ipv4.ignore-auto-dns yes setzen (siehe oben).

# Story 2: “Die immutable resolv.conf”

Symptom: nmcli ändert die DNS-Server, aber die /etc/resolv.conf ändert sich nicht. Ursache: Ein frustrierter Vorgänger hat die Datei mit chattr +i schreibgeschützt. Lösung: sudo chattr -i /etc/resolv.conf ausführen und danach wieder via NetworkManager verwalten. Lektion: Kämpfen Sie nicht gegen das System, arbeiten Sie mit dem NetworkManager.


# 6. Fazit & Empfehlung

  • RHEL Standard: Nutzen Sie nmcli, um DNS-Server zu verwalten. Es ist die sauberste Methode.
  • Performance: Wenn Ihr Server massiv DNS-Queries macht (z.B. ein Mail-Gateway), aktivieren Sie systemd-resolved für das Caching.
  • IPv6: Vergessen Sie nicht, DNS-Server auch für ipv6.dns zu hinterlegen, wenn Sie Dual-Stack fahren.

# Anhang: Cheatsheet

Aufgabe Befehl
DNS-Server anzeigen `nmcli dev show
Search-Domain prüfen `nmcli dev show
DNS-Server löschen nmcli con mod <name> -ipv4.dns <ip>
resolv.conf neu schreiben nmcli general reload
DNS-Test resolvectl query <host> (wenn resolved aktiv)