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)