Configuração DNS · 6 min read · Nov 27, 2025

Configuração Perfeita do DjbDNS no Servidor Ubuntu 8.04 (amd64) Hardy

Configuração Perfeita do DjbDNS no Servidor Ubuntu 8.04 (amd64) Hardy

DjbDNS é uma coleção de ferramentas do Sistema de Nomes de Domínio. Inclui software para todas as operações fundamentais de DNS:

Cache DNS: Encontrando endereços de hosts da Internet. Quando um navegador deseja contatar www.hotwired.com, ele primeiro pergunta a um cache DNS, como o dnscache do djbdns, para encontrar o endereço IP de www.hotwired.com. Provedores de serviços de Internet executam dnscache para encontrar endereços IP solicitados por seus clientes. Se você estiver executando um computador doméstico ou uma estação de trabalho, pode executar seu próprio dnscache para acelerar sua navegação na web.

Servidor DNS: Publicando endereços de hosts da Internet. O endereço IP de www.hotwired.com é publicado pelos servidores DNS da HotWired. O djbdns inclui um servidor DNS de uso geral, o tinydns; administradores de rede executam o tinydns para publicar os endereços IP de seus computadores. O djbdns também inclui servidores de propósito especial para publicar paredes DNS e RBLs.

Cliente DNS: Comunicando-se com um cache DNS. O djbdns inclui uma biblioteca C de cliente DNS e várias utilidades de cliente DNS de linha de comando. Programadores usam essas ferramentas para enviar solicitações a caches DNS.

O DjbDNS também inclui várias ferramentas de depuração de DNS, notavelmente o dnstrace, que os administradores usam para diagnosticar servidores remotos mal configurados.

Recursos de segurança:

  • dnscache é executado como um uid não-root dedicado dentro de uma jaula chroot, portanto, não pode tocar o restante da máquina.
  • tinydns é executado como outro uid não-root dedicado dentro de sua própria jaula chroot.
  • walldns é executado como outro uid não-root dedicado dentro de sua própria jaula chroot.
  • dnscache descarta consultas DNS de fora de uma lista especificada de endereços IP.
  • dnscache e a biblioteca dns usam um novo ID de consulta e uma nova porta UDP para cada pacote de consulta. Eles descartam respostas DNS de qualquer endereço IP que não seja aquele para o qual a consulta correspondente foi enviada.
  • dnscache usa um gerador criptográfico para selecionar números de porta e IDs imprevisíveis.
  • dnscache é imune a envenenamento de cache.

tinydns nunca armazena informações em cache. Não suporta recursão.

Pré-instalação

apt-get install build-essential  
mkdir /tmp/downloads  
cd $_  
wget -c  HYPERLINK "http://www.thedjbway.org/patches/djb_errno_patches.tgz" http://www.thedjbway.org/patches/djb_errno_patches.tgz  
tar -zxvf djb_errno_patches.tgz  
wget -c   HYPERLINK "http://cr.yp.to/daemontools/daemontools-0.76.tar.gz" http://cr.yp.to/daemontools/daemontools-0.76.tar.gz  
wget -c  HYPERLINK "http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz" http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz  
wget -c  HYPERLINK "http://cr.yp.to/djbdns/djbdns-1.05.tar.gz" http://cr.yp.to/djbdns/djbdns-1.05.tar.gz

Instalar Todos os Pacotes

a. Instalar ucspi-tcp-src:

cd /tmp/downloads  
tar -zxvf ucspi-tcp-0.88.tar.gz  
cd ucspi-tcp-0.88  
patch -p1 < /tmp/downloads/ucspi-tcp-0.88.errno.patch  
make  
make setup check

b. daemontools

cd /tmp/downloads  
tar -zxvf  daemontools-0.76.tar.gz  
cd admin/daemontools-0.76/  
touch /etc/inittab  
patch -p1 < /tmp/downloads/daemontools-0.76.errno.patch  
package/install
vi /etc/event.d/svscan
# svscan - daemontools

start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /command/svscanboot

Este instalador apenas cria links para todos os comandos svscan em /command, então é melhor copiar estes:

cd /command  
rm -rf *  
cp /tmp/downloads/admin/daemontools/command/* /command/

Isso é tudo… então (você pode precisar reiniciar) …

initctl start svscan

c. djbdns

cd /tmp/downloads  
tar -zxvf djbdns-1.05.tar.gz  
cd djbdns-1.05  
echo gcc -O2 -include /usr/include/errno.h > conf-cc   
make  
make setup check

Configurar Pacotes

Crie usuários (se não tiverem sido criados automaticamente):

adduser --no-create-home --disabled-login --shell /bin/false dnscache  
adduser --no-create-home --disabled-login --shell /bin/false dnslog  
adduser --no-create-home --disabled-login --shell /bin/false tinydns

Configurar dnscache:

Em nosso cenário, precisamos que cada servidor mestre e escravo seja tanto “autoritativo” quanto “em cache”. Portanto, é muito importante entender como alcançar isso com o djbdns. Ao contrário do bind, o djbdns usa um IP individual para cada tipo de serviço DNS. Por padrão, cada sistema está pronto com 2 IPs => um IP de host e outro é IP de loopback. Portanto, qualquer sistema na LAN deve acessar o DNS em cache, portanto, o IP do host para o DNS em cache. E executaremos o autoritativo no IP de loopback e, mais tarde, vincularemos isso ao DNS em cache, assim os hosts da LAN podem consultar também os registros de host autoritativos.

mkdir /var/lib/svscan  
dnscache-conf dnscache dnslog /var/lib/svscan/dnscache   
ln -sf /var/lib/svscan/dnscache /service

Verifique se o diretório “supervise” foi criado em /service/dnscache
Para verificar se está em execução: basta adicionar apenas uma única entrada como ‘nameserver ’ em /etc/resolv.conf e verificar algumas consultas de sites públicos usando ‘nslookup’ ou ‘dig’ a partir da linha de comando.

Agora você precisa permitir que os hosts da LAN consultem a partir dele. Então, basta criar um arquivo em branco nomeado de acordo com sua rede ou sub-rede como:

touch /etc/dnscache/root/ip/

É isso. Agora você pode consultar de qualquer um dos hosts dessa . Da mesma forma, você pode habilitar vários hosts, redes ou sub-redes para consulta.
Ao contrário do bind, você pode ajustar o tamanho do cache do servidor de nomes editando o arquivo /etc/dnscache/env/CACHESIZE. Além disso, você pode atualizar ou limpar manualmente o cache executando o seguinte comando:

svc -t /service/dnscache

Temporariamente, você pode parar e iniciar o dnscache com os seguintes comandos:

svc -d /service/dnscache => para parar o serviço dnscache  
svc -u /service/dnscache => para iniciar o serviço dnscache

Configurar tinydns:

tinydns-conf tinydns dnslog /var/lib/svscan/tinydns   
ln -sf /var/lib/svscan/tinydns /service

Verifique se o diretório “supervise” foi criado em /service/tinydns.

Eles ainda não contêm nenhuma entrada de zona para quaisquer domínios, mas chegaremos a isso em breve. Bem, ao contrário do bind, as informações da zona são escritas em um único arquivo (mesmo para várias zonas, incluindo zonas reversas) e esse é /var/lib/svscan/tinydns/root/data. Este é um arquivo gravável por humanos que é posteriormente convertido em formato binário usando um comando tinydns e esse binário é chamado de formato cdb, então esse arquivo binário é /var/lib/svscan/tinydns/root/data.cdb de onde o tinydns responde a todas as consultas. A sintaxe para registros de zona é muito curta e compacta em comparação com o bind. Aqui estão alguns exemplos:

a. Para entrada de servidor de nomes:

  .in.domain.com:10.20.0.10:ns1.in.domain.com  
  .in.domain.com:10.20.0.12:ns2.in.domain.com

b. Para reverse-dns para o servidor de nomes acima:

  .10.in-addr.arpa::ns1.in.domain.com  
  .10.in-addr.arpa::ns2.in.domain.com

c. Para registros MX:

  @in.domain.com:165.212.65.113:mx.usa.net:10  
  @in.domain.com:10.20.0.12:mail.in.domain.com:20

d. Registros A:

  =host0001.in.domain.com:10.10.0.101

e. Registros de alias para hosts:

  +host01.in.domain.com:10.10.0.101  
  +mysql01.in.domain.com:10.10.0.101

E finalmente, converta /var/lib/svscan/tinydns/root/data para o formato cdb por

tinydns-data

ou

cd /var/lib/svscan/tinydns/root  
make

No final, para vincular essas informações de zona ao servidor DNS em cache, crie arquivos nomeados como 10.in-addr.arpa, in.domain.com e domain.com etc. no diretório /var/lib/svscan/dnscache/root/servers/, cujo conteúdo deve ser 127.0.0.1 (o IP de Loopback). É isso. Está tudo configurado.

Nota: Sempre que você fizer alterações nos dados e criar um arquivo data.cdb alterado, não se esqueça de atualizar ou limpar o cache.

svc -t /services/*

Configuração do Servidor Escravo Usando Djbdbs

Basta seguir http://www.seebq.com/dns-replication-using-rsync e algumas alterações em alguns arquivos do Mestre e dos Escravos.

a. Alterações no /var/lib/svscan/tinydns/root/Makefile do mestre: Edite o arquivo como

remote: data.cdb
  rsync -az -e ssh data.cdb :/service/tinydns/root/data.cdb
  ssh  'svc -t /service/dnscache'
data.cdb: data
  /usr/local/bin/tinydns-data
  svc -t /service/dnscache

b. Alterações no arquivo /var/libsvscan/tinydns/root/data do escravo como

# Não edite os dados neste computador! data.cdb é copiado do MESTRE.
# A linha a seguir protege data.cdb parando o make.
9

Assim, se por engano alguém digitar o comando make no diretório /etc/tinydns/root ou o comando tinydns-data, isso apenas limpará o cache, pois não há arquivo de dados no(s) escravo(s).

E sim, apenas uma configuração de login auto-ssh entre mestre e escravo(s) para que as alterações acima automatizem o processo. As alterações acima apenas enviarão o arquivo data.cdb para o(s) escravo(s). Portanto, não há chance de dados diferentes entre os servidores de nomes, o que significa consistência em todos.

Backup e Restauração

Como mínimo, precisamos apenas de uma cópia do arquivo /var/lib/svscan/tinydns/root/data ou, no máximo, todo o /var/lib/svscan/dnscache e /var/lib/svscan/tinydns. É isso.

Para restauração, basta configurar o dnscache ou tinydns, levará pouco tempo, e copiar os dados de backup. Finalmente, crie um link simbólico para /service. É isso.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.