Instalando um servidor DNS no Debian;
Lembrando que o DNS funciona hierarquicamente consultando sempre os servidores
raízes “.”, até chegar ao destino.
No modo autoritativo, precisamos dos arquivos de zonas.
Zonas são arquivos mapas com indicações de nomes para ip’s e ip’s para nomes (zona reversa)
O principal arquivo de configuração do DNS é o named.conf, esse arquivo permite indicar se um servidor será somente cache, autoritativo, master ou slave, dentre outras coisas, no caso de DNS autoritativo precisamos criar as zonas (zona de domínio e zona
reversa).
Como falaremos de uma configuração nos padrões Debian mostraremos os locais de seus arquivos de configuração.
No padrão Red Hat o arquivo named.conf encontra-se em /etc/named.conf e seus arquivos de zonas de domínio são configurados por padrão em /var/cache/named
No padrão Debian o named.conf localiza-se em /etc/bind/named.conf e as zonas serão configuradas por padrão em /var/cache/bind/
Vamos lá então:
[guilherme@Gui-desk]# apt-get install bind9
Após a instalação
[guilherme@Gui-desk]# pico /etc/bind/named.conf
// query−source port 53;
};
zone ”.” {
type hint;
file ”/etc/bind/db.root”;
};
Olhe para a zona ponto “.” e perceba o campo file com o nome do arquivo da zona.
Editando esse arquivo podemos localizar os servidores raíz “.”, espalhados geograficamente, lembrando que o DNS localiza os domínios solicitados de forma hierárquica ou seja quando solicitamos www.guilhermecunha.com.br pedimos ao DNS configurado em nosso computador para nos dizer qual o endereço ou melhor número ip de guilhermecunha.com.br, então o DNS pergunta sempre aos DNS’s raizes espalhados pelo mundo, até chegar em guilhermecunha.com.
Você pode perceber essa consulta colocando o ponto ao final da URL, por exemplo:
www.guilhermecunha.com.br.
Perceba o ponto ao final de com.br, “digite dessa forma”, você perceberá que acessará a página normalmente.
Agora imagine esse endereço ao contrário sem o www desta forma
.com.br.guilhermecunha
Desta maneira você consegue visualizar o porque do “ponto” no final de com, o ponto significa que sempre será consultado o servidor raiz, ou seja, o ponto “.”
OBS: Lembrando que zonas são arquivos mapas que traduzem nomes para endereços ip e endereços ip pra nomes.
[guilherme@Gui-desk]# pico /etc/bind/db.root
;
; There might be opening comments here if you already have this file.
; If not don't worry.
;
. 6D IN NS G.ROOT−SERVERS.NET.
. 6D IN NS J.ROOT−SERVERS.NET.
. 6D IN NS K.ROOT−SERVERS.NET.
. 6D IN NS L.ROOT−SERVERS.NET.
. 6D IN NS M.ROOT−SERVERS.NET.
. 6D IN NS A.ROOT−SERVERS.NET.
. 6D IN NS H.ROOT−SERVERS.NET.
. 6D IN NS B.ROOT−SERVERS.NET.
. 6D IN NS C.ROOT−SERVERS.NET.
. 6D IN NS D.ROOT−SERVERS.NET.
. 6D IN NS E.ROOT−SERVERS.NET.
. 6D IN NS I.ROOT−SERVERS.NET.
. 6D IN NS F.ROOT−SERVERS.NET.
G.ROOT−SERVERS.NET. 5w6d16h IN A 192.112.36.4
J.ROOT−SERVERS.NET. 5w6d16h IN A 198.41.0.10
K.ROOT−SERVERS.NET. 5w6d16h IN A 193.0.14.129
L.ROOT−SERVERS.NET. 5w6d16h IN A 198.32.64.12
M.ROOT−SERVERS.NET. 5w6d16h IN A 202.12.27.33
A.ROOT−SERVERS.NET. 5w6d16h IN A 198.41.0.4
H.ROOT−SERVERS.NET. 5w6d16h IN A 128.63.2.53
B.ROOT−SERVERS.NET. 5w6d16h IN A 128.9.0.107
C.ROOT−SERVERS.NET. 5w6d16h IN A 192.33.4.12
D.ROOT−SERVERS.NET. 5w6d16h IN A 128.8.10.90
E.ROOT−SERVERS.NET. 5w6d16h IN A 192.203.230.10
I.ROOT−SERVERS.NET. 5w6d16h IN A 192.36.148.17
F.ROOT−SERVERS.NET. 5w6d16h IN A 192.5.5.241
Configurando um servidor autoritatvo, para isso precisamos inserir duas zonas no named.conf uma zona para o domínio e outra zona reversa.
[guilherme@Gui-desk]# pico /etc/named.conf
zone “guilhermecunha.com.br” {
type master;
file “db.guilhermecunha”;
};
zone “1.168.192.in−addr.arpa” {
type master;
file “db.192.168.1”;
};
Neste caso estou configurando o dominio que será redirecionado para uma rede 192.168.1. altere para a sua rede de preferência.
Agora temos que criar os arquivos de zona em /var/cache/bind com os mesmo nomes utilizados em named.conf .
OBS: Você poderá atribuir qualquer nome para arquivos de zonas, desde que coloque o mesmo nome no seu lugar de destino no caso /var/cache/bind/.
Utilizamos como padrão o endereço de rede ao contrario na zona reversa “1.168.192.in-addr.arpa” lembrando que o esse numero ip faz parte da classe de rede C reservando assim os 3 primeiros octetos para rede ou seja 24 bits .
[guilherme@Gui-desk]# cd /var/cache/bind
[guilherme@Gui-desk]# touch db.guilhermecunha db.192.168.1
Abaixo temos um exemplo de db.guilhermecunha
[guilherme@Gui-desk]# pico db.guilhermecunha
;zona guilhermecunha
$TTL 43200
@ IN SOA ns.guilhermecunha.com.br. hostmaster.guilhermecunha.com.br. (
1; numero serial
3600 ; refresh, segundos
900 ; retry, segundos
1209600 ; expire, segundos
43200) ; minimum, segundos
@ IN NS ns
@ IN NS ns2
@ IN MX 10 mail
@ IN A 192.168.1.1
ns IN A 192.168.1.10
mail IN A 192.168.1.10
; Servidor
www IN A 192.168.1.10
ftp IN A 192.168.1.10
; Computadores internos
Dell IN A 192.168.1.5
;Apelidos
webmail IN CNAME ns
Iremos configurar agora a zona reversa
[guilherme@Gui-desk]# pico 1.168.192.in-addr.arpa
;Zona Reversa 1.168.192.in-addr.arpa
$TTL 43200
@ IN SOA ns.guilhermecunha.com.br. hostmaster.guilhermecunha.com.br. (
1 ; Serial, todays date + todays serial
3600 ; Refresh
900 ; Retry
1209600 ; Expire
43200) ; Minimum TTL
@ NS ns.guilhermecunha.com.br.
1 IN PTR ns.guilhermecunha.com.br.
2 IN PTR mail.guilhermecunha.com.br.
3 IN PTR www.guilhermecunha.com.br.
4 IN PTR ftp.guilhermecunha.com.br.
Antes de testarmos o nosso DNS vou explicar algumas diretivas de classes.
@ - Define a localização deste domínio.
IN - Servidores Internet (só usaremos este).
SOA - Define o inicio de uma zona para a qual o seu servidor sera autoridade O quarto campo lista o hostname do seu servidor DNS, o quinto campo lista o email do responsável pelo domínio lembrando que temos que verificar a entrada no caso de hostmaster no arquivo /etc/aliases.
O registro SOA lista 5 parâmetros entre parênteses. Todos com informações necessárias para os servidores slaves são eles:
Serial number - Avisa os servidores slaves sobre as atualizações do arquivo de zona, os servidores slaves perguntam periodicamente sobre atualizações nos servidores masters, se o Serial number dos servidores escravos forem menores do que o Serial number dos servidores master, os servidores escravos farão uma cópia do arquivo de zona dos servidores masters com isso irão se manter sempre atualizados.
Por esse motivo sempre que fizer uma mudança no servidor master incremente esse número.
Refresh time - Especifica o intervalo de tempo em segundos que os servidores slaves iram consultar o servidor master para efetuar a comparação do numero serial
Retry - Especifica o tempo em segundos que um servidor slave deverá reatar uma nova comunicação caso aconteça uma falha na comunicação do servidor master.
Expiration time - Especifica o tempo em segundos de vida útil do banco de dados em um servidor slave. Caso ultrapasse esse tempo o servidor slave é considerado desatualizado podendo até mesmo parar de resolver nomes em certos casos.
Minimum - Especifica o tempo de resposta de um servidor em caso de pedido de resolução de um nome contido em seu banco de dados.
NS - Lista um servidor de nomes para este domínio.
A - Mapeamento de nomes para endereços.
PTR - Mapeamento reverso, ou de endereços para nomes.
CNAME - Nomes canônicos (para aliases).
MX - Nome do servidor de e-mail para o domínio o numero que segue o registro MX determina a prioridade quanto menor o numero maior será a prioridade do servidor a faixa de prioridade é de 0 a 65535 .
Vamos agora testar nosso servidor DNS, primeiro temos que acrescentar sua entrada no arquivo resol.conf, encontra em /etc
[guilherme@Gui-desk]# pico /etc/resolv.conf
search guilhermecunha.com.br
nameserver 192.168.1.1
nameserver 192.168.1.10
Percebemos que search irá fazer a localização pelo nome do domínio e nameserver pelo número IP
Agora vamos editar o arquivo nsswitch.conf em /etc
[guilherme@Gui-desk]# vi /etc/nsswitch.conf
hosts files dns
Representa a ordem de consultas dessa maneira hosts consultara primeiro /etc/hosts e depois o dns.
Vamos reiniciar o serviço para ter validar nossas configurações lembrando que quando instalamos o bind o apt-get já inicializou o serviço.
[guilherme@Gui-desk]# /etc/init.d/bind restart
Para checar possíveis erros você pode analisar o arquivo daemons.log em /var/log/
[guilherme@Gui-desk]# tail –f /var/log/daemons.log
Você pode verificar os erros identificados na inicialização do serviço(bind).
Mais se achar difícil visualizar os erros em daemon.log poderá usar uma ferramenta contida no pacote bind9 named-checkconfig para checar named.conf, e named-checkzone para checar arquivos de zonas.
[guilherme@Gui-desk]# named-checkconf /etc/bind/named.conf
/etc/bind/named.conf:68:missing ’;’ before ‘zone’
A saída do comando nos mostra que foi encontrado um erro na linha 68 do arquivo named.conf, e possivelmente deve ser porque está faltando um ;
Se passar para outra linha sem apresentar nenhum erro o arquivo esta ok.
[guilherme@Gui-desk]# named-checkzone guilhermecunha.com.br /var/cache/bind/db.guilhermecunha.com.br
zone guilhermecunha.com.br/IN :loaded serial 2007102001
OK
A saída nos mostra que esta tudo ok no arquivo de zona guilhermecunha.com.br
Se for apresentado algum erro corrija-o preste atenção nas letras nomes se está faltando parênteses etc, repita o comando.
Outro utilitário bastante conhecido é o dig que pode se adquirido no pacote bind-util.
Com ele podemos consultar o servidor DNS a respeito de seus domínios e registros,
por exemplo:
[guilherme@Gui-desk]# dig MX @192.168.1.10
Consultaremos o registro mx que diz respeito ao servidor de e-mail.
[guilherme@Gui-desk]# dig NS guilhermecunha.com.br
Consultaremos agora o registro ns e desta vez por nome e não por IP
Lembrando que toda a vez que for alterado alguma coisa no arquivo de zonas, deve ser alterado o serial também.
Para acertar é o seguinte:
YYYYMMDDNN
Onde NN é o numero de modificações do dia…
Acho que era isto…
Grande Abraço…
Guilherme Cunha
Créditos a Gilberto Júnior.