# CoreDNS NetBox Sync Dieser Container synchronisiert DNS-Records aus [NetBox](https://github.com/netbox-community/netbox) in lokale Zonefiles, die von [CoreDNS](https://coredns.io/) (oder BIND) genutzt werden können. ## Features - **Automatische Synchronisation:** Holt alle 10 Minuten (konfigurierbar) Daten aus NetBox. - **Forward & Reverse Zones:** Erstellt A/AAAA und PTR Records. - **Ausfallsicherheit:** Wenn NetBox nicht erreichbar ist oder die API Fehler wirft, werden **keine** leeren Dateien geschrieben. Die alten Zonefiles bleiben erhalten, um `NXDOMAIN` Antworten zu verhindern. - **Fallback NS:** Konfigurierbarer Fallback-Nameserver, falls in NetBox keine NS-Records für die Zone definiert sind. ## Installation & Nutzung ### 1. Image bauen ```bash docker build -t local/dns-sync . ``` ### 2. Container starten Da die Standardwerte im Dockerfile hinterlegt sind, reicht dein bisheriger Befehl völlig aus, solange sich an der Konfiguration nichts geändert hat: ```bash docker run -d \ --name klzDNS-worker \ --restart unless-stopped \ --net=container:klzDNS-coredns \ -v klzDNS-data:/zones \ local/dns-sync ``` ### 3. Konfiguration anpassen (Optional) Möchtest du Werte ändern (z.B. URL, Token oder Interval), kannst du diese als Umgebungsvariablen (`-e`) übergeben: ```bash docker run -d \ --name klzDNS-worker \ --restart unless-stopped \ --net=container:klzDNS-coredns \ -v klzDNS-data:/zones \ -e NETBOX_URL="http://deine-netbox-url" \ -e NETBOX_TOKEN="dein-neuer-token" \ -e REFRESH_INTERVAL=300 \ local/dns-sync ``` Alternativ kannst du eine `.env` Datei erstellen: ```ini # .env Datei NETBOX_URL=http://192.168.1.50 REFRESH_INTERVAL=60 ``` Und diese einbinden: ```bash docker run -d ... --env-file .env local/dns-sync ``` ## Verfügbare Variablen | Variable | Standardwert | Beschreibung | | :--- | :--- | :--- | | `NETBOX_URL` | `http://172.30.242.99` | URL zur NetBox Instanz | | `NETBOX_TOKEN` | `0b74...` | API Token (Read-Only reicht) | | `ZONE_NAME` | `klenzel.net` | Die zu verwaltende DNS-Zone | | `REVERSE_ZONE_NAME` | `172.in-addr.arpa` | Reverse Lookup Zone | | `REFRESH_INTERVAL` | `600` | Sync-Intervall in Sekunden | | `OUTPUT_FILE_FWD` | `/zones/db.klenzel.net` | Pfad zur Forward Zone im Container | | `OUTPUT_FILE_REV` | `/zones/db.reverse.arpa` | Pfad zur Reverse Zone im Container | | `FALLBACK_NS_HOSTNAME`| `fks-01-cl-cdns` | Hostname des NS, falls keiner in NetBox definiert ist | | `FALLBACK_NS_IP` | `172.25.16.152` | IP des Fallback NS (für Glue Record) |