Dynamically Loadable Zones

DLZ (Dynamically Loadable Zones)

DLZ (Dynamically Loadable Zones) is an extension to BIND 9 that allows zone data to be retrieved directly from an external database. There is no required format or schema. DLZ drivers exist for several different database backends including PostgreSQL, MySQL, and LDAP and can be written for any other.

Historically, DLZ drivers had to be statically linked with the named binary and were turned on via a configure option at compile time (for example, “configure –with-dlz-ldap”). Currently, the drivers provided in the BIND 9 tarball in contrib/dlz/drivers are still linked this way.

In BIND 9.8 and higher, it is possible to link some DLZ modules dynamically at runtime, via the DLZ “dlopen” driver, which acts as a generic wrapper around a shared object implementing the DLZ API. The “dlopen” driver is linked into named by default, so configure options are no longer necessary when using these dynamically linkable drivers, but are still needed for the older drivers in contrib/dlz/drivers.

When the DLZ module provides data to named, it does so in text format. The response is converted to DNS wire format by named. This conversion, and the lack of any internal caching, places significant limits on the query performance of DLZ modules. Consequently, DLZ is not recommended for use on high-volume servers. However, it can be used in a hidden master configuration, with slaves retrieving zone updates via AXFR. (Note, however, that DLZ has no built-in support for DNS notify; slaves are not automatically informed of changes to the zones in the database.)

Last modified: July 20, 2015 at 12:33 pm