cachedns + tinydns: resolutor y servidor de dns en la red interna.
Siempre me pasa igual, cada vez que
instalo djbdns como cache de dns y servidor de dns para la red
interna con los nombres para cada uno de los hosts internos de la
red, se me olvida cómo hacer que funcionen los dos a la vez
sin problemas.
Esta vez he decidido no olvidarlo más
y nada como anotarlo en mi propio weblog.
Lo primero es instalar djbdns en
debian.
apt-get install daemontools-installer
djbdns-installer
Sigue la instrucciones para instalarlo,
es bastante sencillo.
Una vez instalado hay que proceder a la
configuración. Saber que el cache de dns lo gestionan cachedns
y el servidor de nombres tinydns. Antes de nada hay que tener en
cuenta que ambos servicios no pueden ni deben correr en la misma IP,
así que deberemos tener al menos dos IP, física o
sobrecargadas en la misma ethernet. No he probado si tinydns puede
funcionar utilizando 127.0.0.1. Supongamos que tenemos estas IPs, 192.168.1.81 para el cache dns y 192.168.1.82 para tinydns.
Procedamos a configurar cachedns
dnscache-conf dnscache dnslog
/etc/dnscache 192.168.1.81
Se habrá creado automáticamente
en /etc/ el directorio dnscache con un montón de carpetas y
archivos, donde se encuentra la configuración del cachedns.
Ahora sólo escucharía en 127.0.0.1:53, para que escuche
y acepte conexiones de otras redes deberemos indicarlo de la
siguiente manera
touch /etc/dnscache/root/ip/192.168.1
en este momento aceptaría
peticiones al 53 desde cualquier IP de la red 192.168.1.0. Realizado
esto ya podemos levantar el servicio utilizando supervise, el demonio
que instala daemontools, herramienta también de djb que antes
instalamos junto a djbdns (¿recordais?)
ln -s /etc/dnscache /service
si no existiese el directorio /service,
se crea y ya está. En 5 segundos de hacer el enlace simbólico
supervise levanta cachedns.
En este momento ya atiende peticiones.
Al principio tiene que ir recolectando las resoluciones de nombre y
esto lo hace preguntándole a otros resolutores, como por
ejemplo los DNS de nuestro proveedor. Para ello accede a este archivo
/etc/dnscache/root/servers/@ donde hay una lista de IP donde cachedns
puede «preguntar» para luego almacenar en su cache. En tail
-f /etc/dnscache/log/main/current podréis ver cómo va
preguntando y almacenando. Uhhhmmmm bueno, falta decirle a tu sistema
cual es el nameserver así que vi /etc/resolv.conf y pondremos
el primero de la lista de nameserver a 192.168.1.81
cat /etc/resolv.conf
nameserver 192.168.1.81
bueno, y ahora vamos a configurar el
servidor nombres tinydns. La verdad es que me encanta esta
herramienta porque nos olvidamos de los engorros de BIND, sus números
de serie y sus mil archivos. En djbdns todo es simpleza, por no
hablar de seguridad, robustez, velocidad, etc.
tinydns-conf tinydns dnslog
/etc/tinydns 192.168.1.82
al igual que cache de dns se ha creado
el directorio /etc/tinydns
para levantar tinydns usamos de nuevo
el supervise
ln -s /etc/tinydns /service Bueno, ahora ya nos queda menos aunque
lo más importante, crear el dominio interno de nuestra red y
los hosts del dominio. Supongamos que tenemos 5 ordenadores en casa.
Uno de ellos es el servidor web, otro el de dns y servidor de tiempo
(ntpd) y los otros tres estaciones de trabajo. El dominio se va a
llamar freemem. Vamos a hacer primero unas cosillas en dnscache y
para que podamos tener un dominio interno utilizaremos una
característica que tiene djbdns y que se llama «split
horizon».
echo 192.168.1.82 >
/etc/dnscache/root/servers/freemem
touch
/etc/dnscache/root/servers/1.168.192.in-addr.arpa
Para que funcione el invento
echo 1 >
/etc/dnscache/env/FORWARDONLY
cd /etc/tinydns/root/
y ahora a definir los hosts. Editamos
/etc/tinydns/root/data y lo ponemos parecido a esto
#define el servidor de nombres
autorizado
.freemem::ns1.freemem
=www.freemem:192.168.1.1
=dns.freemem:192.168.1.81
=workstation1.freemem:192.168.1.2
=workstation2.freemem:192.168.1.3
=ns1.freemem:192.168.1.82
+ntp.freemem:192.168.1.81
y ahora a ejecuta el comando make. Ya
sólo nos queda reiniciar dnscache
svc -h /service/dnscache/
Ya solo quedaría poner en los
resolv.conf de todos los hosts como nameserver 192.168.1.81
cat /etc/resolv.conf
domain freemem
search freemem
nameserver 192.168.1.81
Publicado en old.tapiasbravo.com el 18 de octubre de 2005. Recuperado de la Wayback Machine en 2026.