PowerDNS Recursor additional Lua hooks for IPv6 DNS64 and Renumbering

Nov 14, 2010
Dear PowerDNS Community,

The PowerDNS Recursor is currently being extended with additional Lua hooks
and extra infrastructure to support flexible DNS64 operations, plus perform
on-the-fly IPv4 or IPv6 renumbering.

DNS64 is described on http://tools.ietf.org/html/draft-ietf-behave-dns64-11
and in brief:

"DNS64 is a mechanism for synthesizing AAAA records from A records. DNS64
is used with an IPv6/IPv4 translator to enable client-server communication
between an IPv6-only client and an IPv4-only server, without requiring any
changes to either the IPv6 or the IPv4 node"

Those of you with an interest in these features are invited to test out the
following *pre-release*, specifically to let us know if the API is sufficient
for your needs:


It can be compiled like any other PowerDNS Recursor release.

New in the version are the 'nodata()' and 'postresolve()' Lua hooks. Nodata
functions just like nxdomain(), except that it gets called when a domain
exists, but the requested type doesn't. This is where DNS64 happens.

Postresolve() is different, and very powerful - it gets handed the complete
DNS answer as it would be sent out, ready for modification from Lua. This is
where one might for example perform on the fly IP address renumbering.

In the release you can find powerdns-example-script.lua which contains a
working sample for both of the new hooks. This script can also be viewed on

Note: DO NOT TAKE THIS SCRIPT INTO PRODUCTION - it blacks out important

To get going without disturbing any existing nameservers on your computer,
compile the PowerDNS Recursor, and start like this:
$ ./pdns_recursor --local-address= --local-port=5300 --daemon=no
--socket-dir=./ --lua-dns-script=powerdns-example-script.lua

Known defects are:
postresolve() can't yet access the original dns rcode
there is no way for nodata() to set the TTL to the SOA minimum value
as specified by draft-ietf-behave-dns64

Please let us know your thoughts so we can make sure the API has everything
needed for great DNS64 and renumbering operations!

Kind regards,

Bert Hubert

About the author

Bert Hubert

Bert Hubert

Principal, PowerDNS


Related Articles

PowerDNS Recursor Security Advisory 2024-01

Today we have released PowerDNS Recursor 4.8.6, 4.9.3 and 5.0.2. These releases fix PowerDNS Security Advisory 2024-01:...

Otto Moerbeek Feb 13, 2024

PowerDNS Recursor 5.0.1 Released

We are proud to announce the release of PowerDNS Recursor 5.0.1! This is the first public release of the 5.0 branch....

Otto Moerbeek Jan 10, 2024

PowerDNS Recursor 5.0.0-rc2 Released

We are proud to announce the second release candidate of PowerDNS Recursor 5.0.0. Compared to the latest 4.9 release, this...

Otto Moerbeek Dec 20, 2023

PowerDNS Recursor 5.0.0-rc1 Released

We are proud to announce the first release candidate of PowerDNS Recursor 5.0.0. Compared to the latest 4.9 release, this...

Otto Moerbeek Dec 6, 2023