Dns-freebsd
De Under-Linux.Org Wiki
Servidor de DNS em FreeBSD
Olá amigos, desculpa pela demora é q o tempo esta cada dia mais curto.
Outra necessidade de nos provedores é um sistema de DNS robusto, tanto para resolver, hospedar e fornecer o reverso para nossos blocos de IP's.
Resolvi faze-lo em FreeBSD por se tratar de um sistema pratico e extremamente estável.
No exemplo usei a versão FreeBSD 6.0 RELEASE.
Instalando
A Instalação do FreeBSD não tem mistério, nesse caso basta um sistema básico, não irei trata-la aqui pois já existe bastante material a respeito na web e pra não ficar muito extenso.
Após instalado o sistema vamos atualizar o Ports:
# portsnap fetch # portsnap extract
Ai das próximas vezes basta um:
# portsnap fetch update
Bom, com o Ports atualizado vamos instalar o bind:
# cd /usr/ports/dns/bind9 # make install clean
Após instalado vamos adicionar a linha ao /etc/rc.conf
# ee /etc/rc.conf named_enable="YES"
Bom agora o bind (named) já está ligando no boot, agora é só configura-lo.
Configurando
Primeiramente precisamos fazer a resolução para localhost, para isso já existe um script junto aos arquivos de configuração.
# cd /etc/namedb/ # sh makelocalhost.sh
Você vai notar que ele criou automaticamente os arquivos no /etc/namedb/master:
localhost-v6.rev localhost.rev
Caso esteja assim, perfeito nem precisa mexer.
Agora vamos conhecer o arquivo de configuração /etc/namedb/named.conf
Não vou descreve-lo aqui, somente os aspectos interessantes que devem ficar dentro do options { }:
allow-recursion { 200.XXX.XXX.XXX/26; 200.XXX.XXX.XXX/26; 200.255.125.214; };
No caso acima digo que meu servidor só aceita consultas das subnet's ou de ip's listados, no caso esse ultimo IP é o servidor de DNS da EMBRATEL que ofereceu-se no caso para servir de DNS secundário para os reversos.
listen-on { 127.0.0.1; 200.XXX.XXX.XXX; };
Simples, diz que meu servidor vai escutar a rede em localhost e no próprio IP dele.
O restante não apaguei nada, deixei o arquivo como veio originalmente.
Zona Reversa
Bom agora temos que criar a zona reversa, ela é muito importante para resolver nossos IP's pois sem isso muitos servidores de email podem recusar emails ou identificar como SPAM caso provenha de uma rede sem reverso devidamente configurado.
Devemos criar a zona no final do arquivo /etc/namedb/named.conf
Nesse caso como geralmente os blocos são cedidos segmentados (64 ip's por bloco) temos que fazer a zona da seguinte forma:
Exemplo para o bloco: AAA.BBB.CCC.0/26
zone "0-63.CCC.BBB.AAA.in-addr.arpa" {
type master;
file "master/0-63.meudominio.rev";
allow-transfer { 200.255.125.214; 200.XXX.XXX.XXX; };
};
No caso acima eu crio a zona, indico se ele é master ou slave, indico o arquivo que contem os dados da zona, e no allow-transfer ficam listados os servidores que podem copiar a zona, no caso para atuarem como slave.
Aproveitando o arquivo /etc/namedb/named.conf aberto vamos criar a zona para um domínio:
zone "meudominio.com.br" {
type master;
file "master/meudominio.zone";
allow-transfer { 200.XXX.XXX.XXX; };
};
Bem simples e bem análogo ao do reverso, dispensa comentários.
Zonas
Bom, agora temos que criar os aquivos que contem os dados das zonas:
- Reverso:
# ee /etc/namedb/master/0-63.meudominio.rev
; ############# INICIO DO ARQUIVO #################
$origin 0-63.CCC.BBB.AAA.in-addr.arpa.
$ttl 38400
@ IN SOA ns1.meudominio.com.br. admin.meudominio.com.br (
2006092500
10800
3600
604800
38400 )
;
; Indicação dos servidores de dns que responderão pela zona
;
@ IN NS ns1.meudominio.com.br.
@ IN NS ns2.meudominio.com.br.
@ IN NS ns.embratel.net.br.
;
; Denominacão das maquinas que respondem pelos ip's
;
1 IN PTR cisco.meudominio.com.br.
2 IN PTR ns1.meudominio.com.br.
3 IN PTR ns2.meudominio.com.br.
5 IN PTR mail.meudominio.com.br.
6 IN PTR www.meudominio.com.br.
9 IN PTR ftp.meudominio.com.br.
; ############## FIM DO ARQUIVO ##################
No arquivo pudemos perceber que o reverso do ip:
AAA.BBB.CCC.1 vai resolver o cisco.meudominio.com.rr
AAA.BBB.CCC.2 vai resolver o ns1.meudominio.com.br
AAA.BBB.CCC.3 vai resolver o ns2.meudominio.com.br
E assim sucessivamente....
- Domínio:
# ee /etc/namedb/master/meudominio.zone
; ############# INICIO DO ARQUIVO #################
$ttl 38400
meudominio.com.br. IN SOA ns1.meudominio.com.br. admin.meudominio.com.br. (
2006112100
10800
3600
604800
38400 )
;
; Servidores de DNS
;
meudominio.com.br. 38400 IN NS ns1.meudominio.com.br.
meudominio.com.br. 38400 IN NS ns2.meudominio.com.br.
meudominio.com.br. 38400 IN MX 0 mail.meudominio.com.br
;
; Maquinas Declaradas
;
ns1.meudominio.com.br. 38400 IN A AAA.BBB.CCC.2
ns2.meudominio.com.br. 38400 IN A AAA.BBB.CCC.3
cisco.meudominio.com.br. 38400 IN A AAA.BBB.CCC.1
mail.meudominio.com.br. 38400 IN A AAA.BBB.CCC.5
www.meudominio.com.br. 38400 IN A AAA.BBB.CCC.6
smtp.meudominio.com.br. 38400 IN CNAME mail.meudominio.com.br.
pop.meudominio.com.br. 38400 IN CNAME mail.meudominio.com.br.
ftp.meudominio.com.br. 38400 IN A AAA.BBB.CCC.9
; ############## FIM DO ARQUIVO ##################
Simples também certo ? Somente uma observação quanto ao CNAME, essas linhas estão dizendo que: smtp.meudominio.com.br e pop.meudominio.com.br são "apelidos" para mail.meudominio.com.br
Bom, é basicamente isso, agora seguem algumas dicas pra testar e brincar com DNS e depois uma instrução de como fazer um DNS slave, já que pra registro de domínios são necessários dois servidores.
Operando
Bom, se você tem um link da Embratel e eles te propuseram a fazer o secundário do seu DNS reverso, aproveite, não custa nada, basta você ligar lá e pedir o cadastramento do reverso, eles farão o teste e se conseguirem importar a sua zona reversa, pronto, não precisa fazer mais nada, sempre que você mudar ele copia.
Uma coisa muito importante é o registro de serial do arquivo de configuração das zonas é o primeiro conjunto de números do SOA do arquivo, ex:
2006112700
Que significa: ANO MÊS DIA REVISÃO
Ou seja, sempre que você alterar alguma coisa no arquivo mude esse numero para o valor do dia, e digito revisão se usa por exemplo se fizer mais de uma alteração no dia, ex: 00 ou 01 ou 02....99 (acho que não vai precisar fazer mais de 99 alterações num dia né, hehe)
Outra dica importante é sempre que fizer a mudança (não esquecer do serial) e matar o processo do named e inicia-lo novamente:
# killall named # named
Pronto ele aplica a mudança, mas não se desespere pois as alterações de DNS geralmente demoram pra propagar pra internet toda, em geral algumas horas.
Basicamente a manipulação do servidor de DNS é isso, vamos agora fazer uns testes:
Testando
outramaquina# nslookup > server ns1.meudominio.com.br Default server: ns1.meudominio.com.br Address: AAA.BBB.CCC.2#53 > cisco.meudominio.com.br Server: ns1.meudominio.com.br Address: AAA.BBB.CCC.2#53 Name: cisco.meudominio.com.br Address: AAA.BBB.CCC.1 >exit outramaquina#
No exemplo acima de outra maquina consultamos nosso servidor de DNS e perguntamos a ele quem é cisco.meudominio.com.br, e ele respondeu o ip dele.
Outro teste bacana é do reverso:
Use uma maquina com windows e de um ping –a num IP, ele vai responder quem é o reverso desse ip:
C:\WINDOWS>ping -a 201.72.172.2
Disparando contra ns1.meudominio.com.br [AAA.BBB.CCC.2] com 32 bytes de dados:
Resposta de AAA.BBB.CCC.2:bytes=32 tempo=38ms Tempo de vida=51 Resposta de AAA.BBB.CCC.2:bytes=32 tempo=31ms Tempo de vida=51 Resposta de AAA.BBB.CCC.2:bytes=32 tempo=16ms Tempo de vida=51.........
Também é legal fazer um traceroute (tracert no WINDOW$) de outra rede para sua rede:
C:\WINDOWS>tracert AAA.BBB.CCC.2 Rastreando a rota para ns1.meudominio.com.br [AAA.BBB.CCC.2] com no máximo 30 saltos: 1 <10 ms 1 ms <10 ms ..... ..... ..... 12 17 ms 17 ms 19 ms ebt-F8-0-0-acc04.rpo.embratel.net.br [200.230.158.54] 13 37 ms 40 ms 44 ms empresa-S2-0-0-105-acc04.rpo.embratel.net.br [200.00.00.54] 14 39 ms 37 ms 143 ms ns1.meudominio.com.br [AAA.BBB.CCC.2] Rastreamento completo.
No mais é isso, vamos agora dar uma olhada como fazer um DNS Slave, são poucas as mudanças:
Fazendo um DNS Slave
É muito simples só muda um pouco a forma como se descreve as zonas no /etc/namedb/named.conf
Exemplo:
- No master fica assim:
zone "meudominio.com.br" {
type master;
file "master/meudominio.zone";
allow-transfer { 200.XXX.XXX.XXX; };
};
Onde esse ip obviamente é do servidor slave da zona em questão
- Já no slave:
zone "meudominio.com.br" {
type slave;
file "slave/meudominio.zone";
masters { 200.XXX.XXX.XXX; };
};
Onde esse ip obviamente é do servidor master da zona em questão
Já os arquivos da zona slave não é necessário fazê-los já que por ser slave ele mesmo já copia os arquivos do master.
Basta fazer na maquina slave:
#killall named #named
e observar que os arquivos estão no /etc/namedb/slave
Créditos
É só isso mesmo!
Abraço pessoal espero ter ajudado
Qualquer coisa já sabem, mail-me!
Eduardo Doria
DoriaTel Telecomunicações LTDA




