Files
coredns-netbox/README.md
2025-12-04 05:25:49 +00:00

2.7 KiB

CoreDNS NetBox Sync

Dieser Container automatisiert die Generierung von DNS-Zonendateien für CoreDNS (oder BIND), indem er Daten aus NetBox synchronisiert. Er ruft IPAM-Daten (aktive IPs mit DNS-Namen) und DNS-Plugin-Einträge ab.

Funktionen

  • Automatische Synchronisation: Ruft periodisch Daten von NetBox ab (Standard: alle 10 Minuten).
  • Ausfallsicherer Betrieb: Wenn NetBox nicht erreichbar ist oder Fehler zurückgibt, werden die bestehenden Zonendateien beibehalten, um NXDOMAIN-Probleme zu vermeiden.
  • Dual-Zone-Unterstützung: Generiert sowohl Forward- als auch Reverse-(PTR)-Zonen.
  • Intelligenter Fallback: Konfiguriert automatisch einen Fallback-Nameserver, falls in NetBox keine NS-Einträge definiert sind.

Konfiguration

Die Konfiguration erfolgt vollständig über Umgebungsvariablen.

Erforderliche Variablen

Variable Beschreibung
NETBOX_URL Die vollständige URL zur NetBox-Instanz (z.B. http://netbox.local).
NETBOX_TOKEN Das API-Token zur Authentifizierung (Nur-Lese-Berechtigungen sind ausreichend).

Optionale Variablen

Variable Standardwert Beschreibung
REFRESH_INTERVAL 600 Synchronisationsintervall in Sekunden.
ZONE_NAME klenzel.net Der Name der zu verwaltenden DNS-Zone.
REVERSE_ZONE_NAME 172.in-addr.arpa Der Name der Reverse-Lookup-Zone.
OUTPUT_FILE_FWD /zones/db.klenzel.net Pfad im Container für die Forward-Zonendatei.
OUTPUT_FILE_REV /zones/db.reverse.arpa Pfad im Container für die Reverse-Zonendatei.
FALLBACK_NS_HOSTNAME fks-01-cl-cdns Hostname, der als NS-Eintrag verwendet wird, falls keiner in NetBox existiert.
FALLBACK_NS_IP 172.25.16.152 IP-Adresse für den Fallback-NS-Glue-Record.

Verwendung

Docker

  1. Image bauen:

    docker build -t local/dns-sync .
    
  2. Mit Umgebungsvariablen starten:

    docker run -d \
      --name klzDNS-worker \
      --restart unless-stopped \
      --net=container:klzDNS-coredns \
      -v klzDNS-data:/zones \
      -e NETBOX_URL="http://172.30.242.99" \
      -e NETBOX_TOKEN="dein-geheimes-token" \
      local/dns-sync
    

Verwendung einer .env-Datei

  1. Erstellen Sie eine .env-Datei basierend auf dem Beispiel:

    cp .env.example .env
    # Bearbeiten Sie die .env und fügen Sie Ihre Zugangsdaten hinzu
    
  2. Starten Sie den Container unter Verweis auf die Datei:

    docker run -d \
      --name klzDNS-worker \
      --restart unless-stopped \
      --net=container:klzDNS-coredns \
      -v klzDNS-data:/zones \
      --env-file .env \
      local/dns-sync