1. Introdução
O servidor DNS é utilizado para resolver nomes de computadores, ou seja, toda vez que chega uma requisição com um nome (ex: www.nisled.org), ele o transforma em um endereço IP. O servidor DNS é a base da Internet. Para uma compreensão mais ampla, imagine a Internet sem o servidor DNS: tudo funcionaria sem problemas; no entanto, imagine que, ao invés de acessar os sites pelos nomes (www.uol.com.br, www.estadao.com.br, www.nisled.org, etc.), você teria que decorar o endereço IP dos servidores para poder acessá-los!
Se decorar número de telefone já é difícil, imagine decorar IPs.
Normalmente, o DNS mantém suas informações numa lista gravada num arquivo de texto simples. No entanto, ao estudar a sua estrutura, descobrimos que ele trabalha em forma de árvore. Portanto, é possível diminuir as despesas gerais de administração (gerenciamento dos domínios) guardando os dados do DNS em forma de árvore; a estrutura geral do OpenLDAP já contribui para isso.
Outro fator que contribui para o uso do OpenLDAP é o fato dos servidores DNS necessitarem de uma replicação de dados para o DNS secundário. Como esse serviço já vem implementado no OpenLDAP, torna-se muito mais fácil a sua implementação. Os requisitos de segurança para a replicação são satisfeitos pelo OpenLDAP, o que nem sempre acontece com os servidores DNS.
Vamos começar esse artigo, descrevendo como criar a estrutura do DNS dentro do LDAP com ajuda do GOsa. Neste artigo vamos utilizar como exemplo o domínio "curso.ldap" e o ip do servidor 192.168.0.1.
2. GOsa
O ambiente GOsa é uma poderosa ferramenta de gerenciamento de recursos de rede no LDAP, e como não poderia ser diferente, ele tem suporte para gerenciar as entradas para o servidor dns BIND.
Para começar a criar as entredas para o BIND, entre no ambiente GOsa e logo em seguida click no ícone "Systems" como mostra a figura 1.
Figura 1 – Ambiente central do GOsa
Ao entrar no "Systems" será mostrada todos os componentes cadastrados, caso existem. Na parte superior da tela temos as lista de sistemas que podem ser cadastrados. Escolha criar um novo servidor como mostra a figura 2.
Figura 2 – Lista de Sistemas
Ao entrar na tela para criar um novo servidor, automaticamente abrirá a aba "Generic". Nela devem ser preenchidos os campos "Server name" e o endereço de IP e MAC. Esses dados não são utilizados pelo DNS, apenas para cadastrar o servidor. A figura 3 mostra o cadastro desta tela.
Figura 3 – Cadastro do servidor
Após o cadastro dos dados na primeira aba, click na aba "DNS" para criar uma nova zona de DNS. Para isso click no botão "Add", como mostra a figura 4.
Figura 4 – Criação de uma zona de DNS
Para adicionar uma nova zona, preencha os dados de acordo com o domínio desejado. O campo "zone name" define o domínio que será criado. Também defina o endereço de rede e a mascara da rede. Os campo da área "SOA record" definem o cabeçalho do servidor dns, por isso preencha os campos "Primary dns Server for this zone" com o nome do servidor dns, como mostra a figura 5. Lembre-se de resolver esse nome no arquivo /etc/hosts do servidor dns. Também preencha os campos de email. Na área "MxRecords" registre os servidores de email deste domínio. Para editar os computadores deste domínio é necessário primeiramente salvar a zone para o botão "Zone records" habilitar.
Figura 5 – Criação da zona
Após salvar o registro da zona, aba novamente que o botão "Edit" estará habilitado e com ele podemos cadastrar os computadores do domínio, como mostra a figura 6.
Figura 6 – Criação das maquinas domínio
3. BIND9
Com a criação do domínio no GOsa, vamos passar para a instalação do servidor dns. Será utilizado o pacote pré-compilado para o servidor Ubuntu.
# apt-get install bind9
O próximo passo é a configuração da zona no bind9. Para isso altere o arquivo /etc/bind/named.conf acrescentando as seguintes linhas.
zone "curso.ldap" {
type master;
file "/etc/bind/db.curso.ldap";
};zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/rec.curso.ldap";
};
O próximo passo é criar os arquivos db.curso.ldap e o arquivo rec.curso.ldap. Esses arquivos são criados através de um script que exporta as informações do LDAP (GOsa).
4. ldap2zone
Utilizaremos o script ldap2zone para exportar os registros da base LDAP. Esse script foi escrito com a linguagem de C, portanto é preciso compilá-lo. Para realizar essa tarefa entre no diretório /usr/local/src, e faça download do script.
# cd /usr/local/src
# wget www.venaas.no/dns/ldap2zone/ldap2zone.c
Antes de começar a compilar os fontes do script, instale os pré-requisitos que são as bibliotecas do LDAP e os compiladores.
# apt-get install libc6-dev gcc libldap2-dev
A compilação do script de exportação é bem simples. Segue o passo para a compilação.
# gcc -o ldap2zone -lldap -llber ldap2zone.c
Após a compilação mova o arquivo binário compilado para o diretório /usr/local/bin.
# mv ldap2zone /usr/local/bin
Agora com o script compilado, vamos realizar alguns testes para verificar se exportação está sendo corretamente.
Primeiro vamos exportar o db.
# ldap2zone curso.ldap. ldap://192.168.0.10 604800
$TTL 604800
@ IN SOA ns1.curso.ldap. clodonil.nisled.org. (
2009080904 ; Serialnumber
3600 ; Refresh
1800 ; Retry
720000 ; Expire
6400 ) ; Minimum TTL
NS ns1.curso.ldap.
MX 0 mail.curso.ldap.
MX 1 server.curso.ldap.
www 7440 A 192.168.0.1
mail 7440 A 192.168.0.1
server 7440 A 192.168.0.1
ns1 7440 A 192.168.0.1
Como pode ver a exportação foi feita corretamente, também vamos testar a exportação do reverso.
# ldap2zone 0.168.192.in-addr.arpa ldap://192.168.0.10 604800
$TTL 604800
@ IN SOA ns1.curso.ldap. clodonil.nisled.org. (
2009080904 ; Serialnumber
3600 ; Refresh
1800 ; Retry
720000 ; Expire
6400 ) ; Minimum TTL
NS ns1.curso.ldap.
MX 0 mail.curso.ldap.
MX 1 server.curso.ldap.
1 7440 PTR www.curso.ldap.
7440 PTR mail.curso.ldap.
7440 PTR server.curso.ldap.
7440 PTR ns1.curso.ldap.
Para tornar a tarefa de exportação mais automatizada, vamos criar um script para exportar as entradas do LDAP e criar os respectivos arquivos. Segue o script.
#!/bin/bash
ldap2zone 0.168.192.in-addr.arpa ldap://192.168.0.10 604800 > /etc/bind/rev.curso.ldap
ldap2zone curso.ldap. ldap://192.168.0.10 604800 > /etc/bind/db.curso.ldap
Para não precisar ficar executando o script toda vez que fizer uma alteração pelo GOsa, vamos colocar o script no crontab e pedir para executar em 5 em 5 minutos.
*/5 * * * * /usr/local/bin/dns.sh
5. Teste
Para realizar os testes que precisamos, vamos alterar primeiramente reiniciar o servidor DNS.
# /etc/init.d/bind9 restart
O próximo passo é alterar o arquivo /etc/resolv.conf, e apontar para o servidor DNS que acabamos de configurar.
nameserver 192.168.0.1
Em seguida utilize o comando ping para verificar se o servidor tá "resolvendo" o nome pesquisa.
# ping www.curso.ldap
PING www.curso.ldap (192.168.0.1) 56(84) bytes of data.
64 bytes from nucleo.local (192.168.0.1): icmp_seq=1 ttl=64 time=0.037 ms
64 bytes from nucleo.local (192.168.0.1): icmp_seq=2 ttl=64 time=0.054 ms
64 bytes from nucleo.local (192.168.0.1): icmp_seq=3 ttl=64 time=0.056 ms
Conforme o resultado apresentado pelo comando ping, o servidor DNS tá funcionando corretamente.
6. Troubleshooting
- Verifique se os arquivos db e rev estão sendo gerados pelos scripts;
- Verifique os logs do bind9 (tail –f /var/log/daemon)
- No GOsa verifique se colocou ponto (.) no final dos nomes definidos como servidor de e-mail.
1Um comentário
Nome do Sistema Operacional