⚙️ Automatisierung von root.hints in Unbound
Nachdem Unbound erfolgreich eingerichtet und getestet wurde,
kannst du die Root-Hints-Datei automatisch aktualisieren lassen.
Dadurch bleibt dein DNS-Resolver immer auf dem neuesten Stand,
ohne dass du die Datei manuell herunterladen oder Unbound neu starten musst.
💡 Hinweis:
Die folgenden Schritte richten einen Systemd-Service und einen Timer ein,
die monatlich automatisch die aktuelle Dateiroot.hints
von IANA abrufen, installieren und anschließend den Unbound-Dienst neu laden.
👤 Unbound-Konto prüfen und aktiv halten
Prüfe, ob das Unbound-Systemkonto aktiv ist, und setze es ggf. zurück:
sudo chage -E -1 -M 99999 -I -1 unbound
💡 Hinweis:
Damit stellst du sicher, dass das Systemkonto „unbound“,
unter dem der Unbound-DNS-Server läuft, nicht abläuft
und dauerhaft aktiv bleibt.
🧾 sudo-Berechtigung für Unbound anlegen
Erstelle eine neue Datei im Verzeichnis /etc/sudoers.d/:
sudo nano /etc/sudoers.d/unbound
Füge genau diese eine Zeile ein (eine Zeile, keine Umbrüche!):
unbound ALL=(ALL) NOPASSWD: /usr/bin/install -m 644 /tmp/root.hints.new /etc/unbound/root.hints, /usr/bin/systemctl start reload-unbound.service
Dateirechte setzen und Syntax prüfen:
sudo chmod 0440 /etc/sudoers.d/unbound
sudo visudo -c
⚠️ Wichtig:
Eine falsche Syntax in der Datei/etc/sudoers.d/unbound
kann den Zugriff auf das System blockieren.
Überprüfe daher immer mitvisudo -c, ob keine Fehler gemeldet werden.
🔄 Reload-Service erstellen
Erstelle die Datei /etc/systemd/system/reload-unbound.service:
sudo nano /etc/systemd/system/reload-unbound.service
Inhalt:
[Unit]
Description=Reload Unbound service (need sudo)
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl reload unbound.service
🌍 Service zum Aktualisieren der Root-Hints anlegen
Erstelle die Datei /etc/systemd/system/update-root-hints.service:
sudo nano /etc/systemd/system/update-root-hints.service
Inhalt:
[Unit]
Description=Update root hints file and reload Unbound
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
User=unbound
Group=unbound
ExecStart=/bin/sh -c '/usr/bin/curl -fsS -o /tmp/root.hints.new https://www.internic.net/domain/named.cache && /usr/bin/sudo /usr/bin/install -m 644 /tmp/root.hints.new /etc/unbound/root.hints'
ExecStartPost=/usr/bin/sudo /usr/bin/systemctl start reload-unbound.service
[Install]
WantedBy=multi-user.target
💡 Hinweis:
Dieser Service lädt regelmäßig die aktuelleroot.hints-Datei von IANA,
ersetzt die alte Version und lädt anschließend den Unbound-Dienst neu.Die Ausführung erfolgt über den Benutzer unbound mit temporärer
sudo-Berechtigung für genau die beiden erlaubten Befehle.
⏱️ Systemd-Timer für monatliches Update
Erstelle die Datei /etc/systemd/system/update-root-hints.timer:
sudo nano /etc/systemd/system/update-root-hints.timer
Inhalt:
[Unit]
Description=Run the update-root-hints.service monthly
[Timer]
OnCalendar=monthly
Persistent=true
[Install]
WantedBy=timers.target
🔁 Systemd neu laden und Timer aktivieren
Systemd-Konfiguration neu einlesen:
sudo systemctl daemon-reload
Timer aktivieren (startet sofort):
sudo systemctl enable --now update-root-hints.timer
Manuell testen (optional):
sudo systemctl start update-root-hints.service
Status prüfen:
sudo systemctl status update-root-hints.service --no-pager --full
🧩 Kontrolle und Überprüfung
Nächsten Laufzeitpunkt des Timers anzeigen:
systemctl list-timers update-root-hints.timer
Alle aktiven Timer-Einheiten anzeigen:
sudo systemctl list-timers
Änderungszeit der Datei prüfen (sollte aktuell sein):
ls -l /etc/unbound/root.hints
Reload-Vorgang im Log anzeigen:
journalctl -u reload-unbound.service -b --no-pager
✅ Ergebnis:
Dein System aktualisiert nun automatisch die Root-Hints-Datei
und lädt den Unbound-Dienst regelmäßig neu –
sicher, wartungsfrei und ohne manuelle Eingriffe.