[Pdns-users] bind backend zones not registered with zone cache

Peter van Dijk peter.van.dijk at powerdns.com
Wed Aug 18 14:17:01 UTC 2021

Hello Christof,

On Sun, 2021-08-01 at 22:03 +0200, Christof Meerwald via Pdns-users
> So the problem only seems to occur when also launching the gsqlite3
> backend in addition to the bind backend. I am mainly using the bind
> backend for the zone data and gsqlite3 for DNSSEC.

> launch=bind,gsqlite3
> bind-hybrid
> gsqlite3-database=/var/lib/powerdns/pdns.db
> gsqlite3-dnssec

In your gsqlite3 database, every zone (that has DNSSEC data) has a numeric ID (domains.id). In the bindbackend, every zone also has an ID (generated counting from 1 at startup and when you add a zone). Without the zone cache, hybrid mode can deal with those IDs not matching. But in the zone cache, one zone has one ID. The zone cache is filled first from bind, then from gsqlite3, so gsqlite3 IDs end up in the zone cache - and likely those are wrong, and then your BIND data is no longer found.

Then, when you add-zone, that overwrites the zone->ID mapping in the zone cache with the BIND id, which makes that zone work.

In short, hybrid mode and the zone cache do not play well together.

In your case, perhaps bind-dnssec-db (which uses an sqlite3 database as well, although with a slightly different schema) might be a simpler setup that avoids the problem.

Can you file a ticket? We should probably disable the zone cache (or error on startup) if bind-hybrid is enabled.

Kind regards,
Peter van Dijk
PowerDNS.COM BV - https://www.powerdns.com/

More information about the Pdns-users mailing list