MyDNS Setup · 3 min read · Jan 09, 2026

Executando um Servidor DNS Baseado em MySQL: MyDNS - Página 3

3 Instalar dnscache

Uma coisa muito importante a saber sobre o MyDNS é que ele não suporta consultas DNS externas (recursivas), ou seja, o MyDNS fornecerá respostas apenas para domínios dos quais é autoritativo! Se você quiser resolver outros domínios como, por exemplo, www.google.com, terá que instalar um resolvedor DNS como dnscache em seu sistema, e ele deve ser instalado em um endereço IP separado. Para descobrir por que o servidor DNS (MyDNS) e o resolvedor DNS (dnscache) são separados assim, dê uma olhada aqui: http://cr.yp.to/djbdns/separation.html

Normalmente, seu ISP fornece os endereços IP dos servidores de nomes que você usa para sua conexão de internet em casa ou no escritório, para que sua estação de trabalho possa resolver nomes como www.google.com. Os endereços IP dos servidores de nomes são, na verdade, endereços IP de resolvedores DNS como dnscache. Agora, se você quiser fornecer aos seus clientes seus próprios endereços IP de servidores de nomes, deve configurar um resolvedor DNS e fornecer aos seus clientes o endereço IP desse resolvedor DNS.

Agora, se você tiver apenas um endereço IP em seu servidor, poderia dizer: “Ok, eu vinculo o MyDNS a 127.0.0.1 e dnscache ao meu endereço IP público para contornar esse gargalo.”. Por favor, leia aqui para descobrir por que isso é uma má ideia: http://www.fefe.de/djbdns/#sameip

Se você não quiser instalar um resolvedor DNS em seu sistema, pode pular esta seção.

Agora digamos que você tenha dois endereços IP públicos, 1.2.3.4 e 1.2.3.5, e você quer que o MyDNS escute em 1.2.3.4 e dnscache escute em 1.2.3.5.

Faça os seguintes passos 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

Crie o script de inicialização do 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

Crie os links de inicialização do sistema:

No Debian:

update-rc.d dnsctl defaults

No Fedora e RedHat:

chkconfig –levels 235 dnsctl on

Então compilamos e instalamos o 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

Agora dnscache está escutando em 1.2.3.5. Agora temos que dizer ao MyDNS que ele deve escutar apenas em 1.2.3.4. Portanto, precisamos alterar a diretiva listen em /etc/mydns.conf:

| listen = 1.2.3.4 |

e reiniciar o MyDNS:

/etc/init.d/mydns restart

Agora, se você tentar resolver nomes de domínio em 1.2.3.5, deverá obter uma resposta. Por exemplo, para resolver www.google.com, você pode executar

dig @1.2.3.5 www.google.com

Da mesma forma, você deve ser capaz de resolver domínios gerenciados pelo MyDNS (por exemplo, www.somedomain.com), mas desta vez você consulta 1.2.3.4:

dig @1.2.3.4 www.somedomain.com

4 Obtendo As Zonas E Registros Do Servidor DNS Primário Para O Secundário

Se tanto o servidor DNS primário quanto o secundário usam MyDNS, você tem três possibilidades para transferir os dados do primário para o secundário:

  1. O modo antigo: você pode usar transferências de zona. Portanto, você deve mudar allow-axfr = no para allow-axfr = yes em /etc/mydns.conf e reiniciar o MyDNS no servidor DNS primário. Além disso, você deve especificar o endereço IP do servidor DNS secundário na coluna xfer na tabela soa para as zonas que devem ser transferidas. Além disso, certifique-se de que o firewall no DNS primário não bloqueie a porta 53 (TCP e UDP).
  2. Tanto o DNS primário quanto o secundário usam o mesmo banco de dados MySQL. Há uma desvantagem com esta solução: se o servidor MySQL falhar, então tanto o DNS primário quanto o secundário falharão ao mesmo tempo…
  3. A solução preferida: use replicação de banco de dados MySQL para transferir os dados do primário para o secundário. Certifique-se de que o firewall no DNS primário não bloqueie a porta MySQL (normalmente 3306).

Recomendo que você use replicação MySQL. Eu escrevi um guia muito preciso sobre como configurar isso aqui: https://www.howtoforge.com/mysql_database_replication, então não preciso cobrir este tópico aqui novamente.

Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.