# cachedns + tinydns: resolutor y servidor de dns en la red interna.

- Dirección: https://freemem.space/cachedns-tinydns-resolutor-y-servidor-de-dns-en-la-red-interna/
- Publicada: 18 de octubre de 2005
- Temas: Archivo de tapiasbravo.com
- Autor: Francisco Antonio Tapias Bravo

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](https://web.archive.org/web/20060821222057/http://old.tapiasbravo.com/) en 2026.*
