2.7 KiB
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
-
Image bauen:
docker build -t local/dns-sync . -
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
-
Erstellen Sie eine
.env-Datei basierend auf dem Beispiel:cp .env.example .env # Bearbeiten Sie die .env und fügen Sie Ihre Zugangsdaten hinzu -
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