Desventuras com BIND
Recentemente tive a necessidade de fazer uma instalação dum servidor de nomes (DNS) no Linux. Quando fiz os testes, fi-lo com o Linux Ubuntu 9.04 Server e aparentemente correu tudo bem. Quando fiz a instalação no sistema final encontrei-me com que este era a versão Desktop (e não Server) e algumas coisas acabaram por não funcionar como era devido.
Após uma instalação com o “apt-get bind9”, e as respectivas modificações aos ficheiros /etc/hostname, /etc/hosts, /etc/resolv.conf e outros ficheiros, o servidor parecia estar a funcionar bem e a conseguir resolver as consultas. Era possível executar o comando “/etc/init.d/bind9” com “stop” ou “restart”.
Após a criação de zonas e a modificação do ficheiro “/etc/bind/named.conf.local”, tal e como já tinha feito várias vezes nas versões Server, os comandos para parar e reiniciar deixaram de funcionar, com um erro como o seguinte:
root@svr:/etc/bind# /etc/init.d/bind9 stop * Stopping domain name service... bind9 rndc: connection to remote host closed This may indicate that * the remote server is using an older version of the command protocol, * this host is not authorized to connect, * the clocks are not syncronized, or * the key is invalid. [ OK ]
De notar que não tinha feito qualquer alteração ao ficheiro “rndc.key” nem a qualquer outra secção do ficheiro “named.conf” que justificasse este tipo de resposta.
Após muitas voltas e consultas no Google e nos fóruns do Ubuntu, claramente o problema estava com a aplicação “rndc” que não estava a conseguir comunicar com o demónio “named”.
Criei uma configuração com a aplicação “rndc-confgen” para me gerar um ficheiro de configuração “rndc.conf” (que não existia inicialmente) e a respectiva chave em “rndc.key”. A seguir incorporei a secção correspondente gerada pela utilidade em “named.conf.local”.
Isto não resolveu o problema, apesar de ter verificado linha a linha que estava tudo bem, que o endereço do servidor e porta estavam iguais e que as chaves utilizadas eram também iguais. Revi os erros mais óbvios indicados nos diferentes fóruns, mas nada.
Por fim, numa revelação (…) tirei a definição da chave dos ficheiros “rndc.conf” e do “named.conf.local” e passei a fazer uma inclusão, deixando a secção em cada um dos ficheiros mecionados como se segue:
#key "rndc-key" {
# algorithm hmac-md5;
# secret "9pUTFohn4ic6msA2FskdQQ==";
#};
include "/etc/bind/rndc.key";
Não dá para perceber porque, mas após esta alteração tudo voltou a funcionar. O conteúdo do ficheiro “rndc.key” era igual ao conteúdo inserido directamente nos ficheiros.
Fica aqui este artigo que serve para mim e espero sirva para outros que se encontrem com o mesmo problema.