MyDNS Server · 8 min read · Jan 10, 2026

Einen MySQL-basierten DNS-Server betreiben: MyDNS - Seite 2

2 Installieren Sie eine Weboberfläche für MyDNS

In den folgenden Schritten gehe ich davon aus, dass Sie Debian Sarge verwenden; das Standard-Debian-Apache-Dokumentenverzeichnis ist /var/www, daher werde ich die Weboberflächen hier installieren. Außerdem gehe ich davon aus, dass der Hostname ns1.example.com ist.

2.1 phpMyAdmin

phpMyAdmin wurde zu Beginn dieses Tutorials installiert ( apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin), sodass Sie darauf unter http://ns1.example.com/phpmyadmin zugreifen können. Wählen Sie dann die Datenbank mydns, und Sie sollten die Tabellen rr und soa sehen. Hier finden Sie eine Erklärung der Datenbankstruktur/Felder usw.: http://mydns.bboy.net/doc/html/mydns_8.html#SEC8

2.2 Die originale MyDNS-Weboberfläche

Um die originale MyDNS-Weboberfläche zu installieren (die mit den MyDNS-Quellen geliefert wird, die sich noch im /tmp-Verzeichnis befinden sollten), tun Sie Folgendes:

cp /tmp/mydns-1.0.0/contrib/admin.php /var/www

Bearbeiten Sie dann /var/www/admin.php und konfigurieren Sie die Variablen im ersten Teil dieses Skripts, z.B. so:

| /*************************************************************************** KONFIGURIERBARE OPTIONEN ***************************************************************************/ /* Setzen Sie die folgenden vier Variablen auf den Hostnamen Ihres SQL-Servers, den Benutzernamen und das Passwort, die zum Zugriff auf diesen Server verwendet werden, und den Namen der ** Datenbank, in der sich Ihre MyDNS-Daten befinden. */ $dbhost = "localhost"; $dbuser = "mydns"; $dbpass = "mydns_password"; $dbname = "mydns"; /* Dieses Skript verwendet standardmäßig MySQL. Um stattdessen PostgreSQL zu verwenden, setzen Sie '$use_pgsql' auf '1'. */ $use_pgsql = 0; /* Die folgenden beiden Variablen geben diesem Skript den Namen Ihrer SOA Tabelle und den Namen Ihrer RR-Tabelle an. */ $soa_table_name = "soa"; $rr_table_name = "rr"; /* Die folgenden beiden Werte konfigurieren die Anzahl der pro Seite angezeigten Datensätze im Zonenbrowser und im Ressourcendatensatz-Editor. */ $zone_group_size = 25; $rr_group_size = 20; /* Dieses Skript kann die Seriennummer für eine Zone automatisch aktualisieren, wann immer ein Client einen Datensatz in dieser Zone ändert. ** Das Setzen von '$auto_update_serial' auf '1' aktiviert diese Option. */ $auto_update_serial = 1; /* Dieses Skript kann PTR-Datensätze automatisch aktualisieren, wenn Sie A-Datensätze ändern, hinzufügen oder löschen. Um diese Funktionalität zu aktivieren, setzen Sie '$auto_update_ptr' auf '1'. Wenn Sie dies aktivieren, stellen Sie sicher, dass Sie die Werte für '$default_ns' und '$default_mbox' unten ausfüllen, damit ** neue SOA-Datensätze die richtigen Informationen haben. */ $auto_update_ptr = 1; /* Wenn diese Option ungleich null ist, wird dieses Skript nicht beschweren, wenn die TTL für einen Datensatz unter dem Zonenminimum festgelegt ist. Beachten Sie, dass, wenn $ttl_min unten ungleich null ist, dieser Wert weiterhin ** überprüft wird. */ $ignore_minimum_ttl = 1; /* Die folgenden Werte werden von diesem Skript verwendet, um Mindestwerte für SOA- und RR-Datensätze durchzusetzen. Das Skript wird verhindern, dass Clients ** Werte eingeben, die niedriger sind als diese Zahlen. */ $ttl_min = 300; $refresh_min = 300; $retry_min = 300; $expire_min = 86400; /* Die folgenden beiden Variablen geben den Standardnameserver für neue SOA-Datensätze und die Standard-Administrator-Postfachadresse für neue SOA-Datensätze an. ** Diese werden automatisch ausgefüllt, wann immer eine neue Zone erstellt wird. */ $default_ns = "ns1.example.com."; $default_mbox = "admin.example.com."; /* Das folgende Array gibt Standarddatensätze für neue SOA-Datensätze an. Diese werden automatisch eingefügt, wann immer eine SOA eingefügt wird. ** Das Format jedes Datensatzes ist (name, type, aux, data). */ $default_records = array( array("", "NS", 0, "ns1.example.com."), /* array("", "MX", 10, "mail.example.com.") */ ); /* Die folgenden fünf Werte werden als Standardwerte verwendet, wann immer neue Zonen erstellt werden. */ $default_ttl = 86400; $default_refresh = 28800; $default_retry = 7200; $default_expire = 604800; $default_minimum_ttl = 86400; /* ** Der Rest dieser Variablen ermöglicht kosmetische Änderungen. */ $fontsize = 12; /* Standard-Schriftgröße (Pixel) */ $font_color = "#663300"; /* Schriftfarbe */ $page_bgcolor = "white"; /* Seitenhintergrundfarbe */ $help_bgcolor = "#FFFFCC"; /* Hintergrundfarbe des Hauptbildschirms-Hilfebox */ $soa_bgcolor = "#FFFF99"; /* Hintergrundfarbe des SOA-Editors */ $list_bgcolor_1 = "#FFFFCC"; /* Hintergrundfarbe der Listenelemente #1 */ $list_bgcolor_2 = "#FFFFAA"; /* Hintergrundfarbe der Listenelemente #2 */ $query_bgcolor = "#FFFFCC"; /* Hintergrundfarbe des Suchabfrageeingabefelds */ $query_fgcolor = "black"; /* Schriftfarbe des Suchabfrageeingabefelds */ $input_bgcolor = "white"; /* Hintergrundfarbe des Texteingabefelds */ $input_fgcolor = "black"; /* Schriftfarbe des Texteingabefelds */ /** Ende der konfigurierbaren Optionen *****************************************/ |

Achten Sie darauf, dass Sie die richtigen Datenbankdetails ausfüllen. Zusätzlich setze ich $auto_update_serial und $auto_update_ptr auf 1 und gebe Werte in $default_ns und $default_mbox an, damit die Seriennummern automatisch bei Änderungen inkrementiert werden und PTR-Datensätze ebenfalls automatisch erstellt werden. Aber natürlich liegt es an Ihnen, ob Sie dieses Verhalten wünschen.

Sie können jetzt auf die Weboberfläche unter http://ns1.example.com/admin.php zugreifen.

2.3 Installieren Sie MyDNSConfig

MyDNSConfig ist eine von mir mit PHP geschriebene Schnittstelle. Ich habe festgestellt, dass die originale MyDNS-Weboberfläche für Neulinge schwer zu handhaben ist, da sie keine Feldbeschreibungen hat (es ist einfach zu verwalten, wenn Sie aus der Bind-Welt kommen, aufgrund des Designs der Oberfläche, die den Bind-Zonendateien ähnelt).

Sie können MyDNSConfig von http://www.mydnsconfig.org herunterladen.

Angenommen, Sie haben mydnsconfig-.tar.gz nach /tmp heruntergeladen. Dann installieren Sie es wie folgt:

cd /tmp
tar xvfz mydnsconfig-.tar.gz
cd mydnsconfig
cp -fr
/var/www*

Dann müssen Sie /var/www/lib/config.inc.php anpassen. Meine sieht so aus:

| |

Stellen Sie sicher, dass Sie die richtigen Datenbankdetails ausfüllen! Wenn Sie möchten, dass MyDNSConfig automatisch umgekehrte DNS-Datensätze ( PTR-Datensätze) erstellt, wenn Sie neue DNS-Datensätze erstellen, setzen Sie $conf[‘auto_create_ptr’] auf 1 und geben Sie einen Standardnameserver in $conf[‘default_ns’] an (vergessen Sie nicht den Punkt am Ende!) und eine Admin-E-Mail-Adresse in $conf[‘default_mbox’] (auch mit einem Punkt am Ende, und das @-Zeichen muss durch einen Punkt ersetzt werden!).

Als nächstes müssen wir die rr- und soa-Tabellen in der mydns-Datenbank ändern und eine neue Tabelle erstellen, die von MyDNSConfig benötigt wird:

mysql -u root -p
Passwort eingeben:

Verwenden Sie mydns;

ALTER TABLE rr ADD sys_userid INT NOT NULL,
ADD sys_groupid INT NOT NULL AFTER sys_userid,
ADD sys_perm_user VARCHAR( 5 ) NOT NULL AFTER sys_groupid,
ADD sys_perm_group VARCHAR( 5 ) NOT NULL AFTER sys_perm_user,
ADD sys_perm_other VARCHAR( 5 ) NOT NULL AFTER sys_perm_group;

ALTER TABLE soa ADD sys_userid INT NOT NULL,
ADD sys_groupid INT NOT NULL AFTER sys_userid,
ADD sys_perm_user VARCHAR( 5 ) NOT NULL AFTER sys_groupid,
ADD sys_perm_group VARCHAR( 5 ) NOT NULL AFTER sys_perm_user,
ADD sys_perm_other VARCHAR( 5 ) NOT NULL AFTER sys_perm_group;

CREATE TABLE sys_user (
userid int(11) NOT NULL auto_increment,
sys_userid int(11) NOT NULL default ‘0’,
sys_groupid int(11) NOT NULL default ‘0’,
sys_perm_user varchar(5) NOT NULL default ‘’,
sys_perm_group varchar(5) NOT NULL default ‘’,
sys_perm_other varchar(5) NOT NULL default ‘’,
username varchar(100) NOT NULL default ‘’,
passwort varchar(100) NOT NULL default ‘’,
modules varchar(255) NOT NULL default ‘’,
startmodule varchar(255) NOT NULL default ‘’,
app_theme varchar(100) NOT NULL default ‘default’,
typ varchar(20) NOT NULL default ‘user’,
active tinyint(4) NOT NULL default ‘1’,
name varchar(100) NOT NULL default ‘’,
vorname varchar(100) NOT NULL default ‘’,
unternehmen varchar(100) NOT NULL default ‘’,
strasse varchar(100) NOT NULL default ‘’,
ort varchar(100) NOT NULL default ‘’,
plz varchar(10) NOT NULL default ‘’,
land varchar(50) NOT NULL default ‘’,
email varchar(100) NOT NULL default ‘’,
url varchar(255) NOT NULL default ‘’,
telefon varchar(100) NOT NULL default ‘’,
fax varchar(100) NOT NULL default ‘’,
language varchar(10) NOT NULL default ‘de’,
groups varchar(255) NOT NULL default ‘’,
default_group int(11) NOT NULL default ‘0’,
PRIMARY KEY (userid)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

INSERT INTO sys_user (userid, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, username, passwort, modules, startmodule, app_theme, typ, active, name, vorname, unternehmen, strasse, ort, plz, land, email, url, telefon, fax, language, groups, default_group) VALUES (1, 1, 0, ‘riud’, ‘riud’, ‘’, ‘admin’, ‘21232f297a57a5a743894a0e4a801fc3’, ‘admin,designer,resellers,sites,dns’, ‘dns’, ‘default’, ‘admin’, 1, ‘’, ‘Administrator’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘en’, ‘1,2’, 1);

quit;

Jetzt können Sie auf MyDNSConfig unter http://ns1.example.com zugreifen. Der Standard-Login-Benutzername ist admin, das Passwort ist ebenfalls admin. Bitte ändern Sie das Passwort nach Ihrem ersten Login unter System -> Benutzer bearbeiten.

2.4 Verwenden Sie dig, um Ihre Datensätze zu testen

Nachdem Sie DNS-Datensätze mit einer der drei hier beschriebenen Weboberflächen erstellt haben, können Sie Ihre Datensätze mit dig testen. Angenommen, Sie haben die Zone test.com. (mit einem Punkt am Ende!) mit dem A-Datensatz www erstellt. Wenn Sie ausführen

dig @localhost www.test.com

dann sollte die Ausgabe wie folgt aussehen:

| :~# dig @localhost www.test.com ; <> DiG 9.2.4 <> @localhost www.test.com ;; globale Optionen: printcmd ;; Antwort erhalten: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12658 ;; flags: qr aa rd; QUERY: 1, ANTWORT: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; FRAGESEKTION: ;www.test.com. IN A ;; ANTWORTSEKTION: www.test.com. 86400 IN A 1.2.3.4 ;; Abfragezeit: 20 msec ;; SERVER: 1.2.3.4#53(localhost) ;; WANN: Fri Dec 16 14:14:19 2005 ;; MSG SIZE rcvd: 45 |

Wenn Sie die automatische Erstellung von PTR-Datensätzen in der originalen MyDNS-Weboberfläche oder in MyDNSConfig aktiviert haben, können Sie auch den umgekehrten DNS-Datensatz überprüfen. Wenn www.test.com auf 1.2.3.4 zeigt, dann sollte

dig @localhost -x 1.2.3.4

etwas wie folgt anzeigen:

| ~# dig @localhost -x 1.2.3.4 ; <> DiG 9.2.4 <> @localhost -x 1.2.3.4 ;; globale Optionen: printcmd ;; Antwort erhalten: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46572 ;; flags: qr aa rd; QUERY: 1, ANTWORT: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; FRAGESEKTION: ;4.3.2.1.in-addr.arpa. IN PTR ;; ANTWORTSEKTION: 4.3.2.1.in-addr.arpa. 86400 IN PTR www.test.com. ;; Abfragezeit: 15 msec ;; SERVER: 1.2.3.4#53(localhost) ;; WANN: Fri Dec 16 14:21:05 2005 ;; MSG SIZE rcvd: 69 |

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.