Servidor DNS · 3 min read · Oct 02, 2025

Servidor DNS Clean djbDNS en CentOS - dnscache y tinydns - De A a Z

Servidor DNS Clean djbDNS en CentOS - dnscache y tinydns - De A a Z

¿Qué es djbDNS? ¿Y por qué usamos djbDNS? Hay un nuevo punto de vista para servir el servicio DNS: cada una de las funcionalidades del servidor DNS es un servicio separado, como autoridad, caché, reenvío, etc. La otra diferencia son las herramientas de demonios que reiniciarán rápidamente los servicios para prevenir zombis.

Requisitos:

Instalación limpia de CentOS 5.4

Inicie sesión como root.

# yum update
# yum install gcc
# mkdir pkg
# cd pkg

El primer paso es instalar las herramientas de demonios:

# cd ~/pkg
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
# gunzip daemontools-0.76.tar
# tar -xpf daemontools-0.76.tar
# rm -f daemontools-0.76.tar
# cd admin/daemontools-0.76
# vi src/conf-cc

Agregue la siguiente línea al final de la línea de gcc:

-include /usr/include/errno.h
# ./package/install

Otro paquete que necesitamos preparar para que djbdns funcione es ucspi:

# cd ~/pkg
# wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
# gunzip ucspi-tcp-0.88.tar
# tar -xf ucspi-tcp-0.88.tar
# cd ucspi-tcp-0.88
# vi src/conf-cc

Agregue la siguiente línea al final de la línea de gcc:

-include /usr/include/errno.h
# make
# make setup check

El siguiente paso es la publicación del documento:

# cd ~/pkg
# wget http://cr.yp.to/djbdns/doc.tar.gz

A continuación, descomprimiremos los documentos en /doc:

# gunzip < doc.tar.gz | (cd /; tar -xf -)

Utilice el siguiente script para fusionar en los documentos del sistema:

#!/bin/sh
for i in packages commands cfunctions fileformats
do
  sort -f /dev/null `find /doc/merge -name $i.html` > /doc/$i.new
  mv /doc/$i.new /doc/$i.html
done

Guarde el script en un archivo: script.sh

# chmod +x script.sh
# ./script.sh
# cd ~/pkg
# wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
# gunzip djbdns-1.05.tar
# tar -xf djbdns-1.05.tar
# cd djbdns-1.05
# vi src/conf-cc

Agregue la siguiente línea al final de la línea de gcc:

-include /usr/include/errno.h
# make
# make setup check

Toda la compilación se realiza.

El siguiente paso es la configuración del servidor DNS.

DNSCACHE

Cree dos cuentas de usuario del sistema:

# useradd -d /var/dnscache -s /bin/false dnscache
# useradd -d /var/dnscache -s /bin/false dnslog

Configure la caché:

# dnscache-conf dnscache dnslog /var/dnscache/dnscache 

Ejemplo: dnscache-conf dnscache dnslog /var/dnscache/dnscache 192.168.20.1

Permita que el resto de su red consulte dnscache:

# touch /var/dnscache/dnscache/root/ip/

Ejemplo: touch /var/dnscache/dnscache/root/ip/192.168

Agregue dnscache a la lista de servicios que serán monitoreados por svscan:

# ln -sf /var/dnscache/dnscache /service/

Si le gusta ms-windows… puede reiniciar para asegurarse de que todo esté en su lugar.

Hay un punto aquí que aún no puede consultar desde su servidor de caché, porque sus clientes ahora pueden resolverse en modo inverso.

Como se mencionó antes, es una de las características de seguridad de la caché DNS verificar inversamente a los clientes. Así que en el siguiente paso trabajaremos en tinydns para que actúe por nosotros.

DNSTINY

Una vez más, necesitamos dos cuentas de usuario del sistema:

# useradd -d /var/dnscache -s /bin/false tinydns
# useradd -d /var/dnscache -s /bin/false tinylog
# tinydns-conf tinydns tinylog /var/dnscache/tinydns 127.0.0.1

Ahora es el momento de agregar nodos a la base de datos DNS:

# cd /var/dnscache/tinydns/root
# ./add-ns internal 192.168.20.1
# ./add-ns 20.168.192.in-addr.arpa 192.168.20.1
# ./add-mx internal 192.168.20.2
# ./add-host ns.internal 192.168.20.1
# ./add-host mail.internal 192.168.20.2
# ./add-alias unagi.internal 192.168.20.2
# make

Estos nodos irán al archivo de base de datos /var/dnscache/tinydns/root/data que puede editar manualmente.

El último paso es el inicio del servicio DNS:

# ln -sf /var/dnscache/tinydns /service
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.