Djbdns – how2
How-to djbdns
debian 2.6.26-1-686
Requerimientos:
Apache2
Mysql
Djbdns
Daemontools
Ucspi-tcp
Instalación:
El instalar djbdns no implica tener que desinstalar otro servidor de nombres como Bind previamente instalado y configurado en la maquina, de echo pueden estar instalados y configurados ambos; mientras no estén los dos corriendo y utilizando el puerto 53.
Instalamos el djbdns con “apt-get install djbdns” y sus dependencias automáticas o manualmente.
Opcionalmente con “apt-get build-dep djbdns” instalara las dependencias previamente o ayudara a instalar lo que haga falta para que djbdns funcione.
Con “apt-get install djbdns” lo hace también automáticamente, se instalaran los programas:
“daemontools-run” y “ucspi-tcp”.
Daemontools-run: Este programa es una colección de herramientas para la gestión de los servicios de Linux (en este caso sera utilizado para “manejar” los servicios del servidor de nombres (chequear que este programa cree el directorio /etc/service/, si no lo creo crearlo manualmente).
Ucspi-tcp: Este programa es una colección de herramientas para la gestión de los demonios de Linux, también es una alternativa mas segura a inet.d.
La instalación a terminado.
Configuración y puesta en marcha:
Una ves conocido el funcionamiento de estos dos programas damos uso a estos.
Djbdns necesita de dos cuentas de usuarios una es “tinydns” y la otra es “dnslog” (en realidad necesita unas mas pero en esta explicación no las utilizamos) ahora vamos a crear estas cuentas de usuario con “useradd tinydns” y “useradd dnslog”.
Entre las herramientas del paquete djbdns están “tinydns”,”tinydns-conf”,”tinydns-data”,”tinydns-edit”,”tinydns-get” que vamos ir explicando a medida que usemos estos programas.
Ahora tenemos que crear el directorio de trabajo de tinydns (que es el servidor de nombres)donde estarán los archivos de configuración, con el programa “tinydns-conf”.
Con “tinydns-conf tinydns dnslog /etc/tinydns/ 192.168.0.100″ levanta el servidor y define varios parámetros a comentar:
tinydns-conf (programa de creación de configuración de tinydns) tinydns (usuario con privilegios para manejar el dns) dnslog (usuario para gestionar los logs de tinydns) /etc/tinydns/ (directorio donde creara los archivos y carpetas de configuración) 192.168.0.100 (ip donde el servidor escuchara las peticiones de consulta).
Luego de esto si vamos al directorio /etc/tinydns/ habrá una estructura de archivos y carpetas de administración y funcionamiento del servidor de nombres. Hasta acá la configuración básica y simple de configurar el servidor, ya funcionara sin problemas, solo que sin respuesta de ningún dominio ya que no lo hemos agregado).
Para comprobar el estado del servidor de nombres usamos el programa “svstat” del paquete “daemontools” de esta forma: “svstat /etc/service/tinydns” y nos dice el estado del servidor UP o DOWN.
Para manejar el estado del servidor (iniciar, detener o reiniciar) vamos a usar el programa “svc -x /etc/service/tinydns/” donde x puede ser “u” (upload) “d” (download) o “t” (restart).
Hasta aquí tenemos un servidor de resolución andando sin ningún dominio.
Tipos de configuración para el servidor de djbdns:
dnscache:
Djbdns lo vamos a configurar como maestro en nuestra maquina de la forma que lo configuramos previamente, como cache en otra maquina o en la misma maquina con un alias de ethx, para configurarlo como dns cache los pasos son muy similares al de tinydns:
Hay que agregar el usuario dnscache, y ejecutar “dnscache-conf dnscache dnslog /etc/dnscache/ 192.16.2.100″ donde 192.168.0.100 es la ip donde va a escuchar las consultas.
Dentro del archivo “/etc/dnscache/ip” hay que escribir las ip a quien le va a contestar o la red a la que va a contestar las peticiones, fuera de esta información, el servidor dnscache no le responderá a nadie mas.
AXFRDNS:
Este programa escucha peticiones del servidor secundario y si dentro de la configuración de axilar esta la ip del o los servidores esclavos, el servidor tinydns donde corre axilar le responderá las actualizaciones de zonas.Se configura de la misma manera que tinydns y utiliza la misma ip de tinydns.
Configurando zonas:
La configuración de zonas se puede hacer de dos maneras, una es editando el archivo “/etc/tinydns/root/data” este archivo es de texto plano donde se deben agregar los dominios con estructura propia (osea como lo estableció el escritor del código).
o dentro de la carpeta “/etc/tinydns/root/ se encuentran los siguientes programas para agregar las zonas:
“add-alias, add-host, add-ns, add-childns, add-mx” con su respectiva nomenclatura de uso que vamos a ver en otro apartado.
Una ves agregada las zonas hay que ejecutar el comando “make” que compila la información del archivo editado “data” y lo convierte a una base de datos llamada “data.cdb” donde el servidor tinydns leerá esta base de datos (o archivo) “data.cdb”.
Forma de trabajo:
El servidor de nombres tinydns trabaja básicamente leyendo el archivo “data.cdb” pero se puede utilizar un administrador basado en web que leerá (en un futuro a través de un script) el archivo “data.cdb”.
El administrador que vamos a ver y estudiar es el “vegadns v0.9.9.10″ y como se configura.
Luego de bajar e instalar el “vegadns-0.9.10.tgz” (instalado comúnmente en /var/www/vegadns) y asimilado por apache2 hay que configurar el archivo “/var/www/vegadns/src/config.php” donde hay que escribir las opciones personales del servidor:
$private_dirs = ‘/var/www/vegadns’;
// Mysql settings
$mysql_host = ‘127.0.0.1′;
$mysql_user = ‘vegadns’;
$mysql_pass = ‘passvegadns’;
$mysql_db = ‘vegadns’;
// Local URL
$vegadns_url = ‘http://172.16.2.136/vegadns/’;
$trusted_hosts = ‘172.16.2.136′;
$tinydns_ip = ‘172.16.2.136′;
Como se puede ver se piden valores de acceso a una base de datos “mysql”, esto significa que previamente en el paso de instalación de “vegadns v0.9.9.10″ hay que crear (o en este mismo punto también se puede crear) una base de datos en mysql llamada “vegadns”, como crear una base de datos en mysql y agregar el sitio virtual en apache2 queda fuera del objetivo de este howto.
Una ves echo esto podemos entrar al Url “http://localhost/vegadns” y ver el entorno gráfico de administración de nuestro servidor de nombres, el usuario por defecto para entrar es “test@test.com” y el pass “test”, una ves echo esto hay que crear una cuenta administrador y borrar la cuenta “test@test.com” por seguridad.
Luego de sentirnos cómodos con el entorno podremos ver y comprobar dentro de la carpeta “/etc/tinydns/root” con el comando “cat data” que los cambios echos en el sitio web del localhost no son impactados en el archivo “data”, para que esto sea así hay que copiar el archivo llamado “update-data.sh” a la dirección “/usr/local/sbin/update-data.sh” y editarlo poniendo la dirección url donde vegadns funcionara (ej.: VEGADNS=’http://192.168.0.100/vegadns/index.php’), y por ultimo agregar al cron con el comando “crontab -e” la linea “
*/1 * * * * /usr/local/sbin/update-data.sh” donde “/1″ es el tiempo en minutos que va a ejecutar el script y de esta forma el archivo “data” queda con las modificaciones de la pagina web.
Hasta aquí configuramos un servidor de dns como servidor primario, ahora para la configuración de un servidor secundario que escuche a este servidor primario que ya configuramos tenemos que seguir los siguientes pasos.
En la maquina que usaremos como servidor “esclavo” de tinydns tendremos que hacer los pasos anteriores con algunas modificaciones:
Crear las cuentas de usuarios: tinydns, dnslog <NOTA: agregar esta nueva cuenta de usuario “axfrdns” >
Ejecutar el comando: “tinydns-conf tinydns dnslog /etc/tinydns/ 192.168.0.101″ (si se mira atrás la ip era 192.168.0.100)
Comprobar que este funcionando up: “svstat /etc/service/tinydns”
NOTA: NO agregar nada al archivo “data” este se va a actualizar solo con el tinydns maestro.
Hasta acá todo fue igual a la configuración del servidor principal o máster.
Axfrdns se instala prácticamente igual que tinydns, es mas tiene que escuchar en la misma ip.
Con el comando “axfrdns-conf axfrdns dnslog /etc/tinydns/ 192.168.0.101″ axfrdns escucha en la misma ip del servidor tinydns esclavo, para ver el estado de axfrdns hay que hacer lo mismo que con tinydns solo que cambiando la carpeta de servicio “svstat /etc/service/axfrdns”.
Chequeamos con “svstat /etc/service/axfrdns” y “svstat /etc/service/tinydns” veremos que esta todo ok (si no es así leer de nuevo).
Lo ultimo que nos queda es modificar el archivo “/etc/tinydns/root/Makefile” del servidor primario para que acceda al servidor secundario y actualice el secundario. ej.
remote: data.cdb
scp data.cdb (ipdelsecundario):/etc/tinydns/root/data.cdb.tmp
ssh (ipdelsecundario) mv /etc/tinydns/root/data.cdb.tmp /etc/tinydns/root/data.cdb
data.cdb: data
/usr/local/bin/tinydns-data



Entramos al modo configuración:
