Adicionando uma zona em um servidor Slave (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

É prática comum e recomendada a existência de pelo menos dois servidores de nomes para cada domínio registrado. Isto significa que teremos um outro servidor contendo uma cópia do banco de dados da zona. Essa cópia é feita através de uma transferência de zonas.

Neste contexto, o servidor que envia o banco de dados de uma zona para outros servidores é chamado de master. Os servidores que recebem esta transferência são chamados de slaves. Somente pode haver um servidor master, mas podem haver vários servidores slaves. Qualquer alteração nos arquivos de banco de dados da zona é feito no servidor master. O servidor slave é somente de leitura, pois obtém seus dados a partir do servidor master.

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

  1. Indicar ao Bind que ele será autoritativo daquela zona;
  2. Configurar o servidor master para permitir transferência de zona para o slave;
  3. Realizar os testes no servidor configurado;

Configuração do Bind no Servidor Slave

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 slave;
        file "db.professor.eti.br";
        allow-transfer {
                none;};
        masters {
                ip_do_seu_servidor_master; };
};

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. Já a opção masters indica ao servidor slave o endereço IP do servidor master, para que ele possa buscar o banco de dados.

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

Configuração do Bind no Servidor Master

O segundo passo consiste em configurar o master para permitir transferências para o slave. Para isso, altere a configuração do allow-transfer, para que ele permita tranferências para o slave. A configuração ficaria assim:

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

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

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_slave.txt · Última modificação: 2012/04/09 02:52 (edição externa)