atualizando dinamicamente os subdomínios da zona

1

Estou executando um servidor DNS bind9 (9.9.5) (no Debian / jessie). Eu configurei uma zona para permitir atualizações dinâmicas e gostaria de adicionar TXT registros para hosts específicos dentro dessa zona.

Aqui está um exemplo de configuração (named.conf)

zone "example.com" {
    type master;
    notify yes;
    allow-update { key secret-key; };
    file "/etc/bind/db.example.com";
};

E o arquivo db.example.com acompanhante:

$ORIGIN .
$TTL 604800 ; 1 week
example.com     IN SOA  dns.example.com root.example.com. (
                1          ; serial
                10800      ; refresh (3 hours)
                3600       ; retry (1 hour)
                604800     ; expire (1 week)
                86400      ; minimum (1 day)
                )
            NS  dns.example.org.
            NS  dns1.example.org.
            NS  dns2.example.org.
$ORIGIN example.com.
*           MX  10 mail.example.com.
mail        A   127.0.0.1
http        A   127.0.1.1

Usando minha chave secreta , posso adicionar dinamicamente um novo registro diretamente nessa zona (por exemplo, criar um registro TXT para _acme-challenge.example.com ).

No entanto, o que eu realmente quero fazer é adicionar registros de subdomínio para hosts dentro da zona. Por exemplo. na zona example.com , existe um A registro mail.example.com , e eu gostaria de adicionar dinamicamente um registro TXT para _acme-challenge.mail.example.com .

Infelizmente, meu servidor de nomes não gosta disso e se recusa a trabalhar com

secret-key: updating zone 'example.com/IN': update failed: not authoritative for update zone (NOTAUTH)

Eu posso adicionar esse registro manualmente ao arquivo-bd e ele funciona bem.

 _acme-challenge.mail TXT "secretstring"

No entanto, eu gostaria de automatizar isso (já que isso é parte da implantação de certificados letsencrypt via DNS-01 challenge), então configurar manualmente os registros não é uma opção.

Alguma idéia do que está errado e como posso atualizar meus registros TXT automaticamente?

update: o script

a atualização atual é implementada com python-dnspython e se parece com:

update = dns.update.Update("mail.example.com", ...)
update.add("_acme-challenge", 500, "TXT", token)
response = dns.query.udp(update, name_server_ip)
    
por umläute 13.12.2016 / 18:02

2 respostas

2

Acontece que o problema era de fato o modo como o script dnspython solicitaria a atualização da zona.

Em vez de solicitar a adição de uma entrada _acme-challenge.mail à example.com zone, ela solicitaria (e erroneamente) uma entrada _acme-challenge a ser adicionada à mail.example.com zone.

Como o servidor de nomes não possui mail.example.com. zone, ele se recusaria a manipular a solicitação.

A solução para o problema foi tentar adicionar iterativamente às zonas-pai, até o sucesso (ou o TLD ter sido atingido):

  • experimente adicionar _acme-challenge à zona mail.example.com.
  • experimente adicionar _acme-challenge.mail à zona example.com.
  • experimente adicionar _acme-challenge.mail.example à zona com.
  • falhar.
por 15.12.2016 / 15:19
-2

Eu não acho que nada esteja "errado".

Escrevemos um script que pensava em nossos milhares de domínios para editar o arquivo dns manualmente e depois reiniciar o serviço DNS.

    
por 13.12.2016 / 21:13