Instalación y configuración de tinydns
· Howto · Networking · Linux · Dns
TinyDNS es el servidor de nombres de djbDNS, una suite de herramientas para DNS, creada por Daniel J. Bernstein. 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 están disponibles dentro de la suite. Esta modularidad lo hace muy potente, versátil y rápido.
djbDNS se compone de 6 herramientas:
- TinyDNS: Servidor de Nombres.
- DNScache: Almacena y resuelve direcciones, como aquellas que TinyDNS no tiene declaradas.
- WallDNS: Resuelve consultas inversas.
- RblDNS: Provee información sobre direcciones IP.
- AxfrDNS: Responde consultas de transferencia de zona.
- Axfr-get: Realiza las transferencias de zona.
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
Daemontools 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 primera línea.
Debería quedarnos así:
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 inicio
y agrega SV:12345:respawn:/command/svscanboot a /etc/inittab.
Ejecutemos svscan.
svscan /service &
Instalación de ucspi-tcp
ucspi-tcp (UNIX Client-Server Program Interface for TCP) es una herramienta de línea de comandos 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 primera línea agregamos -include /usr/include/errno.h.
Debería quedarnos así:
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 comando con la IP pública 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 algún 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 error de supervise, comprueben que el proceso esté corriendo.
ps aux | grep sv
De no estarlo pueden ejecutarlo manualmente con 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 proveedor 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 comandos 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.
También podemos editar el archivo data manualmente.
Agreguemos nuestro NS al archivo data y compilemos.
cd /etc/tinydns/root
./add-ns dominio.com 1.2.3.4
make
Si quisiéramos agregar un nuevo dominio, usamos 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.