Instalación de djbdns (sólo instalar el paquete, no queda ningún servicio activo)

Primero hay que hacer lo siguiente:

# bajo el paquete
cd ${HOME}/soft
wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz


# abro el paquete
tar xvzf djbdns-1.05.tar.gz
cd djbdns-1.05

# modifico error.h para que compile con los glibc nuevos
sed -i.ORI -es/^extern\ int\ errno\;/#include\ \<errno.h\>/ error.h

# actualizo el listado de root name servers
mv dnsroots.global dnsroots.global.ORI
for server in `host -t ns . | awk '/name server/ { print $4 ; }'`
do
  host -t a $server
done | awk '/has address/ { print $4 ; }' | sort > dnsroots.global

# compilo e instalo
make
sudo make setup check

man pages

# bajo las manpages
cd ${HOME}/soft
wget http://smarden.org/pape/djb/manpages/djbdns-1.05-man.tar.gz
tar xvzf djbdns-1.05-man.tar.gz
cd djbdns-man
for ext in 1 5 8 ; do
  gzip *.${ext}
  sudo cp -v *.${ext}.gz /usr/share/man/man${ext}
done

Creación de grupo y usuarios para resolver y server

sudo addgroup --system dns

# creo un usuario para el logger
sudo adduser --system --ingroup dns --disabled-login --no-create-home \
        --home /nonexistent --gecos "dns logger" dnslog

# creo un usuario para el resolver (dnscache)
sudo adduser --system --ingroup dns --disabled-login --no-create-home \
        --home /nonexistent --gecos "dns resolver" dnsresolver

# creo un usuario para el name server (tinydns), acá con un home propio
sudo adduser --system --ingroup dns --disabled-login --no-create-home \
        --home /nonexistent --gecos "dns server" dnsserver

Configuración de un resolver local (dnscache)

Este resolver sólo se puede usar en el equipo local

# creo un directorio para colgar todos los servicios de djbdns y el logs
sudo mkdir -pv /etc/djbdns /var/log/djbdns

# configuro el directorio de servicio y el log automáticamente
sudo dnscache-conf dnsresolver dnslog /etc/djbdns/dnscache
sudo ln -s /etc/djbdns/dnscache/log/main /var/log/djbdns/dnscache

levantar el servicio

# asegurarse de que no haya nada escuchando el port DNS en localhost
# y arrancar el servicio:
sudo ln -s /etc/djbdns/dnscache /service

Probar que funcione la resolución local de nombres

resolvconf

Si se está utilizando el paquete resolvconf, va a convenir modificar el run script:

## Creamos el patchfile
cat > /tmp/dnscacherunscript.patch <<EOF
--- run.orig     2007-11-30 14:38:42.000000000 -0300
+++ run 2007-11-30 14:56:14.000000000 -0300
@@ -1,6 +1,11 @@
 #!/bin/sh
+RESOLVCONF=yes
 exec 2>&1
 exec <seed
+if [ "X$RESOLVCONF" != "Xno" ] && [ -x /sbin/resolvconf ] ; then
+  echo "nameserver 127.0.0.1" | /sbin/resolvconf -a lo.named
+fi
+
 exec envdir ./env sh -c '
   exec envuidgid dnsresolver softlimit -o250 -d "$DATALIMIT" /usr/local/bin/dnscache
 '
EOF

## lo aplicamos
cd /etc/djbdns/dnscache
sudo patch -V simple -z .ORIG < /tmp/dnscacherunscript.patch

Si no se utiliza el resolvconf, simplemente editar el archivo /etc/resolv.conf, eliminar las líneas nameserver que haya y dejar sólo una línea así:

nameserver 127.0.0.1

Configuración de un resolver público (dnscache)

Este resolver se puede usar desde otros equipos (pero tienen que estar habilitados en la configuración)

# creo un directorio para colgar todos los servicios de djbdns y los logs
sudo mkdir -pv /etc/djbdns /var/log/djbdns

# configuro el directorio de servicio y el log automáticamente
# PONER ACÁ LA IP DONDE SE DARÁ EL SERVICIO
MYIP=10.98.76.54
sudo dnscache-conf dnsresolver dnslog /etc/djbdns/dnscachepub ${MYIP}
sudo ln -s /etc/djbdns/dnscachepub/log/main /var/log/djbdns/dnscachepub

levantar el servicio

# asegurarse de que no haya nada escuchando el port DNS en ${MYIP}
# y arrancar el servicio:
sudo ln -s /etc/djbdns/dnscachepub /service

redes aceptadas

Por default, dnscache no acepta queries desde hosts remotos. Si por ejemplo se desea habilitar a la red 192.168.1.0/24 para que pueda consultar al dnscache, se hace:

sudo touch /etc/djbdns/dnscachepub/root/ip/192.168.1

Para habilitarlo para que se puedan hacer queries desde cualquier lado, la solución más fácil es hacer:

sudo touch `seq -f "/etc/djbdns/dnscachepub/root/ip/%g" 0 255`

Esto creará los archivos /app/dnscachepub/root/ip/0, /app/dnscachepub/root/ip/1, ... /etc/djbdns/dnscachepub/root/ip/254 y /etc/djbdns/dnscachepub/root/ip/255, lo cual es suficiente.

Configuración de un nameserver autoritativo (tinydns)

# creo un directorio para colgar todos los servicios de djbdns y los logs
sudo mkdir -pv /etc/djbdns /var/log/djbdns

# configuro el directorio de servicio y el log automáticamente
# PONER ACÁ LA IP DONDE SE DARÁ EL SERVICIO
MYIP=10.98.76.54
sudo tinydns-conf dnsserver dnslog /etc/djbdns/tinydns ${MYIP}
sudo ln -s /etc/djbdns/tinydns/log/main /var/log/djbdns/tinydns

levantar el servicio

# asegurarse de que no haya nada escuchando el port DNS en ${MYIP}
# y arrancar el servicio:
sudo ln -s /etc/djbdns/tinydns /service

InstalaciónDeDjbDns (última edición 2008-12-27 03:17:05 efectuada por MarianoAbsatz)

Edit and actions menu

  • Página inmutable
  • Información
  • Adjuntos