Esta é uma pergunta canônica sobre a administração do servidor DNS.
Eu tenho cem ou mais domínios. Todos esses domínios precisam ser configurados de forma idêntica, mas parece uma grande perda de tempo ter que configurar uma nova zona e/ou arquivo de zona para cada um desses domínios. Tem que haver uma maneira melhor de automatizar isso!
Acho que estou no caminho certo ... se eu criar uma zona chamada .
, ou usar algum outro recurso no meu software DNS para sempre retornar um IP específico quando um A
registro for solicitado, isso parece me deixar bem próximo do fim desejado resultado. Meu servidor está respondendo com autoridade às solicitações e é muito mais fácil de gerenciar!
Isso estava funcionando muito bem até que o software de validação do servidor de nomes começou a verificar esses domínios. Descobri que posso eliminar a maioria dos erros adicionando NS
registros, mas meu software não permite que eu coloque mais de um SOA
registro no mesmo arquivo de zona.
Como contornar esse SOA
problema de vários registros?
A menos que eu esteja entendendo mal a pergunta, faço isso regularmente com o BIND e parece estar bem, desde que cada zona seja absolutamente idêntica.
No meu servidor de nomes primário, tenho
named.conf
entradas que apontam para o arquivo de zona genérico, por exemploe, em seguida, um arquivo de zona
primary/example.GENERIC
que diz, por exemploE não estou ciente de nenhum problema com essas zonas. Estou aberto a ouvir que entendi mal a pergunta ou que meus domínios de fato não funcionam, mas até então acho que funciona para mim.
Observe que você não pode usar o mesmo truque no secundário ; cada zona exigirá que um arquivo diferente seja armazenado. Mas como o conteúdo desse arquivo será preenchido e atualizado por transferências de zona do primário, isso não é um grande problema.
Resposta curta
Se você está procurando uma configuração de "configuração zero" no BIND, ela não existe. Configurar uma zona raiz (
.
) parece uma boa ideia, mas não é, e você precisa encontrar uma solução que não envolva quebrar o DNS para atender às suas necessidades.Resposta longa
Recebemos variantes dessa pergunta várias vezes no ano passado.
A resposta é bem simples aqui: você não pode configurar uma única definição de zona. Qualquer software que permita definir ou de outra forma sintetizar vários
SOA
registros nesse contexto é um software corrompido , e fazer coisas incorretas não está no tópico do ServerFault. Você precisa escolher um software DNS que torne esse gerenciamento mais simples para você ou precisa criar uma estratégia diferente que não envolva esse atalho específico.Definitivamente, existem alguns truques que você pode usar para tornar a vida mais fácil...usando o BIND como exemplo, é bastante comum definir várias zonas que fazem referência ao mesmo arquivo de zona de modelo. Isso é perfeitamente legal e o software de validação não encontrará nada de errado com isso: veja a resposta de MadHatter. A maioria das pessoas ignora essa solução porque ainda é "muito trabalhoso" adicionar uma declaração de zona toda vez que um novo domínio é adquirido, mas não há opção "configure uma vez e vá embora" para esse tipo de hospedagem.
As versões mais recentes do BIND oferecem suporte a uma opção chamada
allow-new-zones
que permite criar definições de zona dinamicamente em tempo real por meio da novarndc addzone
funcionalidade. Você pode querer dar uma olhada nisso e ver se ele atende às suas necessidades.Além das soluções sugeridas, suas opções são um tanto limitadas. Às vezes, você fica preso em fazer o trabalho se o software não faz as coisas da maneira que você deseja.
Existem vários atalhos que você pode usar para facilitar sua vida:
Se você usar o Bind ou software semelhante que usa arquivos para armazenar os dados da zona: aponte suas zonas para o mesmo arquivo, por exemplo:
Como você pode usar certas abreviações de DNS, pode criar um arquivo de zona universal:
Isso faz uso do fato de que os nomes de host em arquivos de zona que não terminam com um ponto .são sempre expandidos com o
$ORIGIN
que, por sua vez, é implicitamente definido como o nome da zona. E @é uma abreviação de $ORIGIN.Em vez de manter arquivos de zona individuais manualmente, habilite um método para interagir programaticamente com seus servidores de nomes.
Usei o PowerDNS, que permite um RDMS como back-end, que se encaixa muito bem com a pilha LAMP que estávamos usando na época. Serviços em nuvem como o Amazon Route 53 também expõem APIs da web.
Mas mesmo o venerável Bind também suporta atualização dinâmica , que é um método para adicionar, substituir ou excluir registros em um servidor mestre enviando a ele uma forma especial de mensagens DNS. O formato e o significado dessas mensagens são especificados na RFC 2136 .
A atualização dinâmica é habilitada incluindo uma
allow-update
ou umaupdate-policy
cláusula na declaração de zona. Para obter mais informações, consulte o Manual de Referência do Administrador de Bind .Quando você diz "os domínios precisam ser configurados de forma idêntica", você quer dizer que eles precisam manter os mesmos registros de recursos? Nesse caso, um
DNAME
RR para todos, exceto um domínio, não seria uma solução mais limpa?Não consigo superar o truque de @MadHatter de importar o mesmo arquivo de modelo enquanto permaneço estritamente dentro do escopo de sua pergunta. Só posso oferecer uma abordagem semelhante para back-
LDAP
end (no meu caso, usado com powerDNS): adicione osassociatedDomain
atributos para os registros SOA e NS relevantes, assim: