Instalar un servidor DNS con TinyDNS (djbdns)

Hace tiempo escribí una serie de howto's para la empresa en donde hospedo mis sitios. Los voy a ir traduciendo y extendiendo poco a poco en mi blog por si les interesa.

Esta instalación la hice en Gentoo Linux pero fácilmente la puedes adaptar para tu distribución de linux favorita.

1. Introducción

Un DNS (Domain Name Server) es utilizado para asociar un dominio a una dirección IP. El objetivo de esto es que personas como tú y yo no tengamos que recordar cosas del tipo 64.233.187.99 en lugar de solo google.com. Los dominios fueron pensados para hacernos la vida mas fácil a nosotros, a una computadora le da igual.

En este momento existen 2 principales competidores para servidores DNS en el mundo del código libre; BIND y djbdns (también conocido como TinyDNS). Siendo este último mas famoso por configuración sencilla y por ser mas ligero en memoria. BIND tiene APIs más difíciles de usar, pero tiene la comunidad de usuarios más grande. En lo personal prefiero TinyDNS.

2. Instalación

Si aún no lo tienes, hay que instalar svscan que es un guardian de daemons y te sirve como seguridad extra por si algún día se cae TinyDNS, volverlo a levantar automáticamente.

emerge supervise-scripts

Ahora agregamos svscan al nivel de booteo por default, para que inicie cada vez que el servidor lo haga e iniciamos el servicio:

rc-update add svscan default
/etc/init.d/svscan start

También puedes usar la herramienta eselect si así lo prefieres.

Ahora podemos hacer la instalación de TinyDNS:

emerge djbdns

¿A poco no es una maravilla Portage? :)

3. Configuración

Lo primero que tenemos que hacer es que TinyDNS se ligue a una dirección IP que tengamos en nuestro servidor, con los usuarios tinydns y dnslog que fueron creados durante la instalación,. ¡Recuerda reemplazar 1.2.3.4 con tu dirección IP!

tinydns-conf Gtinydns Gdnslog /etc/tinydns 1.2.3.4

Despues creamos un soft link para que svscan se encargue de cuidar nuestro servidor.

ln -s /etc/tinydns /service/tinydns

Si necesitas más performance, djbdns tiene un feature de cacheado. Como mi servidor no es de gran demanda yo no lo utilizo.

Ahora es tiempo de crear nuestro primer registro, así que lo relacionamos con nuestra IP y corremos make para asegurar que se cumplan los cambios

cd /service/tinydns/root
./add-ns example.com 1.2.3.4
make

Con eso ya esta funcionando tu dominio, pero tendrás que configurarlo para apuntar a servicios como el email, tus direcciones del servidor DNS, subdominios, etc. Esto lo logras modificando el archivo /service/tinydns/root/data. Esta es una configuración básica de ejemplo:

Zexample.com:example.com.:example.com.:2005100111:28800:7200:604800:3600:3600
#servidor de dominio
&example.com;::ns1.example.com.:3600
&example.com;::ns2.example.com.:3600
#dominio completo
=example.com:1.2.3.4:3600
#record MX (mail)
example.com:1.2.3.4:a::60
#adicionales
+mail.example.com:1.2.3.4:3600
+ns1.example.com:1.2.3.4:3600
+ns2.example.com:1.2.3.4:3600
+www.example.com:1.2.3.4:3600

Siempre recuerda ejecutar make después de hacer cambios.

Para referencia; dnsreport es un buen servicio que te dirá que configuraste bien o mal, no olvides usarlo en conjunto de herramientas de diagnóstico como dig.