quarta-feira, 25 de março de 2009

Configurando Servidor de Nomes - DNS (Debian)



Contador de acessoVisitas


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 freqüê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.1.1 servidor www
72.51.46.57 www.vivaolinux.com.br vivaolinux


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 bind

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 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 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.

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.

Mestre - 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 mestre.

Escravo - 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 escravo.

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 de boot e vários arquivos de dados de zona, onde cada arquivo de zona é apontado por um registro de zona no arquivo de boot.

Com os exemplos essa explicação ficará mais clara.

No Debian, com o bind instalado, o arquivo de boot DNS é o /etc/bind/named.conf.

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.casa" { # domínio da rede que deseja incluir no DNS
type master;
file "/etc/bind/dominio.casa.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/named.198.168.1"; # 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 boot.

A primeira coisa a entender sobre os arquivos de zona é que sua sintaxe é totalmente diferente do arquivo de boot named.conf.

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

Supondo que o endereço de sua sub-rede seja 192.168.1 e que o servidor é 192.168.1.1, o computador 1 é 192.168.1.2 e o computador 3 192.168.1.3.

Crie o primeiro arquivo o /etc/bind/dominio.casa.zone e adicione o seguinte código:


$TTL 604800
@ IN SOA dominio.casa. root.dominio.casa. ( # indica para qual domínio o SOA é obrigatório
200007201 ; serial (d. adams) # 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
;

www IN A 192.168.1.1
www2 IN A 192.168.1.1
www3 IN A 192.168.1.1
serv IN A 192.168.1.1
comp1 IN A 192.168.1.2
comp2 IN A 192.168.1.3

@ IN MX 10 dominio.casa.c
@ IN NS dominio.casa.
@ IN A 192.168.1.1


Neste caso o endereço www.dominio.casa, www2.dominio.casa, www3.dominio.casa e serv.dominio.casa se referem ao mesmo IP ao 192.168.1.1.

O host comp1.dominio.casa se refere ao IP 192.168.1.2 e comp2.dominio.casa te levará ao micro com IP 192.168.1.3.

No caso do IP reverso, crie o arquivo /etc/bind/named.198.168.1 com as seguintes linhas:


$TTL 604800
@ IN SOA dominio.casa. root.dominio.casa. (
2000072001 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum

@ IN NS dominio.casa.
10 IN PTR dominio.casa.


Os dados no arquivo de IP reverso tem o mesmo significado do arquivo anterior.

Nenhum comentário:

Postar um comentário

Advogados
Visitas