Autor: Jean Carlos Oliveira Guandalini
eMail: darkwarrior[nospam]linuxbsd.com.br
Data: 11/2005
ATENÇÃO:
Neste tutorial irei explicar somente como implementar esse recurso a um servidor
de DNS que esteja funcionando 100%, não estarei explicando como configurar
um servidor DNS completo.
Atualizações Dinâmicas é um método para
adicionar, remover e atualizar registros em seu servidor DNS mestre, enviando
formulários especiais com mensagens de DNS, através do programa
"nsupdate".
Para tornarmos essa atualização segura, precisaremos criar
uma chave secreta para fazer a atualização do DNS, lembrando
que quem possuir essa chave pode fazer alterações arbitrárias
em seu servidor de nomes. Iremos utilizar a opção “allow-update”
na configuração de seu named.conf.
Em nosso exemplo, trabalharei com o domínio “linuxbsd.com.br”
e o nome de meu servidor é “servidor.linuxbsd.com.br”.
Nosso arquivo named.conf contém o domínio configurado da seguinte
maneira:
zone “linuxbsd.com.br” IN {
type master;
file “pri/linuxbsd.com.br.zone”;
allow-update { none; };
};
Vamos então gerar nossa chave secreta para atualização
do DNS.
Vou salvar minha chave na pasta /var/bind/, você pode escolher o que
achar melhor.
# dnssec-keygen –a HMAC-MD5 –b 128 –n HOST linuxbsd.com.br.
No meu caso foram gerados dois arquivos:
Klinuxbsd.com.br. +157+15055.key
Klinuxbsd.com.br. +157+15055.private
No arquivo Klinuxbsd.com.br.+157+15055.key temos:
linuxbsd.com.br. IN KEY 512 3 157 Aefw1I5iSPaGXz/SURYg==
E no arquivo Klinuxbsd.com.br.+157+15055.private temos:
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: Aefw1I5iSPaGXz/SURYg==
Esses arquivos é que teremos de ter em nossos “clientes”
que irão fazer a atualização de DNS para que os mesmos
tenham a permissão necessária para tal.
Guarde esse valor: Aefw1I5iSPaGXz/SURYg==
Pois ele é nossa chave secreta, outra vez venho dizer que tenha muito
cuidado com esses arquivos não deixe eles com permissões para
qualquer usuário, deixe somente para o root.
Vamos agora configurar o named.conf:
Antes da declaração da zona você deve jogar as informações
sobre a chave secreta da seguinte maneira:
key “linuxbsd.com.br.”
{
algorithm hmac-md5;
secret “Aefw1I5iSPaGXz/SURYg==”;
};
Após feito isso altere a configuração da zona da seguinte
maneira:
zone “linuxbsd.com.br” IN {
type master;
file “pri/linuxbsd.com.br.zone”;
allow-update { key “linuxbsd.com.br.”; };
};
Reinicie seu servidor BIND e se ele for levantado corretamente sua configuração
funcionou. Para termos certeza absoluta, precisamos testar né!? Então
vamos lá.
Copie os arquivos Klinuxbsd.com.br.+157+15055.key e Klinuxbsd.com.br.
+157+15055.private, para o computador cliente, jogue em um lugar
onde somente o usuário root possa ter acesso aos mesmos, inclusive
para leitura. De preferência faça essa transferência utilizando
o sftp.
Em nossa máquina cliente precisaremos ter o programa nsupdate, em
algumas distribuições o mesmo vem junto com o bind-tools, dnsutils,
bind. Isso você terá que descobrir, no meu caso eu testei em
um slackware e o programa vem no pacote “bind”.
Antes de executar a atualização devemos estar cientes que os
relógios de ambas as máquinas estejam na mesma hora, nesse caso
o correto é fazer uma atualização com o comando ntpdate(Exemplo:)
# ntpdate ntp.usp.br
Após isso...
Supondo que copiamos os arquivos para a pasta /root, então teremos
a seguinte lista de comandos:
# nsupdate –d –k /root/Klinuxbsd.com.br.+157+15055.key
Creating key...
> server servidor.linuxbsd.com.br
before getaddrinfo()
> update delete maquina1.linuxbsd.com.br
> update add maquina1.linuxbsd.com.br 90 A 200.200.200.200
> send
Reply from SOA query:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50
;; flags: qr aa rd ra ; QUESTION: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL:
0
;; QUESTION SECTION:
; maquina1.linuxbsd.com.br. IN SOA
;; AUTHORITY SECTION:
linuxbsd.com.br. 60 IN SOA servidor.linuxbsd.com.br. root.linuxbsd.com.br.
2005100309 3600 900 3600000 3600
Found zone name: linuxbsd.com.br
The master is: servidor.linuxbsd.com.br
Reply from update query:
;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: 25
;; flags: qr ra ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 1
;; TSIG PSEUDOSECTION:
linuxbsd.com.br. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1127896442 300 16 Aefw1I5iSPaGXz/SURYg==
25 NOERROR 0
Onde está em negrito são comandos à serem digitados,
e onde está normal é a saída dos comandos que você
executou. Lembrando que onde está “200.200.200.200” é
o endereço de IP de sua máquina cliente.
Este foi um exemplo bem simples do que podemos fazer com essa ótima
opção oferecida pelo BIND. Você pode usar isso até
em sua rede interna com máquinas que rodam dhcp, sempre que a máquina
pegar um novo IP executar um script para que faça a troca do nome no
domínio de sua empresa. Pode ser implementado de várias maneiras,
facilitando o dia a dia do administrador de redes.