MyDNS · 3 min read · Jan 09, 2026

Ejecutando un servidor DNS basado en MySQL: MyDNS - Página 3

3 Instalar dnscache

Una cosa muy importante que saber sobre MyDNS es que no soporta búsquedas DNS externas (recursivas), es decir, ¡MyDNS solo entregará respuestas para dominios para los que es autoritativo! Si deseas resolver otros dominios como, por ejemplo, www.google.com, tendrás que instalar un resolvedor DNS como dnscache en tu sistema, y debe ser instalado en una dirección IP separada. Para averiguar por qué el servidor DNS (MyDNS) y el resolvedor DNS (dnscache) están separados de esa manera, echa un vistazo aquí: http://cr.yp.to/djbdns/separation.html

Normalmente, tu ISP te proporciona direcciones IP de servidores de nombres que usas para tu conexión a internet en casa o en tu oficina para que tu estación de trabajo pueda resolver nombres como www.google.com. Las direcciones IP de los servidores de nombres son en realidad direcciones IP de resolvedores DNS como dnscache. Ahora, si deseas dar a tus clientes tus propias direcciones IP de servidores de nombres, debes configurar un resolvedor DNS y dar a tus clientes la dirección IP de ese resolvedor DNS.

Ahora, si solo tienes una dirección IP en tu servidor, podrías decir: “Ok, enlazo MyDNS a 127.0.0.1 y dnscache a mi dirección IP pública para sortear este cuello de botella.”. Por favor, lee aquí para averiguar por qué esta es una mala idea: http://www.fefe.de/djbdns/#sameip

Si no deseas instalar un resolvedor DNS en tu sistema, puedes omitir esta sección.

Ahora digamos que tienes dos direcciones IP públicas, 1.2.3.4 y 1.2.3.5, y deseas que MyDNS escuche en 1.2.3.4 y dnscache escuche en 1.2.3.5.

Realiza los siguientes pasos para instalar dnscache:

groupadd dns
useradd -M -g dns -s /sbin/nologin -c DNS-Cache-User dnscache
useradd -M -g dns -s /sbin/nologin -c TinyDNS-User tinydns
useradd -M -g dns -s /sbin/nologin -c DNSlog-User dnslog

Crea el script de inicio de dnscache:

cd /usr/local/sbin
wget http://www.servershak.com/dns/dnsctl
chmod 700 dnsctl
ln -s /usr/local/sbin/dnsctl /etc/init.d/dnsctl

Crea los enlaces de inicio del sistema:

En Debian:

update-rc.d dnsctl defaults

En Fedora y RedHat:

chkconfig –levels 235 dnsctl on

Luego compilamos e instalamos dnscache:

cd /usr/local/src
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
tar -zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
make
make setup check

mkdir -p /var/package
chmod 1755 /var/package
cd /var/package
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
gunzip daemontools-0.76.tar
tar -xpf daemontools-0.76.tar
rm daemontools-0.76.tar
cd /var/package/admin/daemontools-0.76
package/install

cd /usr/local/src
wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
tar -xvzf djbdns-1.05.tar.gz
cd djbdns-1.05
make
make setup check

dnscache-conf dnscache dnslog /etc/dnscache 1.2.3.5
ln -s /etc/dnscache /service
touch /etc/dnscache/root/ip/1.2.3

Ahora dnscache está escuchando en 1.2.3.5. Ahora tenemos que decirle a MyDNS que debe escuchar solo en 1.2.3.4. Por lo tanto, tenemos que cambiar la directiva listen en /etc/mydns.conf:

| listen = 1.2.3.4 |

y reiniciar MyDNS:

/etc/init.d/mydns restart

Ahora, si intentas resolver nombres de dominio en 1.2.3.5, deberías obtener una respuesta. Por ejemplo, para resolver www.google.com, puedes ejecutar

dig @1.2.3.5 www.google.com

De la misma manera, deberías poder resolver dominios manejados por MyDNS (por ejemplo, www.somedomain.com), pero esta vez haces un dig a 1.2.3.4:

dig @1.2.3.4 www.somedomain.com

4 Obtener las zonas y registros del servidor DNS primario al secundario

Si tanto el servidor DNS primario como el secundario utilizan MyDNS, tienes tres posibilidades para obtener los datos del primario al secundario:

  1. La forma tradicional: puedes usar transferencias de zona. Por lo tanto, debes cambiar allow-axfr = no a allow-axfr = yes en /etc/mydns.conf y reiniciar MyDNS en el servidor DNS primario. Además de eso, debes especificar la dirección IP del servidor DNS secundario en la columna xfer en la tabla soa para las zonas que deben ser transferidas. Además, asegúrate de que el firewall en el DNS primario no bloquee el puerto 53 (TCP y UDP).
  2. Tanto el DNS primario como el secundario utilizan la misma base de datos MySQL. Hay un inconveniente con esta solución: si el servidor MySQL falla, entonces tanto el DNS primario como el secundario fallarán al mismo tiempo…
  3. La solución preferida: usar replicación de base de datos MySQL para transferir los datos del DNS primario al secundario. Asegúrate de que el firewall en el DNS primario no bloquee el puerto MySQL (normalmente 3306).

Recomiendo que uses replicación MySQL. He escrito una guía muy precisa sobre cómo configurarlo aquí: https://www.howtoforge.com/mysql_database_replication así que no tengo que cubrir este tema aquí nuevamente.

Enlaces

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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