Como posso gerenciar todos os meus domínios com configuração mínima?

10

This is a Canonical Question about DNS server administration.

Eu tenho cem ou mais domínios. Todos esses domínios precisam ser configurados de forma idêntica, mas parece um grande desperdício 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!

Eu acho que estou 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 registro A for solicitado, isso parece para me aproximar bastante do resultado final desejado. Meu servidor está respondendo de maneira autoritária às solicitações e é muito mais fácil de gerenciar!

Isso funcionou muito bem até que o software de validação do servidor de nomes começou a verificar esses domínios. Eu descobri que posso fazer com que a maioria dos erros desaparecesse adicionando NS records, mas meu software não me permite colocar mais de um SOA no mesmo arquivo de zona.

Como faço para contornar esse problema de vários SOA ?

    
por Andrew B 19.02.2015 / 11:08

4 respostas

12

A menos que eu esteja entendendo mal a questão, eu faço isso regularmente com o BIND, e parece estar bem contanto que cada zona seja absolutamente idêntica.

No meu servidor de nomes primário, eu tenho named.conf entradas 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, em seguida, um arquivo de zona primary/example.GENERIC que 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 eu não estou ciente de nenhum problema com essas zonas. Estou aberto para ser informado que entendi mal a questão, ou que meus domínios de fato não funcionam, mas até então acho que funciona para mim.

Note que você não pode fazer o mesmo truque no secundário ; cada zona irá exigir que um arquivo diferente seja armazenado. Mas como o conteúdo desse arquivo será preenchido e mantido atualizado por xfers de zona do primário, isso não é um grande problema .

    
por 19.02.2015 / 11:55
4

Existem vários atalhos que você pode usar para facilitar sua vida:

Se você usa o Bind ou um 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 certos atalhos 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 . é sempre expandido com o $ORIGIN , que por sua vez é implicitamente definido para o nome da zona. E @ é curto para o $ ORIGIN.

Em vez de manter os arquivos de zona individuais manualmente, ative um método de forma interativa com seus servidores de nomes.

Eu usei o PowerDNS que permite um RDMS como um back-end que se encaixa muito bem com a pilha LAMP que estávamos usando no momento. Os serviços de nuvem, como o Amazon Route 53, também expõem as APIs da web.

Mas até 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-lhe uma forma especial de mensagens DNS. O formato e o significado dessas mensagens são especificados em RFC 2136 .

A atualização dinâmica é ativada incluindo uma cláusula allow-update ou update-policy na declaração da zona. Para obter mais informações, consulte o Manual de referência do administrador de vinculações .

    
por 19.02.2015 / 12:49
4

Resposta curta

Se você está procurando uma configuração de "configuração zero" no BIND, ela não existe. Configurar uma zona de raiz ( . ) parece ser 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

Temos recebido variações desta pergunta várias vezes no ano passado.

A resposta é bem simples aqui: você não pode definir uma única definição de zona. Qualquer software que permita definir ou sintetizar vários registros SOA neste contexto é um software quebrado , e fazer coisas quebradas não está no tópico do ServerFault. Você precisa escolher um software de 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 passa essa solução porque ainda é "muito trabalho" adicionar uma declaração de zona sempre 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 permite criar dinamicamente definições de zona dinamicamente por meio da nova funcionalidade rndc addzone . Você pode querer dar uma olhada nisso e ver se ele atende às suas necessidades.

Além disso, as soluções sugeridas, suas opções são um pouco limitadas. Às vezes, você fica apenas com o trabalho se o software não faz as coisas do jeito que você quer.

    
por 19.02.2015 / 11:08
-2

Quando você diz que "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 os domínios, exceto um, seria uma solução mais limpa?

Eu não posso vencer o truque de @MadHatter de importar o mesmo arquivo de modelo enquanto estiver estritamente dentro do escopo de sua pergunta. Só posso oferecer uma abordagem semelhante para LDAP backend (no meu caso, usado com o powerDNS): adicione os atributos associatedDomain para os registros SOA e NS relevantes, assim:

dn: dc=vanitydomains,ou=DNS,dc=myDIT
objectClass: dNSDomain2
objectClass: domainRelatedObject
dc: vanitydomains
associatedDomain: vanitydomain.ORG
associatedDomain: vanitydomain.NET
associatedDomain: vanitydomain.COM
associatedDomain: vanitydomain.INFO
sOARecord: NS1.example.com  sysadmin.example.com 2011100701 28800 1800 2592000 10800
dNameRecord: example.com
nSRecord: NS1.example.com
nSRecord: NS2.example.com
    
por 23.02.2015 / 20:58