Instalando e configurando DNS com Djbdns - Tinydns e Dnscache
Bem diferente do BIND que é ao mesmo tempo servidor de cache e autoritativo, o sistema de DNS Djbdns possui 2 daemons separados para tal serviço. O DNSCACHE para caching, onde ele faz as buscas nos root servers para efetuar a resolucao de nomes em uma rede.
O TINYDNS, é servidor de nomes autoritativo, somente responderá requisições que estejam em seu banco de dados.
Lembro aqui que os dois não podem rodar no mesmo IP.
Para instalá-los é bem simples, aqui uso o ports do FreeBSD para dar exemplo de como isso pode ser feito:
Instalando:
root~#cd /usr/ports/dns/djbdns/ && make all install clean
Via ports ele ja adiciona os principais patchs para o funcionamento, ainda instala o daemontools e uicspi-tcp, que são necessários. No entanto você poderá instalar manualmente os pacotes:
http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
Agora adicionamos alguns usuários para que o programa rode com segurança:
root~# pw useradd tinydns -g djbdns -d /dev/null -s /sbin/nologin
root~# pw useradd dnscache -g djbdns -d /dev/null -s /sbin/nologin
root~# pw useradd dnslog -g djbdns -d /dev/null -s /sbin/nologin
Configurando:
root~# mkdir /var/djbdns && cd /var/djbdns/
root~# dnscache-conf dnscache dnslog /var/djbdns/dnscache IP_DA_MAQUINA_QUE_VAI_RODAR
Ex.:
root~#dnscache-conf dnscache dnslog /var/djbdns/dnscache 192.168.10.1
Agora ja com o daemontools rodando, crie um link simbólico para o /service:
root~# ln -s /var/djbdns/dnscache /service/
Em 5 segundos você ja tem o dnscache rodando, porem ele ainda estará somente aceitando conexões no loopback 127.0.0.1, voce precisará dar permissão para outros IPs usarem o serviço:
root~# touch /var/djbdns/dnscache/root/ip/192.168.10
Liberamos assim para toda a rede 192.168.10, se preferir libere somente no seu IP específico.
Test it!
root~# cat /dev/null >/etc/resolv.conf && echo nameserver 127.0.0.1 >/etc/resolv.conf
root~# host yahoo.com
Se ele resolver, é porque tudo esta funcionando perfeitamente. Use o svstat para checar os servicos rodando abaixo do daemontools:
root~#svstat /service/dnscache/
/service/dnscache/: up (pid 443) 686084 seconds
Vamos agora para o tinydns:
O Tinydns ja é diferente do dnscache, ele é servidor de DNS, com ele voce pode responder autoritativamente para os dominios.
Para instalacão do tinydns, após ter instalado o pacote djbdns, é preciso somente configurá-lo:
root~#cd /var/djbdns && tinydns-conf tinydns dnslog /var/djbdns/tinydns IP.DA.MAQUINA
Ex.:
root~#cd /var/djbdns && tinydns-conf tinydns dnslog /var/djbdns/tinydns 192.168.10.2
Nao esqueca de subir o programa via daemontools:
root~#ln -s /var/djbdns/tinydns /service/
Voce agora pode adicionar os dominios no tinydns utilizando os programas que o próprio djbdns disponibiliza:
root~# cd /var/djbdns/tinydns/root/
root~# ./add-ns nome_do_dominio ip_do_dominio
root~# ./add-host host_do_dominio ip_do_dominio
root~# ./add-mx nome_do_dominio ip_do_servidor_de_email
root~# make
Eu particularmente utizo um script pessoal que gera as entradas automaticamente para eu copiar
para o data:
root~#more adiciona_dominio_dns.sh
#!/usr/local/bin/bash
echo ”
.$1::ns1.nomedodns.com
.$1::ns2.nomedodns.com
=$1:65.65.200.200
=mail.$1:65.65.200.200
+$1:65.65.200.200
@$1:65.65.200.200:mail.$1″
Execute: ./adiciona_dominio_dns.sh nomedoseudominio.com, desta forma ele criará entradas como:
.nomedoseudominio.com::ns1.nomedodns.com
.nomedoseudominio.com::ns2.nomedodns.com
=nomedoseudominio.com:65.65.200.200
=mail.nomedoseudominio.com:65.65.200.200
+nomedoseudominio.com:65.65.200.200
@nomedoseudominio.com:65.65.200.200:mail.nomedoseudominio.com
prontas para serem adicionadas no arquivo /var/djbdns/tinydns/root/data
apos isso rode:
root~#cd /var/djbdns/tinydns/root/ ; make
Pronto! Assim voce ja tem o tinydns respondendo pelo seu dominio.
Uma questão que sempre encontro nos foruns e Internet a fora é a criação de DNS primário e DNS secundário, exigido na Fapesp para registro de dominios aqui no Brasil.
O tinydns é muito legal nesse aspecto porque voce simplesmente adicionando mais um IP no seu servidor e rodando o instalacao a partir do ponto:
root~#cd /var/djbdns && tinydns-conf tinydns dnslog /var/djbdns/tinydns 192.168.10.2
mudando o IP e pasta voce terá quantos servidores DNS precisar:
root~#cd /var/djbdns && tinydns-conf tinydns dnslog /var/djbdns/tinydns2 192.168.10.3
root~#cd /var/djbdns && tinydns-conf tinydns dnslog /var/djbdns/tinydns3 192.168.10.4
Percebem que somente alterei a pasta onde ficarão os arquivos e o IP que escutará as requisições, ja o data.cdb criado no DNS 1, vamos chama-lo assim, poderá ser copiado para as pastas dos outros servers sem que precisem ser compilados novamente:
Ex.:
root~#pwd
/var/djbdns/tinydns/root
root~#rsync -arvl data* ../../tinydns2/root/
building file list … done
data
data.cdb
sent 200920 bytes received 64 bytes 401968.00 bytes/sec
total size is 200746 speedup is 1.00
Nesta maquina tenho rodando dois servidores de DNS:
root~#ls -l /var/djbdns/
total 6
drwxr-sr-t 6 root wheel 512 Jun 22 14:20 dnscache
drwxr-sr-t 6 root wheel 512 May 14 13:30 tinydns
drwxr-sr-t 6 root wheel 512 Sep 3 10:23 tinydns2
Esta facilidade de inserir dominios e replicar o servidor rapidamente me atraiu e acredito que será bem util a todos!
0 comments
Kick things off by filling out the form below.
Leave a Comment