Installation von MyDNS und dem MyDNSConfig Control Panel auf CentOS 5.1

Version 1.0
Author: Falko Timme


Diese Anleitung veranschaulicht wie man MyDNS und MyDNSConfig auf CentOS 5.1 installiert und konfiguriert. MyDNS ist ein DNS Server, der MySQL Datenbanken als Backend verwendet anstelle von Konfigurationsdateien wie zum Beispiel Bind oder djbdns. Der Vorteil besteht daring, dass MyDNS einfach die Einträge der Datenbanken liest. Wenn sich DNS Einträge ändern oder Zonen erstellt/bearbeitet/gelöscht werden, muss es nicht neu gestartet oder geladen werden. Ein zweiter Nameserver kann leicht eingerichtet werden indem man eine zweite Instanz von MyDNS installiert, die auf die gleiche Datenbank zugreift oder die MySQL Master / Slave Replikationsfunktion verwendet, um die Daten automatisch auf den zweiten Nameserver zu kopieren.

MyDNSConfig ist ein einfach anzuwendendes web-basiertes Interface zu MyDNS. MyDNSConfig kann alle Arten von DNS Einträgen, die in MyDNS verfügbar sind, erstellen und fügt Funktionen wie User Management und Zugriffsprivilegien hinzu.

Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

In dieser Anleitung verwende ich den Hostnamen server1.example.com mit der IP Adresse 192.168.0.100. Diese Einstellungen werden bei Dir höchstwahrscheinlich etwas anders sein, Du musst sie an entsprechender Stelle ersetzen.

2 Installation der Voraussetzungen

Zuerst aktivieren wir die RPMforge Paketdatenbank auf unserem CentOS System, da einige der Pakete, die wir im Laufe dieser Anleitung installieren werden, in den offiziellen CentOS 5.1 Paketdatenbanken nicht verfügbar sind:

rpm -Uhv http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

MyDNSConfig ist ein web-basiertes Interface zu MyDNS, in PHP geschrieben. Es wird also ein Webserver benötigt, auf dem PHP aktiviert ist sowie den MySQL Datenbankenserver. Wenn bei Dir bereits Apache, PHP und MySQL installiert ist, kannst Du diesen Schritt überspringen. Wir installieren hier außerdem phpMyAdmin, damit Du ein Web Interface für die MySQL Datenbank hast, für den Fall, dass Du es brauchst:

yum install httpd mysql-server php php-mysql php-mbstring phpmyadmin

Starte MySQL:

chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start

Richte dann Passwörter für das MySQL Root Konto ein:

mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

Nun konfigurieren wir phpMyAdmin. Wir ändern die Apache Konfiguration, sodass phpMyAdmin nicht nur Verbindungen vom localhost zulässt (indem wir die <Directory "/usr/share/phpmyadmin"> Zeile auskommentieren):

vi /etc/httpd/conf.d/phpmyadmin.conf


#
# Web application to manage MySQL # #<Directory "/usr/share/phpmyadmin"> # Order Deny,Allow # Deny from all # Allow from 127.0.0.1 #</Directory> Alias /phpmyadmin /usr/share/phpmyadmin Alias /phpMyAdmin /usr/share/phpmyadmin Alias /mysqladmin /usr/share/phpmyadmin
Als Nächstes ändern wir die Authentifizierung in phpMyAdmin von cookie zu http:

vi /usr/share/phpmyadmin/config.inc.php


[...]
/* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...]
Dann erstellen wir die System Startup Links für Apache und starten es:

chkconfig --levels 235 httpd on
/etc/init.d/httpd start

Nun kannst Du Deinen Browser auf http://server1.example.com/phpmyadmin/ oder http://192.168.0.100/phpmyadmin/ richten und Dich mit dem Benutzernamen root und Deinem neuen Root MySQL Passwort anmelden.

3 Installation von MyDNSConfig

Melde Dich in MySQL an und erstelle die Datenbank:

mysql -u root -p


CREATE DATABASE mydns;
GRANT SELECT, INSERT, UPDATE, DELETE ON mydns.* TO 'mydns'@'localhost' IDENTIFIED BY 'mydnspassword';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydns.* TO 'mydns'@'localhost.localdomain' IDENTIFIED BY 'mydnspassword';
FLUSH PRIVILEGES;
quit;

Ersetze das Wort mydnspassword in den obigen Befehlen mit einem Passwort Deiner Wahl.

Lade MyDNSConfig runter:

cd /tmp
wget http://mesh.dl.sourceforge.net/sourceforge/mydnsconfig/MyDNSConfig-1.1.0.tar.gz
tar xvfz MyDNSConfig-1.1.0.tar.gz
cd MyDNSConfig-1.1.0

Installiere MyDNSConfig:

mkdir /usr/share/mydnsconfig
cp -rf interface/* /usr/share/mydnsconfig/
ln -s /usr/share/mydnsconfig/web/ /var/www/html/mydnsconfig

Installiere die MyDNSConfig MySQL Datenbank:

mysql -u root -p mydns < install/mydnsconfig.sql

Der obige Befehl verlangt nach einem Passwort, bitte gib das Passwort des MySQL Root Benutzers ein.

Bearbeite die MyDNSConfig Konfiguration; bitte vergewissere Dich, dass Du die richtigen Datenbankeinstellungen eingibst:

vi /usr/share/mydnsconfig/lib/config.inc.php


<?php
/* Copyright (c) 2005, Till Brehm, Falko Timme, projektfarm Gmbh All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of ISPConfig nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ ini_set('register_globals',0); $conf["app_title"] = "MyDNSConfig"; $conf["app_version"] = "1.1.0"; $conf["rootpath"] = "/usr/share/mydnsconfig"; $conf["fs_div"] = "/"; // File system divider, on windows and / on linux and unix $conf["classpath"] = $conf["rootpath"].$conf["fs_div"]."lib".$conf["fs_div"]."classes"; $conf["temppath"] = $conf["rootpath"].$conf["fs_div"]."temp"; /* Database Settings */ $conf["db_type"] = 'mysql'; $conf["db_host"] = 'localhost'; $conf["db_database"] = 'mydns'; $conf["db_user"] = 'mydns'; $conf["db_password"] = 'mydnspassword'; /* External programs */ $conf["programs"]["wput"] = $conf["rootpath"]."/tools/wput/wput"; /* Themes */ $conf["theme"] = 'grey'; $conf["html_content_encoding"] = 'text/html; charset=iso-8859-1'; $conf["logo"] = 'themes/default//images/mydnsconfig_logo.gif'; /* Default Language */ $conf["language"] = 'en'; /* Auto Load Modules */ $conf["start_db"] = true; $conf["start_session"] = true; /* DNS Settings */ $conf["auto_create_ptr"] = 1; // Automatically create PTR records? $conf["default_ns"] = 'ns1.example.com.'; // must be set if $conf['auto_create_ptr'] is 1. Don't forget the trailing dot! $conf["default_mbox"] = 'admin.example.com.'; // Admin email address. Must be set if $conf['auto_create_ptr'] is 1. Replace "@" with ".". Don't forget the trailing dot! $conf["default_ttl"] = 86400; $conf["default_refresh"] = 28800; $conf["default_retry"] = 7200; $conf["default_expire"] = 604800; $conf["default_minimum_ttl"] = 86400; ?>
Entferne danach den MyDNSConfig Installer aus dem /tmp Verzeichnis:

cd /tmp
rm -rf MyDNSConfig-1.1.0/
rm -f MyDNSConfig-1.1.0.tar.gz

4 Installation von MyDNS

Als Nächstes laden wir das mydns-mysql rpm Paket von http://mydns.bboy.net/download/ runter und installieren es wie folgt:

wget http://mydns.bboy.net/download/mydns-mysql-1.1.0-1.i386.rpm
rpm -ivh mydns-mysql-1.1.0-1.i386.rpm

Öffne die MyDNS Konfigurationsdatei /etc/mydns.conf, gib die richtigen Datenbankangaben an, lass Zonentransfers zu indem Du allow-axfr auf yes setzt, aktiviere TCP (allow-tcp = yes) und lege einen rekursiv auflösenden Nameserver fest (d.h. einen validen Nameserver, z.B. aus Deinem ISP; z.B. recursive = 213.191.92.86) sodass MyDNS Anfragen für Domains beantworten kann, für die es nicht autoritativ ist:

vi /etc/mydns.conf


##
## /etc/mydns.conf ## Wed Jan 18 17:18:48 2006 ## For more information, see mydns.conf(5). ## # DATABASE INFORMATION db-host = localhost # SQL server hostname db-user = mydns # SQL server username db-password = mydnspassword # SQL server password database = mydns # MyDNS database name # GENERAL OPTIONS user = nobody # Run with the permissions of this user group = nobody # Run with the permissions of this group listen = * # Listen on these addresses ('*' for all) no-listen = # Do not listen on these addresses # CACHE OPTIONS zone-cache-size = 1024 # Maximum number of elements stored in the zone cache zone-cache-expire = 60 # Number of seconds after which cached zones expires reply-cache-size = 1024 # Maximum number of elements stored in the reply cache reply-cache-expire = 30 # Number of seconds after which cached replies expire # ESOTERICA log = LOG_DAEMON # Facility to use for program output (LOG_*/stdout/stderr) pidfile = /var/run/mydns.pid # Path to PID file timeout = 120 # Number of seconds after which queries time out multicpu = 1 # Number of CPUs installed on your system recursive = 213.191.92.86 # Location of recursive resolver allow-axfr = yes # Should AXFR be enabled? allow-tcp = yes # Should TCP be enabled? allow-update = no # Should DNS UPDATE be enabled? ignore-minimum = no # Ignore minimum TTL for zone? soa-table = soa # Name of table containing SOA records rr-table = rr # Name of table containing RR data soa-where = # Extra WHERE clause for SOA queries rr-where = # Extra WHERE clause for RR queries
Erstelle als Nächstes die System Startup Links für MyDNS und starte MyDNS:

chkconfig --levels 235 mydns on
/etc/init.d/mydns start

Letztlich müssen wir die System Startup Links für MyDNS reparieren. MyDNS ist abhängig von MySQL, also muss MyDNS starten nachdem MySQL gestartet ist, sonst versagt es. Die Standard Startup Links für MyDNS veranlassen, dass es vor MySQL startet, was falsch ist, also beheben wir das auch wie folgt:

cd /etc/rc.d/rc3.d
mv S52mydns S99mydns
cd /etc/rc.d/rc4.d
mv S52mydns S99mydns
cd /etc/rc.d/rc5.d
mv S52mydns S99mydns

0 Kommentar(e)

Zum Posten von Kommentaren bitte