Eigene Domains mit DNS-Manager hosten¶
| Stand: 05/2025 |
|---|
| Verwendete Software - DNS-Manager 1.0.0 - Ubuntu 24.04 LTS - Bind9 9.18.30 |
| Weitere Dokumentationen: - LAMP-Stack unter Ubuntu einrichten |
Vorwort¶
Diese Dokumentation beschreibt die Einrichtung des DNS-Managers von Twilight-Networks in einer typischen Umgebung mit Web-Interface und Agenten.
Es sind Grundkenntnisse im Umgang mit Linux erforderlich, da die Vorgehensweise, wie sie hier beschrieben ist, in manchen Teilen abweichen kann. Kein System ist wie das Andere. Die Dokumentation wurde sorgfältig von mir geprüft. Dennoch kann ich keinerlei Haftung für Schäden an Ihrem System oder eine Gewährleistung übernehmen. Bitte verwenden Sie diese Dokumentation auf eigene Gefahr.
Der Aufbau des Systems ist bewusst modular gestaltet: Das Web-Interface dient als zentrale Steuerungsstelle – hier werden DNS-Zonen bearbeitet, Records gepflegt und Deployments ausgelöst. Die eigentliche Arbeit (Dateien schreiben, BIND neu laden etc.) übernehmen sogenannte Agenten, die auf einem oder mehreren DNS-Servern installiert sind.
Das Web-Interface kommuniziert mit den Agenten über eine abgesicherte REST-API. So lassen sich auch entfernte Server oder komplexe Setups (z. B. Master/Slave) zentral verwalten. Web-Interface und Agent können auf demselben Server laufen – müssen es aber nicht. In produktiven Umgebungen ist es oft sinnvoll, diese Rollen zu trennen:
-
Web-Interface: zentrale Verwaltung, Benutzeroberfläche
-
Agent: Zonendateien erzeugen, BIND steuern, lokal deployen
Ein Agent ist pro DNS-Server erforderlich – es können jedoch beliebig viele Agenten gleichzeitig verwendet werden.
Der DNS-Manager ist produktiv erprobt und eignet sich nicht nur für Test- oder interne Umgebungen. Mit ihm lassen sich echte, öffentlich registrierte Domains (z. B. .de, .net, .org) betreiben. Die erzeugten Zonendateien erfüllen dabei alle Anforderungen der DENIC – auch bei strengen DNS-Konformitätsprüfungen.
Das bedeutet:
Domains, die mit dem DNS-Manager verwaltet werden, können ohne Einschränkung bei offiziellen Registraren und Nameserver-Prüfstellen eingesetzt werden.
flowchart LR
subgraph Webserver
UI["DNS-Manager Web-Interface"]
end
subgraph Agent_Server_1["Nameserver 2"]
AG1["DNS-Manager Agent"]
BIND1["BIND9"]
end
subgraph Agent_Server_2["Nameserver 1"]
AG2["DNS-Manager Agent"]
BIND2["BIND9"]
end
UI -->|REST API| AG1
UI -->|REST API| AG2
AG1 -->|Zonendateien schreiben| BIND1
AG2 -->|Zonendateien schreiben| BIND2
Server vorbereiten¶
Root-Rechte einräumen¶
Während der gesamten Dokumentation werden Root-Rechte benötigt. Um auf das Voranstellen von sudo zu verzichten, verschaffen Sie sich für die gesamte Sitzung erhöhte Rechte mit:
sudo -i
Update durchführen¶
Bringen Sie den Server auf den aktuellen Patchstand:
apt update && apt upgrade
Installation Web-Interface¶
Wichtig!
Das Web-Interface ist die zentrale Steuerungsoberfläche des DNS-Managers. Hier werden Zonen und DNS-Records verwaltet, Änderungen vorgenommen und Deployments angestoßen.
Es kann auf demselben Server wie ein Agent installiert werden – muss aber nicht. In produktiven Umgebungen empfiehlt es sich oft, das Web-Interface und die Agenten zu trennen, z. B. aus Sicherheitsgründen.
Wichtig ist: Ohne mindestens einen Agenten kann das Web-Interface keine Zonendateien generieren oder verteilen.
Software installieren¶
Da PHP 8.4 nicht im offiziellen Ubuntu-Repository von Ubuntu 24.04 enthalten ist, fügen wir zunächst das bewährte Drittanbieter-Repository ppa:ondrej/php hinzu:
apt install apt-transport-https
LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
apt update
Das Web-Interface und die Zonendatei-Validierung benötigen folgende Pakete und PHP-Module (≥ 8.1):
apt install bind9-utils
apt install php8.4 php8.4-cli php8.4-common php8.4-mysql php8.4-mbstring php-json
Laden Sie den DNS-Manager aus dem offiziellen GIT-Repository herunter:
git clone https://github.com/Twilight-Networks/dnsmanager.git /usr/share/dnsmanager
Erstellen Sie einen Symlink 'dnsmanager-ui' zu Ihrem Webroot-Verzeichnis:
ln -s /usr/share/dnsmanager/web/ /var/www/html/dnsmanager-ui
Konfiguration erstellen¶
Sicherheit und Trennung
Die Konfigurationsdateien befinden sich bewusst außerhalb des Webroots.
Damit wird verhindert, dass sensible Daten wie API-Tokens oder Datenbankpasswörter versehentlich öffentlich zugänglich oder überschrieben werden. Zudem entspricht dies gängigen Best Practices in der Linux-Administration, bei denen Konfiguration stets in /etc/ liegt.
Erstellen Sie den Ordner /etc/dnsmanager. Dieser Ordner wird die Konfiguration des UIs und ggf. des Agents enthalten.
mkdir /etc/dnsmanager
Kopieren Sie die Konfigurationsbeispiele, setzen Sie den entsprechenden Symlink und vergeben Sie die notwendigen Rechte auf die Datei:
cp /usr/share/dnsmanager/web/config/ui_config-sample.php /etc/dnsmanager/ui_config.php
ln -s /etc/dnsmanager/ui_config.php /usr/share/dnsmanager/web/config/ui_config.php
chown root:www-data /etc/dnsmanager/ui_config.php
chmod 640 /etc/dnsmanager/ui_config.php
Cronjob für Monitoring aktivieren¶
Was macht der Cronjob?
Dieser Cronjob sorgt dafür, dass regelmäßig geprüft wird, ob alle DNS-Server erreichbar sind und alles ordnungsgemäß läuft. Die Ergebnisse werden im Web-Interface angezeigt, damit Sie auf einen Blick sehen können, ob es irgendwo ein Problem gibt.
Kopieren Sie die Cronjob-Datei in den Ordner /etc/cron.d:
cp /usr/share/dnsmanager/cron/dnsmanager_monitoring /etc/cron.d/
sudo-Rechte für benötigte BIND-Kommandos vergeben¶
Info
Damit das Web-Interface bestimmte BIND-Kommandos wie named-checkzone oder rndc reload ausführen darf, werden gezielt dafür nötige Rechte vergeben. Die sudoers-Datei erlaubt genau die Befehle, die das UI für seine Aufgaben braucht – nicht mehr und nicht weniger. Das ist sicherer als das Web-Interface komplett mit Root-Rechten laufen zu lassen.
Kopieren Sie die sudoers-Datei und vergeben Sie die notwendigen Rechte:
cp /usr/share/dnsmanager/sudoers.d/dnsmanager-ui /etc/sudoers.d/
chmod 0440 /etc/sudoers.d/dnsmanager-ui
Apache-Konfiguration einbinden¶
Info
Diese Konfiguration sorgt dafür, dass das Web-Interface korrekt in Apache eingebunden wird.
Sie stellt sicher, dass:
- der Symlink (
dnsmanager-ui) als Webverzeichnis erkannt wird, .htaccess-Dateien (z. B. für Zugriffsschutz oder URL-Rewriting) verwendet werden dürfen,- und Apache die richtigen Berechtigungen für den Zugriff setzt.
Kopieren Sie die Apache-Config-Datei in den entsprechenden Apache-Ordner und aktivieren Sie die Konfiguration:
cp /usr/share/dnsmanager/apache/dnsmanager.conf /etc/apache2/conf-available/
a2enconf dnsmanager
systemctl reload apache2
Datenbankverbindung herstellen¶
Datenbank-Schema importieren¶
Importieren Sie das Datenbankschema. Die Datenbank wird unter dem Namen dnsmanager angelegt.
mysql -u root < /usr/share/dnsmanager/sql/dnsmanager_schema.sql
Datenbank-Benutzer erstellen¶
Erstellen Sie den SQL-Benutzer dnsmanager mit folgenden Rechten.
Ersetzen Sie sicheres_passwort durch ein sicheres Passwort ;-)
CREATE USER 'dnsmanager'@'localhost' IDENTIFIED BY 'sicheres_passwort';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER
ON dnsmanager.* TO 'dnsmanager'@'localhost';
FLUSH PRIVILEGES;
Konfigurationsdatei anpassen¶
Ergänzen Sie die Datenbankeinstellungen in der Konfig-Datei:
nano /etc/dnsmanager/ui_config.php
[...]
/** ---------------------------------------
* Datenbank-Konfiguration
* --------------------------------------- */
define('DB_HOST', 'localhost'); // Hostname des Datenbankservers
define('DB_NAME', 'dnsmanager'); // Name der verwendeten Datenbank
define('DB_USER', 'root'); // Datenbank-Benutzername
define('DB_PASS', 'init01'); // Datenbank-Passwort
[...]
Installation Agent¶
Wichtig!
Ein Agent ist die Komponente, die auf dem eigentlichen DNS-Server installiert wird und für das Schreiben, Validieren und Aktivieren der Zonendateien zuständig ist.
Er kommuniziert über eine REST-API mit dem Web-Interface und führt dort angeforderte Aktionen aus – etwa das Erzeugen von Zonendateien oder das Ausführen von rndc reload. Pro Nameserver ist genau ein Agent nötig. Web-Interface und Agent können auf demselben Server laufen, aber auch verteilt betrieben werden.
Der DNS-Manager kann im Prinzip beliebig viele Agenten gleichzeitig verwalten. So lassen sich mehrere Server (z. B. primär/sekundär oder geografisch verteilt) zentral steuern.
Software installieren¶
apt install bind9
Laden Sie den DNS-Manager aus dem offiziellen GIT-Repository herunter:
git clone https://github.com/Twilight-Networks/dnsmanager.git /usr/share/dnsmanager
Erstellen Sie einen Symlink 'dnsmanager-agent' zu Ihrem Webroot-Verzeichnis:
ln -s /usr/share/dnsmanager/agent/ /var/www/html/dnsmanager-agent
Konfiguration erstellen¶
Sicherheit und Trennung
Die Konfigurationsdateien befinden sich bewusst außerhalb des Webroots.
Damit wird verhindert, dass sensible Daten wie API-Tokens oder Datenbankpasswörter versehentlich öffentlich zugänglich oder überschrieben werden. Zudem entspricht dies gängigen Best Practices in der Linux-Administration, bei denen Konfiguration stets in /etc/ liegt.
Erstellen Sie den Ordner /etc/dnsmanager. Dieser Ordner wird die Konfiguration des Agents enthalten.
mkdir /etc/dnsmanager
Kopieren Sie die Beispiele für die Konfiguriation und den API-Key únd setzen Sie den entsprechenden Symlink:
cp /usr/share/dnsmanager/agent/config/api_config-sample.php /etc/dnsmanager/api_config.php
ln -s /etc/dnsmanager/api_config.php /usr/share/dnsmanager/agent/config/api_config.php
cp /usr/share/dnsmanager/agent/config/api_tokens-sample.php /etc/dnsmanager/api_tokens.php
ln -s /etc/dnsmanager/api_tokens.php /usr/share/dnsmanager/agent/config/api_tokens.php
Vergeben Sie die notwendigen Rechte auf die Dateien:
chown root:www-data /etc/dnsmanager/api_*
chmod 640 /etc/dnsmanager/api_*
sudo-Rechte für benötigte BIND-Kommandos vergeben¶
Info
Damit das Web-Interface bestimmte BIND-Kommandos wie named-checkzone oder rndc reload ausführen darf, ohne nach einem Passwort zu fragen, werden gezielt dafür nötige Rechte vergeben. Die sudoers-Datei erlaubt genau die Befehle, die das UI für seine Aufgaben braucht – nicht mehr und nicht weniger. Das ist sicherer als das Web-Interface komplett mit Root-Rechten laufen zu lassen.
Kopieren Sie die sudoers-Datei und vergeben Sie die notwendigen Rechte:
cp /usr/share/dnsmanager/sudoers.d/dnsmanager-agent /etc/sudoers.d/
chmod 0440 /etc/sudoers.d/dnsmanager-agent
Apache-Konfiguration einbinden¶
Kopieren Sie die Apache-Config-Datei in den entsprechenden Apache-Ordner und aktivieren Sie die Konfiguration:
cp /usr/share/dnsmanager/apache/dnsmanager-agent.conf /etc/apache2/conf-available/
a2enconf dnsmanager-agent
systemctl reload apache2
Bind konfigurieren¶
Info
In diesem Abschnitt wird BIND so vorbereitet, dass der DNS-Manager später korrekt damit arbeiten kann. Der Agent generiert automatisch Zonendateien, die im Ordner /etc/bind/zones abgelegt werden – deshalb müssen an dieser Stelle die passenden Schreibrechte gesetzt werden.
Außerdem wird die Datei zones.conf über ein include in BIND eingebunden. Diese Datei wird dynamisch vom DNS-Manager erzeugt und enthält alle aktiven Zonen. Ohne diese Einbindung würde BIND die verwalteten Domains später nicht laden.
Ordner für Zonendateien erstellen und Rechte setzen¶
Erstellen Sie den Ordner /etc/bind/zones und vergeben Sie die notwendigen Rechte:
mkdir /etc/bind/zones
chown www-data:www-data /etc/bind/zones
BIND-Zonenkonfiguration einbinden¶
Editieren Sie die Datei named.conf.local und fügen Sie folgenden Parameter hinzu:
nano /etc/bind/named.conf.local
[...]
include "/etc/bind/zones/zones.conf";
Bind neustarten¶
Starten Sie bind9 neu, damit die Konfiguration angewendet wird:
systemctl reload bind9
Domain hosten¶
Web-Interface aufrufen¶
Rufen Sie das Web-Interface auf und melden Sie sich an:
(Der Standard-Admin lautet admin mit Passwort admin123)
https://example.com/dnsmanager-ui/
Nameserver anlegen¶
Wählen Sie im linken Menü den Punkt Server aus und klicken Sie anschließend auf + Neuer Server, vergeben Sie die entsprechenden Parameter und generieren Sie einen API-Key:
Editieren Sie auf dem entsprechenden Server die Datei /etc/dnsmanager/api_tokens.php und tragen Sie den API-Key ein.
nano /etc/dnsmanager/api_tokens.php
[...]
return [
'1234567890abcdefghijklmnopqrstuvwxyz', // Beispieltoken
// Weitere gültige Tokens hier ergänzen, jeweils als 64-stellige Hex-Zeichenkette
];
[...]
Zone anlegen¶
Info
Beim Anlegen einer neuen Zone werden, abhängig vom Zonen- bzw. Servernamen bei Bedarf automatisch Glue Records (A/AAAA für Nameserver) sowie NS-Einträge korrekt gesetzt – insbesondere dann, wenn die Nameserver in der eigenen Zone liegen.
Das spart Zeit, reduziert Fehler und erfüllt die Anforderungen vieler Registrare bereits beim ersten Deployment.
Wählen Sie im linken Menü den Punkt Zonen aus und klicken Sie anschließend auf + Neue Zone, vergeben Sie die entsprechenden Parameter und weisen Sie den Master-Server zu:
Klicken Sie anschließend im linken Menü auf Veröffentlichen um die neue Zone auf den Nameserver auszurollen:
DNS-Records setzen¶
Info
Einige Record-Typen (z. B. PTR, DKIM, SRV) enthalten spezielle Logiken oder automatische Ergänzungen – je nach gewähltem Typ werden Felder dynamisch angezeigt, vorausgefüllt oder auf Gültigkeit geprüft. Der DNS-Manager unterstützt Sie dabei, gültige und konforme Einträge zu erstellen – auch ohne tiefes DNS-Fachwissen.
Klicken Sie unter Zonen auf Einträge um DNS-Records für eine bestimmte Zone zu setzen.
Auch hier rollen Sie Konfiguration mit einem Klick auf Veröffentlichen aus:
Predelegation Check (DENIC)¶
Wichtig!
Bevor eine .de-Domain bei einem Registrar eingetragen werden kann, verlangt die DENIC eine sogenannte Predelegation-Prüfung. Dabei wird sichergestellt, dass die eingetragenen Nameserver korrekt erreichbar sind, gültige Zonendaten ausliefern und den technischen Anforderungen entsprechen.
Diesen Check können Sie vorab selbst durchführen – direkt über das DENIC NAST-Tool. Geben Sie dort Ihre Domain sowie mindestens zwei Nameserver ein. Wenn die Konfiguration korrekt ist, erscheint die Meldung „Prüfung erfolgreich“ – wie in den folgenden Beispielen zu sehen.
Sobald die Prüfung erfolgreich war, können Sie Ihre Nameserver beim gewünschten Registrar (z. B. IONOS, INWX, Hetzner etc.) hinterlegen. Die Zone wird dann live und öffentlich erreichbar.
Tragen Sie im Formular die entsprechenden Parameter ein und starten Sie die Prüfung.
Wenn alles richtig eingerichtet ist, kann die Domain bzw. die DNS-Zone beim gewünschten Registrar hinterlegt werden.
Abschluss¶
Wenn alle Tests erfolgreich waren, ist der DNS-Manager in Verbindung mit BIND9 einsatzbereit.







