MyDNS es un servidor DNS que usa bases de datos MySQL para almacenar toda la informacion DNS en lugar de los archivos conf como Bind o djbdns.
La ventaja que ofrece MyDNS sobre otras configuraciones es que permite administrar y modificar los registros DNS a traves de un navegador web a traves de su interfaz de administración. MyDNS simplemente lee los registros de la base de datos, y no necesita ser reiniciado cuando los registros DNS son cambiados o las zonas son creadas, editadas o eliminadas, esta es problablemente su mayor ventaja.
Instalacion:
1.- Obtener la fuente:
wget http://mydns.bboy.net/download/mydns-1.1.0.tar.gz
2.- Usar tar para desempaquetar:
tar -zxvf mydns*.gz
3.- Compilacion del proyecto:
./configure
make
make install
make conf (crea el mydns.conf)
4.- Instalar MySQL:(por si no lo tiene aun)
apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin
5.- Crear la contraseña de root:
mysqladmin -u root password yourrootsqlpassword
6.- Crear la base de datos mydns y el usuario:
mysql -u root -pEnter password:
CREATE DATABASE mydns;GRANT SELECT, INSERT, UPDATE, DELETE ON mydns.* TO 'mydns'@'localhost' IDENTIFIED BY 'mydns_password';GRANT SELECT, INSERT, UPDATE, DELETE ON mydns.* TO 'mydns'@'localhost.localdomain' IDENTIFIED BY 'mydns_password';FLUSH PRIVILEGES;quit;
Ahora en un shell normal generamos las tablas para la base de datosmydns:
mydns --create-tables | mysql -u root -p mydnsEnter password:
7.- Lo siguente que haremos sera añadir dos columnas a la tabla soa de la base de datos de mydns:
mysql -u root -pEnter password:ALTER TABLE mydns.soa ADD COLUMN active ENUM('Y','N') NOT NULL;ALTER TABLE mydns.soa ADD INDEX (active);ALTER TABLE mydns.soa ADD COLUMN xfer CHAR(255) NOT NULL;quit;
8.- Editamos el archivo /etc/mydns.conf para que quede asi:
#### /etc/mydns.conf## Fri Oct 21 16:36:32 2005## For more information, see mydns.conf(5).### DATABASE INFORMATIONdb-host = localhost # SQL server hostnamedb-user = root # SQL server usernamedb-password = mydns_password # SQL server passworddatabase = mydns # MyDNS database name# GENERAL OPTIONSuser = nobody # Run with the permissions of this usergroup = nogroup # Run with the permissions of this grouplisten = * # Listen on these addresses ('*' for all)# CACHE OPTIONSzone-cache-size = 1024 # Maximum number of elements stored in the zone cachezone-cache-expire = 60 # Number of seconds after which cached zones expiresreply-cache-size = 1024 # Maximum number of elements stored in the reply cachereply-cache-expire = 30 # Number of seconds after which cached replies expire# ESOTERICAlog = LOG_DAEMON # Facility to use for program output (LOG_*/stdout/stderr)pidfile = /var/run/mydns.pid # Path to PID filetimeout = 120 # Number of seconds after which queries time outmulticpu = 1 # Number of CPUs installed on your systemallow-axfr = no # Should AXFR be enabled?allow-tcp = yes # Should TCP be enabled?ignore-minimum = no # Ignore minimum TTL for zone?soa-table = soa # Name of table containing SOA recordsrr-table = rr # Name of table containing RR data
9.- Creamos en scrip de inicio de MyDNS /etc/init.d/mydns
#! /bin/sh# mydns Start the MyDNS server# Author: Falko Timme .set -ePATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/binNAME=mydnsDAEMON=/usr/local/sbin/$NAMEDESC=”DNS server”SCRIPTNAME=/etc/init.d/$NAME# Gracefully exit if the package has been removed.test -x $DAEMON || exit 0case “$1″ instart)echo -n “Starting $DESC: $NAME”$DAEMON –backgroundecho “.”;;stop)echo “Stopping $DESC: $NAME.”kill -9 `pidof $NAME` &> /dev/null;;restart)echo “Restarting $DESC: $NAME.”$0 stop && sleep 1$0 start;;*)echo “Usage: $SCRIPTNAME {start|stop|restart}” >&2exit 1;;esacexit 0
10.- Lo siguiente será hacer ejecutable el script e iniciar MyDNS:
chmod 755 /etc/init.d/mydns/etc/init.d/mydns start
Si quieres que MyDNS se inicie automaticamente durante el inicio del sistema, es necesario crear los enlaces de inicio de sistema (system bootup links). En Debian, se hace asi:
update-rc.d mydns defaults 21 22
En Fedora o RedHat:
chkconfig --levels 235 mydns on
11.- Arrancar y parar sin el script mydns
Arrancar
/usr/local/sbin/mydns -b
Parar
killall mydns
12.- La hora de la verdad: la administración del servidor
Hay varias maneras, una es via web (básicamente usando phpmyadmin para manejar mysql via web), otra forma es usando un script en perl que viene en la carpeta contrib. Esta carpeta esta en la carpeta original del proyecto.
Se debe entrar al script y hacerle el cambio de ip 127.0.0.1 por la nuestra.
chmod 755 create_domain.pl
Para probar si ya existe un dominio en la base de datos:./create_domain.pl --domain=mydomain.net --ip=123.45.67.89 –test
Para crear un dominio:
./create_domain.pl --domain=mydomain.net --ip=123.45.67.89 --create
Podria ser necesario hacer: perl create_domain.pl
Estan los comandos:
mydnsimport y mydnsexport
Ya hablaremos de ellos mas adelante.