Instalación y configuración de TinyDNS [ES]

TinyDNS es el servidor de nombres de djbDNS, una suite de herramientas para DNS, creada por Daniel J. Berstein. Por defecto el servidor solo responde a consultas de las zonas previamente declaradas, no responde consultas inversas ni transferencia de zonas. Para estas otras funcionalidades otra serie de herramientas estan disponibles dentro de la suite. Esta modularidad lo hace muy potente, versatil y rápido.

djbDNS se compone de 6 herramientas:

djbDNS tiene 2 dependencias, daemontools 0.70+ y ucspi-tcp que debemos instalar antes de continuar.

Setup

Creamos un directorio para almacenar nuestras descargas.

mkdir /package
chmod 755 /package
cd /package

Compilar Daemontools

Deamontools es la colección de herramientas para el manejo de servicios en UNIX.

Descargamos daemontools 0.76 y descomprimimos.

wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar xvfz daemontools-0.76.tar.gz

Compilamos

Si estamos trabajando en Linux y no en BSD o Solaris es probable que al compilar recibamos el siguiente error:

/usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in envdir.o.

Editamos /package/admin/daemontools-0.76/src/conf--cc e incluimos -include /usr/include/errno.h al final de la primer linea.

Deberia quedarnos asi:

gcc -O2 -Wimplicit -Wunused -Wcomment -Wchar-subscripts -Wuninitialized -Wshadow -Wcast-qual -Wcast-align -Wwrite-strings -include /usr/include/errno.h

cd admin/daemontools-0.76/
package/install

Por defecto la instalación carga svscan a la rutina de incio y agrega SV:12345:respawn:/command/svscanboot a /etc/inittab. Ejecutemos svscan.

svscan /service &

Instalación de ucspi-tcp

ucspi-tcp es el acronimo de UNIX Client-Server Program Interface for TCP es una herramienta de linea de comando para crear aplicaciones TCP de cliente-servidor.

Descargamos ucspi-tcp 0.88 y descomprimimos.

cd /package
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
tar xvzf ucspi-tcp-0.88.tar.gz

Compilamos

Al igual que daemontools es probable que al compilar recibas un error de libc.so. Editamos /package/ucspi-tcp-0.88/conf-cc y al final de la primer linea agregamos -include /usr/include/errno.h.

Deberia quedarnos asi:

gcc -O2 -include /usr/include/errno.h

cd ucspi-tcp-0.88/
make
make setup check

Instalación de djbDNS y TinyDNS

Descargamos y descomprimimos djbDNS.

cd /package
wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
tar xvzf djbdns-1.05.tar.gz
cd djbdns-1.05/

Compilamos

echo gcc -O2 -include /usr/include/errno.h > conf-cc
make
make setup check

Ya con djbDNS y sus dependencias creamos dos usuarios: Gtinydns y Gdnslog.

useradd Gtinydns
useradd Gdnslog

Ejecutamos tinydns-conf para crear la carpeta del servicio en /etc/tinydns.

Recuerda correr el commando con la IP publica de tu servidor.

tinydns-conf Gtinydns Gdnslog /etc/tinydns <public-ip>

La IP debe estar configurada en el servidor y no debe utilizar DNScache ni algun otro servicio en el puerto 53. Si se desea usar DNSCache en el mismo servidor se puede utilizar otra interfaz en el mismo servidor.

Le notificamos a svscan del nuevo servicio y usamos svstat para validar que el servicio esté corriendo.

ln -s /etc/tinydns /service/tinydns
svstat /service/tinydns

Si reciben un supervise error, comprueben que el proceso este corriendo.

ps aux | grep sv

De no estarlo pueden ejectuarlo manualmente svscan /service &

Re-ejecutar svstat /service/tinydns debería devolver el pid.

/service/tinydns: up (pid ####) ## seconds

Delegación y zonas

Primero debemos configurar en nuestro proovedor de dominios (GoDaddy, Namecheap, etc) nuestros dominios. Registraremos un Nameserver con nuestra IP. Una vez hecho esto, debemos configurar nuestro servidor para que responda a nuestro dominio. Recuerden usar nuestra IP. Usaremos los commandos add-host y add-alias que se encuentran en el directorio /etc/tinydns/root. Estos comandos editan el archivo /etc/tinydns/root/data. Luego de editado este archivo debemos compilarlo con el comando make.

Podemos editar el archivo data de manualmente.

Agreguemos nuestro NS al archivo data y compilemos.

cd /etc/tinydns/root
./add-ns dominio.com 1.2.3.4
make

Si quisieramos agregar un nuevo dominio simplemente con add-host.

./add-host new-domain.com 1.2.3.4

Una alternativa es editar el archivo data manualmente con la siguiente forma:

`=tiger.heaven.af.mil:1.8.7.5` para add-host, o `+www.heaven.af.mil:1.8.7.4` para add-alias.

No olvides compilar el archivo data al finalizar la edición.