Estou executando um servidor de nomes autoritativo para uma zona /16 reversa, onde cada IP é mapeado para um subdomínio personalizado. Isso é obtido por um arquivo de zona com 256 $GENERATE
diretivas, por exemplo (sub-rede 11.22.0.0/16):
$GENERATE 0-255 $.1 PTR $.1.22.11.rev.example.com.
$GENERATE 0-255 $.2 PTR $.2.22.11.rev.example.com.
(...)
Isso funciona bem, o único problema é que sempre que adicionarmos um registro reverso "significativo" ( 4.3.22.11.in-addr.arpa. IN PTR www.example.com.
) resultará em uma situação em que existem 2 registros PTR para o mesmo endereço IP:
4.3.22.11.in-addr.arpa. IN PTR www.example.com.
4.3.22.11.in-addr.arpa. IN PTR 4.3.22.11.rev.example.com.
Na maioria das vezes isso é bom, mas em alguns casos precisamos ter um único registro PTR.
A solução foi "desenrolar" o $GENERATE
bloco em registros PTR individuais e substituir o que ofendeu. Existe uma maneira de substituir um registro gerado sem precisar expandir todo o intervalo?
Este servidor de nomes executa o BIND 9.8.2 no RHEL6.
A
$GENERATE
Diretiva tem apenas duas formas de alcance : start-stop ou start-stop/step. Por causa disso, você não pode excluir um IP do intervalo, mas deve dividir o intervalo de acordo, por exemploNão há como fazer isso infelizmente. Você está preso com "desenrolar".
Na memória, a diretiva $GENERATE faz com que registros PTR individuais sejam gerados. Isso pode ser observado visualizando o arquivo de zona recebido pelos servidores secundários após a transferência de zona, que não contém uma diretiva $GENERATE. Não há sintaxe que permita substituir seletivamente os registros PTR individuais.
Uma alternativa é mencionada no Capítulo 8 do DNS for Rocket Scientists , que é adicionar uma etapa de using
named-checkzone
para analisar a diretiva $GENERATE e substituí-la por registros PTR individuais:A desvantagem é, naturalmente, o fato de que seu arquivo de zona no mestre se torna muito maior. Neste ponto, você está usando apenas $GENERATE para construir a zona reversa inicial para você, de modo que os registros PTR individuais não precisem ser digitados manualmente, e um script de shell poderia facilmente ter alcançado o mesmo resultado final.
Esta provavelmente não é a solução que você esperava, mas esse é o estado das coisas, infelizmente. :(
Embora você não possa fazer uma exceção dentro da zona que contém o
$GENERATE
, você pode definir uma Zona de Política de Resposta . Uma Zona de Política de Resposta deve permitir que você substitua qualquer resposta que desejar .