DNS-Bind

Instalação e configuração do serviço DNS
Introdução
Referir-se aos hosts pelo seu endereço IP é bastante conveniente para computadores, porém para as pessoas o ideal é referir-se pelo seu nome. Para isso precisamos de uma tabela que converta o IP em nome e nome em IP.
Porém com o crescimento, já com milhares de computadores e outros milhares entrando, na internet fica impossível para qualquer um manter uma tabela desse tipo sempre atualizada. É ai que entra o servidor DNS, ou servidor de Nomes. O Servidor de nomes é uma base de dados, pública, mantida pelos sites que proporcionam a tradução já citada.
O arquivo hosts.txt
A velhos tempos, quando haviam poucos computadores conectados a ARPAnet (antiga rede predecessora da internet), cada computador tinha um arquivo hosts.txt, que depois foi alterado para o /etc/hosts no UNIX. Esse arquivo continha informações sobre todos os hosts da rede. Com tão poucos computadores, o arquivo era pequeno e fácil de mantê-lo atualizado.
A manutenção do arquivo hosts.txt era mantido pela SRI-NIC. Quando os administradores queriam fazer uma alteração no arquivo, enviavam a solicitação por e-mail. Quando uma alteração era feita, os administradores baixavam o arquivo via FTP.
A medida que a internet crescia, a idéia da administração centralizar os nomes dos hosts e a atualização do arquivo hosts.txt tornaram-se um grande problema, então a SRI-NIC projetou, no início dos anos 80, um banco de dados distribuído para substituir o hosts.txt. Esse novo sistema ficou conhecido como Domain Name System (DNS).
O DNS
O DNS é um banco de dados distribuído criado sob uma estrutura de domínio hierárquica. Cada computador que se conecta a internet o faz a partir de um domínio Internet. Cada domínio internet tem um nome de servidor com um banco de dados dos hosts em seu domínio. Quando um domínio se torna muito grande, a tarefa pode ser delegada a subdomínios, a fim de reduzir a carga administrativa.
O arquivo /etc/hosts
Ainda que o DNS se constitua no principal meio de resolução de nomes, ainda é encontrado na maioria das máquinas o arquivo /etc/hosts. Esse arquivo pode acelerar na resolução de nomes solicitados com frequência, como o IP local. Além disso alguns nomes tem que ser resolvidos, no boot, antes que um DNS seja utilizado, como exemplo o caso de servidores NIS. Esse mapeamento é definido no arquivo /etc/hosts.
Exemplo de arquivo /etc/hosts:
#IP Endereço Alias
127.0.0.1 localhost
192.168.10.1 servidor www
A coluna a esquerda é o IP a ser resolvido. A coluna seguinte é o nome do host correspondente àquele IP. Qualquer coluna seguinte será alias para o host.
Instalando o servidor DNS
No Debian a instalação do servidor de nomes é muito fácil, basta, como root, digitar o seguinte comando em um terminal:
# apt-get install bind9 bind9utils net-utils
Com esse comando iremos instalar o bind, que é o padrão da distribuição Debian. Poderia ser instalado também o named, que pode ser a melhor opção para outras distribuições, porém, não entraremos nesse caso.
Obs.: O servidor DNS e o cliente DNS são diferentes.
Todo computador Linux habilitado para comunicar-se entre rede possui um software chamado de cliente DNS, também conhecido como resolver. O resolver simplesmente consulta um servidor DNS atribuído no arquivo /etc/resolv.conf. A consulta segue a ordem do arquivo.
Servidores DNS retornam os valores consultados após consultarem o arquivo /etc/bind/named.conf.default-zones e as referências para as quais ele aponta. Os clientes perguntam e os servidores respondem, muitas vezes após consultarem outros servidores.
A confusão muitas vezes surge quando temos o cliente e o servidor em uma mesma máquina, principalmente quando o cliente consulta o servidor da mesma máquina. Por isso, sempre devemos lembrar de que o cliente ou resolver utiliza o /etc/resolv.conf. Todos os outros como o /etc/bind/named.conf.default-zones e os arquivos apontados por ele pertencem ao servidor
Terminologia DNS
Cliente DNS – Componentes de software em todos os computadores da rede que transformam o endereço IP em nome e nome em endereço IP. Em máquinas Linux Debian, o cliente busca informações no arquivo /etc/resolv.conf.
Resolvedor – Para propósitos práticos, um sinônimo para Cliente DNS.
Servidor DNS – Componente de software que retorna a tradução de endereço IP em nome e de nome em endereço IP ao cliente DNS que solicitou. Em máquinas Linux Debian, o servidor DNS busca suas configurações no arquivo /etc/bind/named.conf.default-zones.
Resolver – Converte endereço IP em um nome e um nome em endereço IP. Isso é feito pelo DNS e às vezes por outro software.
Zona – Um subdomínio ou sub-rede sobre os quais um servidor DNS possui autoridade.
Master – Um servidor DNS com autoridade sobre uma zona cujos dados são derivados dos arquivos de dados local. Assim um servidor de nomes pode ser mestre para algumas zonas e escravo para outras.
Primário – Sinônimo para master.
Slave – Um servidor de nomes cuja autoridade sobre uma zona depende de dados derivados de outro servidor de nomes em uma zona de transferência. O outro servidor de nomes tanto pode ser um mestre como um outro escravo. Observe que um servidor de nomes pode ser mestre para algumas zonas e escravo para outras.
Secundário – Sinônimo para slave.
Zona de Transferência – Uma transferência feita entre um servidor DNS mestre ou escravo e um servidor DNS escravo. O escravo inicia a zona de transferência após um tempo de refresh ou após ser notificado de que os dados no servidor remetente foram alterados.
Configurando um servidor DNS
O servidor DNS é um sistema potencialmente complexo, configurado por uma série de arquivos surpreendentemente confiáveis. Esses arquivos são formados por um arquivo principal e vários arquivos de dados de zona, onde cada arquivo de zona é apontado por um registro de zona no arquivo principal.
Com os exemplos essa explicação ficará mais clara.
No Debian, com o bind instalado, o arquivo inicial DNS é o /etc/bind/named.conf.default-zones.
Comentários neste arquivo podem ser feitos de três formas:
/* estilo c */
// estilo c++
# estilo shell
Outras declarações seguem o formato:
Keyword {statement; statement; …; statement;};

Tudo neste arquivo é delimitado por chaves, espaço e ponto-e-vírgula. Logo, espaçamento múltiplos, tab, quebra de linha não afetam a configuração.
Inclua no arquivo o apontamento da zona que corresponde ao seu domínio, informando em qual arquivo ele deve procurar a configuração de zona quando o seu domínio for digitado.

zone “dominio.local” { # domínio da rede que deseja incluir no DNS
type master;
file “/etc/bind/db.local.zone”; # arquivo que conterá as informações para tradução do nome
};

Agora inclua o apontamento para o IP reverso. Neste caso, qualquer endereço ip na sub-rede especificada será tratada pelo arquivo apontado por ele.

zone “1.168.192.in-addr.arpa” { # endereço da sub-rede
type master;
file “/etc/bind/db.local.rev”; # arquivo de configuração que tratará o IP
};

Os arquivos de zona, no nosso caso estarão na diretório /etc/bind/. Os arquivos de zona são apontados pela declaração zone do arquivo de configuração.
A primeira coisa a entender sobre os arquivos de zona é que sua sintaxe é totalmente diferente do arquivo named.conf.default-zones.

Há 10 registros possíveis:
SOA – inicialização de autoridade
NS – nome do servidor
A – registro de endereço
PTR – registro de ponteiro
MX – intercâmbio de carreio
CNAME – nome canônico
RP e TXT – as entradas de documento
HINFO – informações sobre os host
NULL – registro de recurso nulo sem formato de dados
SOA – System Of Authority -Indica para qual domínio o SOA é obrigatório
( – Neste ponto temos a abertura das configurações
07120901 ; serial – Serial que mostra aso DNS secundários como realizar transferência de zona
28800 ; refresh – indica o tempo em segundos de intervalo para o servidor DNS secundário consultar o primário para saber se houve alteração
14400 ; retry – tempo em segundo para conexão com o servidor primário caso a tentativa no tempo de refresh falhe
3600000 ; expiry – tempo de descarte das informações no cache
84400 ; minimum # indica quanto tempo os dados devem ser guardados no cache antes que expire a validade
) – Neste ponto temos o fechamento das configurações

Supondo que o endereço de sua sub-rede seja 192.168.10.0/24 e que o servidor é 192.168.10.1, o computador 1 é 192.168.10.2 e o computador 2 192.168.10.3.

Crie o primeiro arquivo o /etc/bind/db.local.zone e adicione o seguinte código:
$TTL 604800
@ IN SOA dominio.local. root.dominio.local. (
25012201 ; serial
28800 ; refresh
14400 ; retry
3600000 ; expiry
84400 ) ; minimum
@ IN A 192.168.10.1
@ IN NS ns1.dominio.local.
@ IN MX 10 mail.dominio.local.
www IN CNAME dominio.local.
ns1 IN A 192.168.10.1

No caso do IP reverso, crie o arquivo /etc/bind/db.dominio.rev com as seguintes linhas:
$TTL 604800
@ IN SOA dominio.local. root.dominio.local. (
25012201 ; serial
28800 ; refresh
14400 ; retry
3600000 ; expiry
84400 ) ; minimum
@ IN NS ns1.dominio.local.
1 IN PTR dominio.local.