Bind inclui todas as zonas de uma pasta

1

Eu tenho um webapp que funciona como um gerenciador de DNS, escrevendo todas as zonas para "/ var / named". Eu gostaria de poder configurar o named para carregar todas as zonas naquela pasta, sem explicitamente ter que dizer qual zona vai para qual arquivo.

Isso é remotamente possível?

A razão para isto é que eu terei muitas zonas adicionadas / deletadas e muitos registros para cada uma delas. Eu estava pensando em usar um banco de dados para isso, mas a ideia de fazer 500 inserções de registro me assusta (precisa ser ágil). É mais fácil escrever em um arquivo.

Alguma sugestão?

    
por alexcepoi 07.02.2011 / 16:08

3 respostas

1

Como o problema é declarado, isso não é possível com bind9. No entanto, o problema realmente tem a ver com como você pode fazer alterações significativas em quais zonas você está servindo, sem um impacto no desempenho.

Possíveis sugestões são:

  • zonas dinamicamente carregáveis com bind9

  • bind10 (mas isso não está maduro, você provavelmente não quer depender dele para ambientes de produção críticos)

  • outro servidor dns, como powerdns. Se você estiver usando o esquema padrão recomendado para um back-end SQL para powerdns, ele servirá a todos das zonas na tabela de domínios, portanto, se você puder ter seu "gerenciador de dns" atualizando essa tabela, então você está no negócio. No mínimo, uma solução alternativa imediata seria ter a ferramenta zone2sql do powerdns pegando os arquivos de zona que seu aplicativo de gerenciador de DNS cria e inserindo-os no banco de dados.

por 07.02.2011 / 16:43
2

Como outros já disseram, isso não é diretamente possível.

Mas você ainda pode automatizá-lo!

Configure um script (makefile, bash, what-have-you) que gera um arquivo de configuração bind9 apropriado contendo todos os blocos de zonas:

AUTOZONEFILE=/var/lib/named/etc/named.conf.autozone

cp -a $AUTOZONEFILE $AUTOZONEFILE.old
> $AUTOZONEFILE.new
for zonefile in /var/lib/named/master/autozones/*; do
    CURZONE="$(basename "$zonefile")"
    cat <<EOF >> $AUTOZONEFILE.new
zone "$CURZONE" {
    type master;
    file "master/autozones/$CURZONE";
};
EOF
    done

cat $AUTOZONEFILE.new > $AUTOZONEFILE
rm $AUTOZONEFILE.new
rndc reload

Tente algo assim.

    
por 07.02.2011 / 19:26
0

Eu não acredito que seja possível. O BIND gosta de ter cada zona configurada separadamente com seu próprio bloco zone contendo o nome do arquivo de zona e o nome do domínio nele.

    
por 07.02.2011 / 16:11