Adicionando uma zona em um servidor Master (BIND)

Atenção

Esse tutorial é apenas um exemplo!!! Realize as adaptações necessárias quando for configurar sua zona.

Definições

  • Definição da Zona:
    • zone – nome da zona
    • type – tipo de servidor (master/slave/hint/…)
    • file – nome do arquivo que contém a base de dados da zona
    • masters – lista de servidores master (só para servidores do tipo slave)
  • Tipos de servidores:
    • master – servidor primário (contém as configurações da zona)
    • slave – servidor secundário (vai buscar a base de dados no servidor master)
    • hint – contém os endereços dos servidores de root (“.”)
    • cache – servidor que só faz cache das respostas obtidas (não define zonas)
  • Resource-Records types (RR)
    • SOA – StartOfAuthority: início de definição de zona (domínio)
    • NS – NameServers: servidores DNS da zona
    • A – Address: nome para endereço IP
    • PTR – PoinTeR: endereço IP para nome
    • CNAME – CanonicaName: mesmo endereço de outro nome
    • MX – Mail eXanger: servidores de mail do domínio

Para adicionar uma zona master em um servidor Bind, precisamos seguir dois passos principais:

  1. Indicar ao Bind que ele será autoritativo daquela zona;
  2. Configurar o banco de dados daquela zona;
  3. Realizar os testes no servidor configurado;

Configuração do Bind

O primeiro passo é feito editando o arquivo /etc/bind/named.conf.local. Nele deve-se adicionar as informações necessárias para que o Bind consiga reconhecer a zona em questão. Abaixo um exemplo do que deve ser adicionado no named.conf.local para uma zona chamada professor.eti.br

zone "professor.eti.br" {
        type master;
        file "db.professor.eti.br";
        allow-transfer {
                none;
        };
};

No exemplo acima, a opção allow-transfer indica quem tem permissão de transferir informações do banco de dados da zona. Quando se coloca none, o servidor não vai permitir que ninguém transfira nada dele.

Após o término da configuração, pode-se utilizar o comando named-checkconf para verificar a sintaxe do arquivo de configuração. Caso a sintaxe esteja correta, o comando não retornará nenhum erro. Abaixo o exemplo de como executar o comando para verificar o arquivo de configuração.

named-checkconf filename

Para o caso do exemplo desse tutorial, o comando seria:

named-checkconf /etc/bind/named.conf.local

Criação do Banco de Dados da Zona

O segundo passo é criar o arquivo db.professor.eti.br dentro da pasta /var/cache/bind. Esse arquivo corresponde ao banco de dados dessa zona. O nome do arquivo é apenas uma sugestão e segue o padrão geralmente utilizado. A única obrigação é que o nome do arquivo seja o mesmo do indicado na diretiva file do arquivo de configuração do Bind.

Abaixo um exemplo de um banco de dados para a zona professor.eti.br. Os únicos RR que são obrigatórios são o SOA e o NS. Os demais RR são colocados de acordo com as necessidades de cada zona. O exemplo está todo comentado, para facilitar o entendimento. Os comentários possuem um ; antes e podem ser retirados quando da criação do arquivos da base de dados no servidor.

$TTL    86400
@          IN      SOA     ns1.professor.eti.br.     tenpontes.gmail.com. (
                                2009112001            ; Serial
                                300                   ; Refresh
                                3600                  ; Retry
                                86400                 ; Expire
                                3600 )                ; Negative Cache TTL
;
@          IN      NS      ns1.professor.eti.br.      ; indica que o host ns1 é servidor DNS da zona em questão
@          IN      NS      ns2.professor.eti.br.      ; indica que o host ns2 é servidor DNS da zona em questão
;
@          IN      MX      10 mail.professor.eti.br.  ; indica que o host mail é servidor e-mail da zona em questão
;
ns1        IN      A       172.18.38.5                ; indica que o host ns1 possui endereço IP 172.18.38.5
ns2        IN      A       172.18.38.6                ; indica que o host ns2 possui endereço IP 172.18.38.6
mail       IN      A       172.18.38.4                ; indica que o host mail possui endereço IP 172.18.38.4
webserver  IN      A       172.18.38.3                ; indica que o host webserver possui endereço IP 172.18.38.3
;                                                       
www        IN      CNAME   webserver                  ; indica que o host www possui o mesmo IP do host webserver
webmail    IN      CNAME   webserver                  ; indica que o host www possui o mesmo IP do host webserver

Após o término da criação da base de dados ou após alguma modificação, pode-se utilizar o comando named-checkzone para verificar a sintaxe e a integridade do arquivo com o banco de dados da zona. Caso a sintaxe e a integridade estejam corretaw, o comando retornará um OK. Abaixo o exemplo de como executar o comando para verificar o banco de dados de uma zona qualquer.

named-checkzone zonename filename

Para o caso do exemplo desse tutorial, onde a zona criada foi professor.eti.br, e o arquivo com o banco de dados é o db.professor.eti.br, o comando seria:

named-checkzone professor.eti.br /var/cache/bind/db.professor.eti.br

Realização dos Testes

Após o término das configurações e sempre que qualquer mudança for feita nos arquivos de configuração do bind, bem como no banco de dados de alguma zona, precisa-se reiniciar o serviço para que as novas configurações entrem em vigor. Para isso utilize o comando abaixo com poderes de root. Caso tudo tenha sido configurado corretamente, o serviço será reiniciado sem mensagens de erro.

/etc/init.d/bind9 restart

Para ter certeza que tudo está funcionando corretamente, deve-se utilizar algum utilitário de teste de funcionamento de resposta à requisições de resolução de nomes de servidores DNS. Existem diversas ferramentas que permitem esse teste, porém, a ferramenta mais utilizada é o utilitário dig.

Após instalado, o utilitário dig pode ser utilizado da seguinte forma:

dig <tipo_registro> <name>

Onde <tipo_registro> deve ser substituído pelo tipo de RR do domínio que se deseja pesquisar (por exemplo, o(s) registro(s) NS do domínio) e <name> deve ser substituído pelo nome do RR. Um exemplo de consulta aos registros NS do domínio utilizado nesse tutorial seria:

dig NS professor.eti.br

O resultado deve ser similiar ao quadro abaixo. Caso seja diferente, o servidor não está funcionando corretamente.

; <<>> DiG 9.7.3-P3 <<>> ns professor.eti.br
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3849
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;professor.eti.br.			IN	NS

;; ANSWER SECTION:
professor.eti.br.		49107	IN	NS	ns1.professor.eti.br.
professor.eti.br.		49107	IN	NS	ns2.professor.eti.br.

;; Query time: 81 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Apr  9 02:31:04 2012
;; MSG SIZE  rcvd: 92

Como pode ser visto no exemplo da pesquisa acima, a seção QUESTION SECTION indica que a pesquisa pelo registro NS do domínio 'professor.eti.br.' foi feita. Na seção ANSWER SECTION,podemos ver que as respostas foram 2 registros NS apontando para os hosts ns1.professor.eti.br e ns2.professor.eti.br. Perceba também que algumas informações sobre a pesquisa são exibidas a seguir, como o tempo de pesquisa (81 milisegundos), data e horário da pesquisa e o tamanho da mensagem recebida do servidor de nomes contendo a resposta da pesquisa.

Devemos lembrar que, por padrão, o servidor de nomes para o qual a pesquisa será enviada é o servidor de nomes para o qual o sistema operacional onde a pesquisa está sendo feita aponta. Isso pode ser conferido no arquivo /etc/resolv.conf. Para especificar a qual servidor de nomes a requisição de pesquisa deve ser enviada, acrescente um parâmetro adicional à linha de comando que executa o utilitário dig, contendo o caractere @ seguido do endereço IP do servidor de nomes desejado. Um exemplo de pesquisa especificando o servidor de nomes para o qual enviar a requisição de pesquisa seria:

dig A www.professor.eti.br @localhost

No exemplo acima está sendo perguntando ao servidor localhost, ou seja, a própria máquina, pelo registro do tipo A com nome www.professor.eti.br. A resposta será o endereço IP do host www.professor.eti.br.

ensino/semestres/2011.1/admso/material/dicas/dicas-importantes/adicionando_uma_zona_em_um_servidor_master.txt · Última modificação: 2012/04/09 02:52 (edição externa)