DNS Setup · 6 min read · Nov 27, 2025

Configuración Perfecta de DjbDNS en Ubuntu Server 8.04 (amd64) Hardy

Configuración Perfecta de DjbDNS en Ubuntu Server 8.04 (amd64) Hardy

DjbDNS es una colección de herramientas del Sistema de Nombres de Dominio. Incluye software para todas las operaciones fundamentales de DNS:

Caché DNS: Encontrar direcciones de hosts de Internet. Cuando un navegador quiere contactar www.hotwired.com, primero pregunta a una caché DNS, como la dnscache de djbdns, para encontrar la dirección IP de www.hotwired.com. Los proveedores de servicios de Internet ejecutan dnscache para encontrar direcciones IP solicitadas por sus clientes. Si estás ejecutando una computadora en casa o una estación de trabajo, puedes ejecutar tu propia dnscache para acelerar tu navegación web.

Servidor DNS: Publicar direcciones de hosts de Internet. La dirección IP de www.hotwired.com es publicada por los servidores DNS de HotWired. djbdns incluye un servidor DNS de propósito general, tinydns; los administradores de red ejecutan tinydns para publicar las direcciones IP de sus computadoras. djbdns también incluye servidores de propósito especial para publicar muros DNS y RBLs.

Cliente DNS: Hablar con una caché DNS. djbdns incluye una biblioteca C de cliente DNS y varias utilidades de cliente DNS de línea de comandos. Los programadores utilizan estas herramientas para enviar solicitudes a cachés DNS.

DjbDNS también incluye varias herramientas de depuración de DNS, notablemente dnstrace, que los administradores utilizan para diagnosticar servidores remotos mal configurados.

Características de seguridad:

  • dnscache se ejecuta como un uid no root dedicado dentro de una cárcel chroot, por lo que no puede tocar el resto de la máquina.
  • tinydns se ejecuta como otro uid no root dedicado dentro de su propia cárcel chroot.
  • walldns se ejecuta como otro uid no root dedicado dentro de su propia cárcel chroot.
  • dnscache descarta consultas DNS de fuera de una lista especificada de direcciones IP.
  • dnscache y la biblioteca dns utilizan un nuevo ID de consulta y un nuevo puerto UDP para cada paquete de consulta. Descartan respuestas DNS de cualquier dirección IP que no sea la que se envió la consulta correspondiente.
  • dnscache utiliza un generador criptográfico para seleccionar números de puerto e IDs impredecibles.
  • dnscache es inmune a la contaminación de caché.

tinydns nunca almacena información en caché. No soporta recursión.

Pre-Instalación

apt-get install build-essential  
mkdir /tmp/downloads  
cd $_  
wget -c  HYPERLINK "http://www.thedjbway.org/patches/djb_errno_patches.tgz" http://www.thedjbway.org/patches/djb_errno_patches.tgz  
tar -zxvf djb_errno_patches.tgz  
wget -c   HYPERLINK "http://cr.yp.to/daemontools/daemontools-0.76.tar.gz" http://cr.yp.to/daemontools/daemontools-0.76.tar.gz  
wget -c  HYPERLINK "http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz" http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz  
wget -c  HYPERLINK "http://cr.yp.to/djbdns/djbdns-1.05.tar.gz" http://cr.yp.to/djbdns/djbdns-1.05.tar.gz

Instalar Todos Los Paquetes

a. Instalar ucspi-tcp-src:

cd /tmp/downloads  
tar -zxvf ucspi-tcp-0.88.tar.gz  
cd ucspi-tcp-0.88  
patch -p1 < /tmp/downloads/ucspi-tcp-0.88.errno.patch  
make  
make setup check

b. daemontools

cd /tmp/downloads  
tar -zxvf  daemontools-0.76.tar.gz  
cd admin/daemontools-0.76/  
touch /etc/inittab  
patch -p1 < /tmp/downloads/daemontools-0.76.errno.patch  
package/install
vi /etc/event.d/svscan
# svscan - daemontools

start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /command/svscanboot

Este instalador solo crea enlaces a todos los comandos svscan en /command, así que es mejor copiar estos:

cd /command  
rm -rf *  
cp /tmp/downloads/admin/daemontools/command/* /command/

Eso es todo… luego (puedes necesitar reiniciar) …

initctl start svscan

c. djbdns

cd /tmp/downloads  
tar -zxvf djbdns-1.05.tar.gz  
cd djbdns-1.05  
echo gcc -O2 -include /usr/include/errno.h > conf-cc   
make  
make setup check

Configurar Paquetes

Crear usuarios (si no han sido creados automáticamente):

adduser --no-create-home --disabled-login --shell /bin/false dnscache  
adduser --no-create-home --disabled-login --shell /bin/false dnslog  
adduser --no-create-home --disabled-login --shell /bin/false tinydns

Configurar dnscache:

En nuestro escenario, necesitamos que cada servidor maestro y esclavo sea tanto “autoritativo” como “caché”. Por lo tanto, es muy importante entender cómo lograr esto con djbdns. A diferencia de bind, djbdns utiliza IPs individuales para cada tipo de servicio DNS. Por defecto, cada sistema está listo con 2 IP’s => una IP de host y otra es IP de loopback. Así que cualquier sistema en la LAN debería acceder a la caché DNS, por lo tanto la IP de host para la caché DNS. Y ejecutaremos autoritativo en la IP de loopback, y luego lo vincularemos a la caché DNS, por lo que los hosts de la LAN también pueden consultar registros de host autoritativos.

mkdir /var/lib/svscan  
dnscache-conf dnscache dnslog /var/lib/svscan/dnscache   
ln -sf /var/lib/svscan/dnscache /service

Verifica que el directorio “supervise” se haya creado en /service/dnscache
Para verificar que está funcionando: solo agrega una única entrada como ‘nameserver ’ en /etc/resolv.conf y verifica alguna consulta de sitio web público usando ‘nslookup’ o ‘dig’ desde la línea de comandos.

Ahora necesitas permitir que los hosts de la LAN consulten desde él. Así que solo crea un archivo en blanco nombrado según tu red o subred como:

touch /etc/dnscache/root/ip/

Eso es todo. Ahora puedes consultar desde cualquiera de los hosts de esa . De manera similar, puedes habilitar múltiples hosts, redes o subredes para consulta.
A diferencia de bind, puedes ajustar el tamaño de la caché del servidor de nombres editando el archivo /etc/dnscache/env/CACHESIZE. También puedes actualizar o vaciar manualmente la caché ejecutando el siguiente comando:

svc -t /service/dnscache

Temporalmente puedes detener y comenzar dnscache con los siguientes comandos:

svc -d /service/dnscache => para bajar el servicio dnscache  
svc -u /service/dnscache => para subir el servicio dnscache

Configurar tinydns:

tinydns-conf tinydns dnslog /var/lib/svscan/tinydns   
ln -sf /var/lib/svscan/tinydns /service

Verifica que el directorio “supervise” se haya creado en /service/tinydns.

No contienen ninguna entrada de zona para ningún dominio aún, pero llegaremos a eso en un momento. Bueno, a diferencia de bind, la información de la zona se escribe en un solo archivo (incluso para múltiples zonas, incluidas las zonas inversas) y ese es /var/lib/svscan/tinydns/root/data. Este es un archivo escribible por humanos que luego se convierte en formato binario usando un comando de tinydns y ese binario se llama formato cdb, así que ese archivo binario es /var/lib/svscan/tinydns/root/data.cdb desde donde tinydns responde todas las consultas. La sintaxis para los registros de zona es muy corta y compacta en comparación con bind. Aquí hay algunos ejemplos:

a. Para entrada de servidor de nombres:

  .in.domain.com:10.20.0.10:ns1.in.domain.com  
  .in.domain.com:10.20.0.12:ns2.in.domain.com

b. Para reverse-dns para el servidor de nombres anterior:

  .10.in-addr.arpa::ns1.in.domain.com  
  .10.in-addr.arpa::ns2.in.domain.com

c. Para registros MX:

  @in.domain.com:165.212.65.113:mx.usa.net:10  
  @in.domain.com:10.20.0.12:mail.in.domain.com:20

d. Registros A:

  =host0001.in.domain.com:10.10.0.101

e. Registros Alias para hosts:

  +host01.in.domain.com:10.10.0.101  
  +mysql01.in.domain.com:10.10.0.101

Y finalmente convierte /var/lib/svscan/tinydns/root/data a formato cdb mediante

tinydns-data

o

cd /var/lib/svscan/tinydns/root  
make

Al final, para vincular esta información de zona al servidor de caché DNS, crea archivos nombrados como 10.in-addr.arpa, in.domain.com y domain.com, etc. en el directorio /var/lib/svscan/dnscache/root/servers/, cuyos contenidos deben ser 127.0.0.1 (la IP de Loopback). Eso es todo. Todo está configurado.

Nota: Siempre que realices cambios en los datos y crees un archivo data.cdb cambiado, no olvides actualizar o vaciar la caché.

svc -t /services/*

Configuración del Servidor Esclavo Usando Djbdbs

Solo sigue http://www.seebq.com/dns-replication-using-rsync y algunos ajustes en algunos archivos del Maestro y Esclavos.

a. Cambios en el /var/lib/svscan/tinydns/root/Makefile del maestro: Edita el archivo como

remote: data.cdb
  rsync -az -e ssh data.cdb :/service/tinydns/root/data.cdb
  ssh  'svc -t /service/dnscache'
data.cdb: data
  /usr/local/bin/tinydns-data
  svc -t /service/dnscache

b. Cambios en el archivo /var/libsvscan/tinydns/root/data del esclavo como

# No edites datos en esta computadora! data.cdb es copiado del MAESTRO.
# La siguiente línea protege data.cdb deteniendo make.
9

Así que si por error alguien escribe el comando make en el directorio /etc/tinydns/root o el comando tinydns-data, esto solo vaciará la caché ya que no hay archivo de datos en el(los) esclavo(s).

Y sí, solo una configuración de inicio de sesión auto-ssh entre maestro y esclavo(s) para que los cambios anteriores automaticen el proceso. Los cambios anteriores solo enviarán el archivo data.cdb al(los) esclavo(s). Así que no hay posibilidad de datos diferentes entre los servidores de nombres, lo que significa consistencia en todos.

Respaldo y Restauración

Como mínimo, solo necesitamos una copia del archivo /var/lib/svscan/tinydns/root/data o, en el máximo, todo el /var/lib/svscan/dnscache y /var/lib/svscan/tinydns. Eso es todo.

Para la restauración, solo configura dnscache o tinydns, apenas tomará tiempo, y copia los datos de respaldo. Finalmente, crea un enlace simbólico a /service. Eso es todo.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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