Especificações
*Servidor DNS MASTER:
nome: ns1
fqdn: ns1.meudominio.com
ip válido: 221.164.109
*Servidor DNS SLAVE:
nome: ns2
fqdn: ns2.meudominio.com
ip válido: 221.164.180.108
Obs.: Os ips acima mencionados, são meros exemplos!
1-instalar o debian básico
2 – adicionar “deb http://ftp.debian.org/debian/ lenny main contrib” ao source.list
3 –comando para serem executados tanto no master como no slave:
apt-get update
apt-get install ssh
apt-get install tcpdumb (debug)
apt-get upgrade
4 – atualizar o sistema:
apt-get update
apt-get dist-upgrade
5 – instalar o bind
apt-get install bind9
6 – configurar os forwarders, no meu caso, da locaweb:
editar o arquivo /etc/bind/named.conf.options, descomente as linhas forwarders e insira os seguintes ips(locaweb, use o seu!)
ns1.locaweb.com.br = 189.126.108.2
ns2.locaweb.com.br = 201.76.40.2
sendo assim seus forwarders ficarão assim:
forwarders {
189.126.108.2;
201.76.40.2;
};
7 – configurar o resolv.conf
edite o arquivo /etc/resolv.conf
para que fique da seguinte forma:
search meudominio.com
nameserver 127.0.0.1
após este procedimento restarte o bind:
/etc/init.d/bind9 restart
8 – configurando o Servidor MASTER meudominio.com
Comentários:
Na zona direta “meudominio.com”, na opção allow-transfer, você deve substituir 221.164.180.108 pelo ip válido do seu Servidor DNS SLAVE
Na zona reversa “180.164.221.in-addr.arpa” você deve inserir os 3 primeiros octetos de sua subrede disponibilizada pelo provedor, ou seja ips válidos. Se sua rede é 222.223.224.104/29, você deve substituir o valor “180.164.221.in-addr.arpa” por “224.223.222.in-addr.arpa”, note que são somente os 3 primeiros octetos em ordem reversa.
Faça o mesmo com o nome do arquivo.
edite o arquivo /etc/bind/named.conf.local e insira as seguintes zonas:
zone “meudominio.com” IN{
type master;
file “/etc/bind/db.meudominio.com”;
allow-transfer { 221.164.180.108; };
};
zone “180.164.221.in-addr.arpa”{
type master;
file “/etc/bind/db.180.164.221″;
allow-transfer { 221.164.180.108; };
};
Criaremos os arquivos db especificados no arquivo anteriormente editado:
Comentários:
É fácil encontrar documentação na internet sobre como configurar o BIND, mas raramente é disponibilizado mais informações sobre os parametros utilizados nos arquivos de zonas, abaixo vou dar uma explicação resumida dos parametros utilizados:
@ IN SOA ns1.meudominio.com. suporte.meudominio.com.
O @ no inicio da primeira linha indica a origem do dominio e ao mesmo tempo, o inicio das configurações.
O IN é abreviação de internet e o SOA de “start of autority”.
Em seguida vem o nome do servidor seguido do e-mail de contato do administrador. Note que no caso do e-mail temos a conta separada do dominio por um ponto (.)e não pelo @, o mais comum é utilizar hostmaster, mas você pode colocar o e-mail que quiser.
Note também que existe um ponto depois de ns1.meudominio.com, e suporte.meudominio.com. O ponto se refere ao dominio raiz de responsabilidade dos root servers. No exemplo nosso servidor (ns1) é responsável pelo dominio (meudominio), que faz parte do dominio (.com), que por sua vez faz parte do dominio raiz (.).
Esta linha que acabei de resumir, diz algo como “Na internet o servidor “ns1” responde pelo dominio “meudominio.com” e o e-mail do responsável pelo dominio é suporte.meudominio.com”.
A primeira linha termina com um parêntese, que significa o inicio das configurações daquele dominio, temos então:
2010051312 3H 15M 1W 1D )
2010051312 é valor de sincronismo, que permite que o servidor secundário mantenha-se sincronizado com o principal. Este número é composto da data da última alteração (como em: 20100513), e um número de dois dígitos qualquer que você escolhe. Sempre que editar a configuração, ou sempre que configurar um servidor DNS a partir de um template qualquer, lembre-se de atualizar a data e mudar os dois dígitos.
Os quatro campos seguintes orientam o servidor DNS secundário. O primeiro campo indica o tempo que o servidor aguarda entre as atualizações (3 horas). Caso ele perceba que o servidor principal está fora do ar, ele tenta fazer uma transferência de zona, ou seja, tenta assumir a responsabilidade sob o domínio. Caso a transferência falhe e o servidor principal continue fora do ar, ele aguarda o tempo especificado no segundo campo (15 minutos ) e tenta novamente.
O terceiro campo indica o tempo máximo que ele pode responder pelo domínio, antes que as informações expirem (1 semana, tempo mais do que suficiente para você arrumar o servidor principal ) e o tempo mínimo antes de devolver o domínio para o servidor principal quando ele retornar (1 dia).
Muita gente prefere especificar estes valores em segundos. Uma configuração muito comum é separar os valores por linha, incluindo comentários, como em:
2010051312; serial
28800; refresh, seconds
7200; retry, seconds
604800; expire, seconds
86400 ); minimum, seconds
O resultado é exatamente o mesmo. A única diferença é que você vai acabar digitando várias linhas a mais.
#vim /etc/bind/db.meudominio.com
com o seguinte conteúdo:
$TTL 604800
@ IN SOA ns1.meudominio.com. suporte.meudominio.com. (
2010051312 3H 15M 1W 1D )
@ IN NS ns1
@ IN NS ns2
meudominio.com IN MX 10 ns1
meudominio.com IN A 221.164.180.109
www IN A 221.164.180.107
ns1 IN A 221.164.180.109
ns2 IN A 221.164.180.108
Agora o reverso:
vim /etc/bind/db.180.164.221
Com o seguinte conteúdo:
$TTL 1d ;
$ORIGIN 180.164.221.IN-ADDR.ARPA.
@ IN SOA ns1.meudominio.com. suporte.meudominio.com. (
2010051312 3H 15M 1W 1D )
IN NS ns1.meudominio.com.
IN NS ns2.meudominio.com.
109 IN PTR ns1.meudominio.com.
108 IN PTR ns2.meudominio.com.
Restarte o bind:
/etc/init.d/bind9 restart
Com isso o seu dns já deve estar funcionando, agora vamos instalar o slave:
Para ambos os servidores, Slave e Master, você deve adicionar a seguinte linha no arquivo /etc/bind/named.conf.options
dnssec-enable yes;
Agora precisamos setar uma chave segura para que os dois se comuniquem, este comando irá gerar um arquivo .private e um .key. A opção “key=” no .private representa o hashkey, execute o seguinte comando:
dnssec-keygen -r /dev/urandom -a hmac-md5 -b 128 -n host meudominio.com
agora edite o arquivo /etc/bind/named.conf, em ambos os servidores e insira o seguinte trecho, substituindo o “secret” pelo que foi gerado no .private.
key “TRANSFER” {
algorithm hmac-md5;
secret “jxTZsKVn0p0irY6Q3f8E4A==”;
};
No DNS master você deve inserir o ip do slave no mesmo arquivo, /etc/bind/named.conf, segue o trecho:
server 221.164.180.108 {
keys {
TRANSFER;
};
};
No DNS slave você deve inserir o ip do master no mesmo arquivo, /etc/bind/named.conf, segue o trecho:
server 221.164.180.109 {
keys {
TRANSFER;
};
};
No DNS slave edite sua zona para que fique parecido com isso:
vim /etc/bind/named.conf.local
zone “meudominio.com” {
type slave;
file “/etc/bind/db.meudominio.com”;
masters { 221.164.180.109; };
allow-notify { 221.164.180.109; };
};
Obs.:
Com a configuração acima, tive problemas com a replicação de zonas, pois o diretorio /etc/bind não permite escrita para o usuario do bind, portando para não liberar permissões neste diretório, o que seria uma brecha de segurança, mudei o diretorio para /var/cache/bind, no qual é o padrão para dns’s Slave,
zone “meudominio.com” {
type slave;
file “/var/cache/bind/db.meudominio.com”;
masters { 221.164.180.109; };
allow-notify { 221.164.180.109; };
};
o ultimo passo necessário é para ser feito nos dois servidores, edite o /etc/bind/named.conf e insira a seguinte linha:
include “/etc/bind/rndc.key”
Para ter uma transferencia bem sucedida entre zonas instale o ntpdate:
apt-get install ntpdate
Obs, ate o momento não houve tranferencia de dns para o slave, aguardarei 1dia pois é o tempo estimado
Bibliografia:
http://www.howtoforge.com/debian_bind9_master_slave_system
http://linux.justinhartman.com/DNS_Installation_and_Setup_using_BIND9
http://www.guiadohardware.net/tutoriais/instalando-servidor-dns/
http://www.vivaolinux.com.br/artigo/Configurando-DNS-%28bind9%29-no-Debian-Sarge/?pagina=2
http://www.vivaolinux.com.br/artigo/Configurando-o-bind-9-no-Debian?pagina=2