Eu tenho mais ou menos cem domínios. Todos esses domínios precisam ser configurados de forma idêntica, mas parece uma enorme 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 pensando em algo ... se eu criar uma zona chamada .ou usar algum outro recurso no meu software DNS para sempre retornar um IP específico quando um Aregistro for solicitado, isso parece me aproximar bastante do final desejado resultado. Meu servidor está respondendo com autoridade às solicitações e é muito mais fácil de gerenciar!
Isso funcionou muito bem até o software de validação do servidor de nomes começar a verificar esses domínios. Eu descobri que posso eliminar a maioria dos erros adicionando NSregistros, mas meu software não me permite colocar mais de um SOAregistro no mesmo arquivo de zona.
Como solucionar esse SOAproblema 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.confentradas que apontam para o arquivo de zona genérico, por exemplo
zone "example.com" {
type master;
file "primary/example.GENERIC";
};
zone "example.co.uk" {
type master;
file "primary/example.GENERIC";
};
e então um arquivo de zona primary/example.GENERICque diz, por exemplo
;; Start of Authority
@ IN SOA ns.teaparty.net. dns.gatekeeper.ltd.uk. (
2004091201 ; serial number YYYYMMDDNN
28800 ; refresh 8 hours
7200 ; retry 2 hours
864000 ; expire 10 days
3600 ) ; min ttl 1 day
;;
;; Name Servers
IN NS ns.teaparty.net.
IN NS ns2.teaparty.net.
E não estou ciente de nenhum problema com essas zonas. Estou aberto a saber 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 fazer o mesmo truque no secundário ; cada zona vai exigir um arquivo diferente para ser armazenado em. Mas desde que o conteúdo desse arquivo será preenchido e mantido up-to-date por xfers zona do primário, isto não é um grande negócio.
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:
zone "example.net" {
type master;
file "/etc/bind/zone/default.zone";
};
zone "example.org" {
type master;
file "/etc/bind/zone/default.zone";
};
Como você pode usar certas abreviações de DNS, pode criar um arquivo de zona universal:
$TTL 1h ; default expiration time of all resource records without their own TTL value
@ IN SOA ns1.example.com. username.example.com. (
20140218131405 ; Serial number YYYYMMDDHHMMSS
28800 ; Refresh 8 hours
7200 ; Retry 2 hours
604800 ; Expire 7 days
86400 ; Minimum TTL 1 day )
@ IN NS ns1.example.com. ; ns1.example.com is a primary nameserver
@ IN NS ns2.example.com. ; ns2.example.com is a backup nameserver
@ IN MX 10 mail.example.com. ; mail.example.com is the mailserver
@ IN MX 20 mail2.example.com. ; the secondary mailserver
@ IN A 192.0.2.1 ; IPv4 address for the bare domain
IN AAAA 2001:db8:10::1 ; IPv6 address for the bare domain
www IN A 192.0.2.1 ; www.domain
IN AAAA 2001:db8:10::1 ; IPv6 address for www.domain - note by starting the line with a blank it becomes the continuation of the previous record and this IPv6 record applies to www
wwwtest IN CNAME www ; wwwtest is an alias for www
Isso faz uso do fato de que os nomes de host nos arquivos de zona que não terminam com um ponto .são sempre expandidos com o $ORIGINque, por sua vez, é definido implicitamente como o nome da zona. E @é uma abreviação de $ ORIGIN.
Em vez de manter os arquivos de zona individuais manualmente, ative um método para interagir programaticamente com seus servidores de nomes.
Eu 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 a 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 primeira metade da sua resposta está pronta, mas não tenho certeza de que o DDNS se aplique aqui ... ele não pode ser usado para adicionar ou remover zonas, o que anula o que a maioria das pessoas neste cenário está tentando realizar. (sem precisar tocar em named.conf para cada zona adicionada) A coisa mais próxima que eu conheço no BIND land é a nova rndc addzoneopção, mas isso ainda é meio feio, pois acaba gerando um arquivo de configuração com um nome de hash no diretório de trabalho para toda zona adicionada.
Andrew B
Entenda o que você está tentando dizer, mas uma interpretação diferente é que a dificuldade de muitos domínios está em manter e duplicar o trabalho. A automação / script de DNS é algo que não está bem documentado.
21715 HBruijn
4
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 a quebra do DNS para atender às suas necessidades.
Resposta longa
Temos recebido 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 sintetizar vários SOAregistros nesse contexto é um software danificado , e fazer coisas danificadas não está relacionado ao ServerFault. Você precisa escolher um software DNS que simplifique esse gerenciamento ou criar uma estratégia diferente que não envolva esse atalho específico.
Definitivamente, existem alguns truques que você pode usar para facilitar a vida ... usando o BIND como exemplo, é bastante comum definir várias zonas que referenciam o 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 do MadHatter. A maioria das pessoas passa por cima dessa solução porque ainda é "muito trabalhoso" adicionar uma declaração de zona toda vez que um novo domínio é adquirido, mas não há uma 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-zonesque permitirá criar dinamicamente definições de zona rapidamente, através da nova rndc addzonefuncionalidade. Você pode dar uma olhada nisso e ver se ele atende às suas necessidades.
Além das soluções sugeridas, suas opções são um pouco limitadas. Às vezes, você fica preso ao trabalho se o software não faz as coisas do jeito que você deseja.
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 DNAMERR para todos, exceto um domínio, não seria uma solução mais limpa?
Não consigo superar o truque importando o mesmo arquivo de modelo @MadHatter, mantendo-me estritamente dentro do escopo da sua pergunta. Só posso oferecer uma abordagem semelhante para o LDAPback-end (no meu caso, usado com o powerDNS): adicione os associatedDomainatributos para os registros SOA e NS relevantes, da seguinte forma:
Infelizmente, a técnica DNAME perde o ápice da zona devido a limitações dos RFCs. A síntese CNAME resultante dos registros DNAME ainda está sujeita às mesmas restrições de registros CNAME não sintéticos. Diferente da solução da MadHatter, o resultado está muito longe dos conjuntos de RR 100% idênticos.
rndc addzone
opção, mas isso ainda é meio feio, pois acaba gerando um arquivo de configuração com um nome de hash no diretório de trabalho para toda zona adicionada.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 a quebra do DNS para atender às suas necessidades.Resposta longa
Temos recebido 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 sintetizar vários
SOA
registros nesse contexto é um software danificado , e fazer coisas danificadas não está relacionado ao ServerFault. Você precisa escolher um software DNS que simplifique esse gerenciamento ou criar uma estratégia diferente que não envolva esse atalho específico.Definitivamente, existem alguns truques que você pode usar para facilitar a vida ... usando o BIND como exemplo, é bastante comum definir várias zonas que referenciam o 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 do MadHatter. A maioria das pessoas passa por cima dessa solução porque ainda é "muito trabalhoso" adicionar uma declaração de zona toda vez que um novo domínio é adquirido, mas não há uma 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 permitirá criar dinamicamente definições de zona rapidamente, através da novarndc addzone
funcionalidade. Você pode dar uma olhada nisso e ver se ele atende às suas necessidades.Além das soluções sugeridas, suas opções são um pouco limitadas. Às vezes, você fica preso ao trabalho se o software não faz as coisas do jeito que você deseja.
fonte
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 importando o mesmo arquivo de modelo @MadHatter, mantendo-me estritamente dentro do escopo da sua pergunta. Só posso oferecer uma abordagem semelhante para o
LDAP
back-end (no meu caso, usado com o powerDNS): adicione osassociatedDomain
atributos para os registros SOA e NS relevantes, da seguinte forma:fonte