iToverDose/Software· 1 JULI 2026 · 00:05

GitOps für DNS im Homelab: DNS-Einträge sicher automatisieren

Ein einziger Tippfehler in der DNS-Konfiguration kann dein Homelab lahmlegen. Erfahren Sie, wie Sie mit GitOps, dnsmasq und GitHub jede Änderung automatisiert, sicher und versioniert verwalten.

DEV Community4 min0 Kommentare

Ein kleines Missgeschick in der /etc/hosts-Datei führte bei einem Administrator zu einem Dominoeffekt: Ein falscher Hostname löste eine Kettenreaktion aus, die Proxmox-Knoten, Ceph-Speicher und virtuelle Maschinen lahmlegte. Solche manuellen Fehler gehören mit einer GitOps-basierten DNS-Lösung der Vergangenheit an.

In dieser Anleitung zeigen wir, wie Sie mit dnsmasq, GitHub und einem Bash-Skript eine zuverlässige, automatisierte DNS-Verwaltung für Ihr Homelab einrichten. Jede Änderung wird versioniert, auf Fehler geprüft und bei Bedarf sofort übernommen – ohne manuelles Eingreifen.

Warum GitOps für DNS im Homelab?

Die manuelle Pflege von DNS-Einträgen im Homelab ist fehleranfällig. Ein falsch gesetzter Hostname oder eine vergessene IP-Adresse kann zu Ausfällen führen, die sich wie eine Kettenreaktion ausbreiten. GitOps bietet hier eine strukturierte Alternative:

  • Versionierung aller Änderungen: Jede Anpassung wird in einem Git-Repository dokumentiert und lässt sich bei Bedarf rückgängig machen.
  • Automatisierte Synchronisation: Änderungen im Repository werden automatisch auf den DNS-Server übertragen.
  • Einheitliche Quelle der Wahrheit: Die Konfiguration ist zentral und immer aktuell.
  • Sicherheit durch Deploy-Keys: Nur der DNS-Server kann Änderungen abrufen, unbefugte Zugriffe sind ausgeschlossen.

Mit dieser Methode vermeiden Sie nicht nur menschliche Fehler, sondern schaffen auch eine wartbare und skalierbare Infrastruktur.

Schritt-für-Schritt: dnsmasq für GitOps vorbereiten

1. dnsmasq und Git installieren

Je nach Distribution erfolgt die Installation über die Paketverwaltung:

# Für Debian/Ubuntu
sudo apt update && sudo apt install -y dnsmasq git

# Für RHEL/CentOS/AlmaLinux
sudo yum install -y dnsmasq git

2. Grundkonfiguration von dnsmasq

Erstellen Sie eine Basis-Konfigurationsdatei unter /etc/dnsmasq.d/000-base.conf:

domain=safesploit.com
expand-hosts
log-queries
no-hosts
addn-hosts=/etc/hosts.d
listen-address=172.16.5.27

Wichtige Hinweise zur Konfiguration:

  • listen-address muss auf die IP-Adresse des Hosts gesetzt werden, auf dem dnsmasq läuft. Die Verwendung von 0.0.0.0 wird nicht empfohlen, da dies zu Sicherheitsrisiken führen kann.
  • Die addn-hosts-Option verweist auf das Verzeichnis /etc/hosts.d/, in dem die Host-Einträge abgelegt werden.

3. Verzeichnis für modulare Host-Einträge anlegen (optional)

Um die Konfiguration übersichtlicher zu gestalten, können Sie Host-Einträge in separate Dateien aufteilen:

sudo mkdir -p /etc/hosts.d
sudo touch /etc/hosts.d/000-network.cfg
sudo touch /etc/hosts.d/050-services.cfg

4. dnsmasq starten und aktivieren

sudo systemctl enable dnsmasq
sudo systemctl start dnsmasq

Testen Sie die Konfiguration mit:

dig @172.16.5.27 ldap.safesploit.com +short

Falls eine IP-Adresse zurückgegeben wird, ist die Konfiguration erfolgreich.

Host-Einträge strukturiert verwalten

Die Host-Einträge werden in separaten .cfg-Dateien im Verzeichnis /etc/hosts.d/ abgelegt. Eine sinnvolle Namenskonvention erleichtert die Verwaltung:

  • 000-network.cfg – Netzwerkgeräte wie Router oder Switches
  • 050-services.cfg – Dienste wie Datenbanken oder Authentifizierungsserver
  • 100-vms.cfg – Virtuelle Maschinen

Ein Beispiel für eine .cfg-Datei:

172.16.5.10 ldap
172.16.100.10 nas1
172.16.200.15 vm-proxmox

Vorteile dieser Struktur:

  • Einfache Versionierung und Überprüfung der Änderungen.
  • Klare Trennung der Verantwortlichkeiten (z. B. Netzwerk vs. Dienste).
  • Skalierbar für größere Homelabs oder sogar Unternehmensumgebungen.

Automatisierte Synchronisation mit Git

1. Repository-Struktur einrichten

Die Host-Einträge werden in einem Git-Repository verwaltet. Eine typische Struktur könnte so aussehen:

.dns-configs/
└── dnsmasq/
    └── hosts.d/
        ├── 000-network.cfg
        ├── 050-services.cfg
        └── 100-vms.cfg

2. SSH-Deploy-Key für sicheren Zugriff

Um den DNS-Server sicher mit dem Repository zu verbinden, verwenden Sie einen Deploy-Key:

ssh-keygen -t ed25519 -f ~/.ssh/id_github_ed25519

Fügen Sie den öffentlichen Schlüssel als Deploy-Key mit Lesezugriff in Ihrem GitHub-Repository hinzu. Dies stellt sicher, dass nur der DNS-Server Änderungen abrufen kann.

3. Bash-Skript für die Synchronisation

Ein Skript übernimmt die automatische Synchronisation zwischen Repository und DNS-Server. Hier ein Beispiel:

#!/bin/bash

# Konfiguration anpassen
REPO="dns-configs"
OWNER="github_org/username"
GITHUB_DEPLOY_KEY="${HOME}/.ssh/id_github_ed25519"
HOSTS_DIR="/etc/hosts.d"
LOG_FILE="/var/log/dnsmasq_sync.log"

# Repository klonen
if [ ! -d "/tmp/${REPO}" ]; then
  ssh-agent bash -c "ssh-add ${GITHUB_DEPLOY_KEY}; git clone git@github.com:${OWNER}/${REPO}.git /tmp/${REPO}"
fi

# Änderungen prüfen und synchronisieren
cd /tmp/${REPO}/dnsmasq/hosts.d
rsync -avz --delete . ${HOSTS_DIR}/

# dnsmasq neu starten und Logs aktualisieren
dnsmasq --test && systemctl restart dnsmasq
echo "$(date): Synchronisation erfolgreich" >> ${LOG_FILE}

4. Cronjob für regelmäßige Updates

Richten Sie einen Cronjob ein, der das Skript alle fünf Minuten ausführt:

*/5 * * * * /root/git_clone_dns_configs_dnsmasq.sh

Optional: CI-Validierung mit GitHub Actions

Um die Sicherheit weiter zu erhöhen, können Sie eine CI-Pipeline einrichten, die jede Änderung vor der Übernahme validiert. Die Pipeline prüft:

  • Die Syntax der Host-Einträge.
  • Auf Duplikate oder ungültige Hostnamen.
  • Die Kompatibilität mit der dnsmasq-Konfiguration.

Ein Beispiel-Workflow in .github/workflows/dnsmasq-ci.yml:

name: DNSmasq CI Validation

on:
  push:
    paths:
      - 'dnsmasq/hosts.d/**'

jobs:
  validate:
    runs-on: ubuntu-latest
    container:
      image: almalinux:latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Install dnsmasq
        run: dnf install -y dnsmasq
      
      - name: Validate configuration
        run: |
          mkdir -p /etc/dnsmasq.d
          cp -r dnsmasq/hosts.d /etc/dnsmasq.hosts
          dnsmasq --test
          dig @127.0.0.1 -p 5353 test.example.com +short

Diese Validierung stellt sicher, dass nur fehlerfreie Änderungen in die Produktion übernommen werden.

Fazit: DNS-Verwaltung im Homelab revolutionieren

Die manuelle Pflege von DNS-Einträgen gehört mit GitOps der Vergangenheit an. Durch die Kombination von dnsmasq, Git und automatisierten Workflows schaffen Sie eine zuverlässige, versionierte und sichere DNS-Infrastruktur für Ihr Homelab. Jede Änderung wird dokumentiert, geprüft und bei Bedarf sofort übernommen – ohne manuelle Fehler oder Ausfallzeiten.

Mit dieser Lösung können Sie sich auf das Wesentliche konzentrieren: die Entwicklung und Verwaltung Ihrer Projekte, statt Zeit mit der Fehlersuche in der DNS-Konfiguration zu verlieren. In Zukunft lässt sich dieses Setup sogar um weitere Automatisierungen wie automatische Backups oder Monitoring erweitern.

KI-Zusammenfassung

Transform homelab DNS with GitOps: automate dnsmasq host updates using GitHub, Bash scripts, and cronjobs for error-free, version-controlled networking.

Kommentare

00
KOMMENTAR SCHREIBEN
ID #LYQBQY

0 / 1200 ZEICHEN

Menschen-Check

2 + 4 = ?

Erscheint nach redaktioneller Prüfung

Moderation · Spam-Schutz aktiv

Noch keine Kommentare. Sei der erste.