LinuxMan
 
Submitted by Eri on Wed, 2005-09-14 23:04.

O Caminho das Pedras












Introdução


DjbDNS é um software de DNS escrito por Dj Bernstein, que também é o criador do qmail, ezmlm e outros. A sua intenção é serum software seguro em substituição ao BIND da ISC .
Como é característica dos softwares de djb, a instalação não é muito simples, porém tem fácil administração (muito mais simples que o BIND, IMHO).


Sobre o autor


Eri Ramos Bastos trabalha com Linux desde 1998, passando por diversas distribuições e fases diferentes do pinguim. Atualmente trabalha como consultor em soluções Linux / Unix e está disponível para ajudar a sua empresa a implantar Linux em todos os setores. Consultoria



Requisitos


Para instalar o djbdns, você irá precisar ter em seu sistema o daemontools e o uscpi-tcp. Para quem já instalou o Qmail de acordo com o meu tutorial, os mesmos já encontram-se instalados. Se não o fez ainda, façauma pausa aqui, vá até o [6]tutorial do qmail e volte quando tiver instalado os 2 softwares.



Notas


IPs serão representados como a.b.c.d, ou x.y.z.a, ou u.n.i.x e assim por diante. Substitua pelo seus IPs comandos estarão dentro de caixas cinzas.



Instalando o djbdns


Sempre utilizo como base o diretório /usr/src, para facilitar. As linhas em itálico são comandos, e podem ser diretamente coladas na shell. Vamos baixar o djbdns.




Procedimento


  cd /usr/src/
  mkdir djbdns
  wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
  gunzip djbdns-1.05.tar
  tar -xf djbdns-1.05.tar
  cd djbdns-1.05
  make
  make setup check



Referências


How to install djbdns



Configurando o djbdns




Criando usuários


Precisaremos criar 4 usuários para ter todas as funcionalidades do djbdns. Serão: dnscache, dnslog, axfrdns e tinydns

No linux:

  useradd dnscache -d /home/djb -s /bin/false -g users
  useradd dnslog -d /home/djb -s /bin/false -g users
  useradd tinydns -d /home/djb -s /bin/false -g users
  useradd axfrdns -d /home/djb -s /bin/false -g users



Configurando o dnscache


  dnscache-conf dnscache dnslog /etc/dnscache x.y.z.a


Onde x.y.z.a é o IP onde o dnscache deve atender aos pedidos



Iniciando o dnscache


  ln -s /etc/dnscache /service



Liberando o cache para outros hosts


Por padrão o dnscache permite apenas o localhost utilizar o cache. Para permitir a outros, devemos especifica-los:

  touch /etc/dnscache/root/ip/x.y.z


Isso fará com que a rede x.y.z.0/24 (ou x.y.z.*) consiga utilizar o cache. Não é preciso reiniciar o serviço quando mais hosts ou redes são adicionadas.



Configurando o tinydns


O tinydns é o programa que responde autoritativamente. É nele que configuraremos nossos domínios.

  tinydns-conf tinydns dnslog /etc/tinydns x.y.z.a



Iniciando o tinydns

  ln -s /etc/tinydns /service



Registrando seus domínos


Quem está acostumado com aquela horrível combinação de /etc/named.conf e /var/named vai gostar dessa parte:



Adicionando um dns server


  cd /service/tinydns/root
  ./add-ns ns1.empresa.com.br x.y.z.a
  make



Adicionando servidores mx


  cd /service/tinydns/root
  ./add-mx smtp.empresa.com.br x.y.z.b
  ./add-mx smtp2.empresa.com.br x.y.z.c
  make



Adicionando servidores genéricos


  cd /service/tinydns/root
  ./add-host www.empresa.com.br x.y.z.h
  ./add-alias home.empresa.com.br x.y.z.h
  make


Agora o seu dns já está totalmente funcional. Você pode testá-lo da forma como achar mais adequado.



Configurando o axfrdns


  axfrdns-conf axfrdns dnslog /etc/axfrdns /etc/tinydns x.y.z.a


Você deve especificar cada IP e domínio que pode ser transferido.
Exemplo: Vamos permitir que o IP a.b.c.z transfira a zona da empresa.com.br

  echo 'a.b.c.z:allow,AXFR="empresa.com.br"' >> /etc/axfrdns/tcp



Referências



Life With DjbDNS
DjbDNS Roadmap



Dicas




Vários DNS servers em uma mesma máquina

Se você tem um domínio *.br, sabe que o comitê gestor exige no mínimo 2 servidores de DNS para registrar-se. Se você tem apenas um servidor de DNS e, pelo menos 2 ips válidos e fixos faça o seguinte:
Vamos considerar que seu segundo IP seja x.y.z.b

  cp -r /etc/tinydns /etc/tinydns2
  echo "x.y.z.b" > /etc/tinydns2/env/IP
  ln -s /etc/tinydns /service



facilitando a inserção de novos domínios.


Para evitar ter que fazer aquela ladainha de ./add-ns, ./add-mx, etc, toda vez que for adicionar um domínio (como se faz muito em provedor) faça o seguinte:


crie um arquivo /etc/exemplo-tiny com o seguinte conteúdo:


  .empresa.com.br:x.y.z.a:a:259200
  =www.empresa.com.br:x.y.z.a:86400
  +smtp.empresa.com.br:x.y.z.a:86400
  @empresa.com.br:x.y.z.a:a::86400
  +pop.empresa.com.br:x.y.z.a:86400
  +ns1.empresa.com.br:x.y.z.a:86400
  +ns2.empresa.com.br:200.182.250.58:86400
  +ftp.empresa.com.br:x.y.z.a:86400


Lembre-se se substituir x.y.z.a pelos IPs equivalentes ao seus servers pop, smtp, pelos IPs equivalentes.


Em tempo:

Símbolo Significado
. DNS Server
= Nome
+ Apelido
@ MX


Agora crie um arquivo /etc/tinydns/root/add-domain com o conteúdo:

  #!/bin/bash
  if [ -z $1 ]; then
     echo "Falta domínio"
     exit
  fi
  cat /etc/exemplo-tiny |sed s,empresa.com.br,$1,g >> data


Para adicionar um domínio com todos os features agora basta fazer:

  cd /service/tinydns/root
  ./add-domain empresa2.com.br
  make



GoogleAds