PowerDNS Provider deletes all TXT records, not just the ones it created #1579
-
Welcome
What did you expect to see?When multiple seperated certificates are requested by Traefik or when multiple Traefik instances attempt to obtain an ACME Cert from a domain at similar points in time, both obtain the certificate and clean up their respective DNS records. What did you see instead?When the PowerDNS Lego provider finishes it's challenge, it deletes all TXT records from the zone, leading to spurious failure on other instances of Lego/Traefik who are attempting the same challenge. Looking at the code at providers/dns/pdns/pdns.go#L195, Lego is simply requesting all TXT records to be deleted, if another instance of Lego is attempting the challenge, it will timeout if it never sees the record or it will fail the challenge when it sees the record but LetsEncrypt cannot find it. As an additional side effect, Lego will also wipe any other DNS records on the Zone, which in normal circumstances is fine but if one enables A cursory check in the code reveals that providers like Cloudflare do this properly and delete only the created record but RFC2136 via TSIG has the same issue as PDNS. How do you use lego?Through Traefik Reproduction steps
Version of legoTraefik Docker Container 2.6 (traefik:v2.6)
github.com/go-acme/lego/v4 v4.6.0 Logsexemplary dig outputDNS Setup:
Go environment (if applicable)No response |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
Hello, first, I don't recommend using mulitple Traefik instances to claim certificates on the same domain. The PowerDNS API is quite restrictive, you focused on the |
Beta Was this translation helpful? Give feedback.
Hello,
first, I don't recommend using mulitple Traefik instances to claim certificates on the same domain.
The PowerDNS API is quite restrictive, you focused on the
cleanup
but thepresent
can produce the same thing because we have to replace the full RRSet.