# CoreDNS NetBox Sync Dieser Container automatisiert die Generierung von DNS-Zonendateien für CoreDNS (oder BIND), indem er Daten aus [NetBox](https://github.com/netbox-community/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:** ```bash docker build -t local/dns-sync . ``` 2. **Mit Umgebungsvariablen starten:** ```bash 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: ```bash 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: ```bash docker run -d \ --name klzDNS-worker \ --restart unless-stopped \ --net=container:klzDNS-coredns \ -v klzDNS-data:/zones \ --env-file .env \ local/dns-sync ```