PDNS_RECURSOR(1)
π¦ PDNS_RECURSOR(1) β the PowerDNS Recursor binary, bestie edition π¦
okay so grab a snack because we're about to talk about pdns_recursor(1) from the PowerDNS Recursor manual, and honestly? she's iconic. π
β¨ NAME β¨
pdns_recursor β literally just. the PowerDNS Recursor binary. that's her. that's the girl. π
β¨ SYNOPSIS β¨
pdns_recursor [OPTION]...
yes bestie, it's just options. all the options. we love a flexible queen. π
β¨ DESCRIPTION β¨
pdns_recursor is a high performance, simple and secure recursing nameserver. no cap β she currently powers hundreds of millions of internet connections. like, hundreds of millions. insane. π₯
so here's the tea: the recursor gets configured through a configuration file, BUT every single item in that file can be overridden on the command line. every one. main character energy fr fr. π
this manpage covers the core set of features you need to actually get the PowerDNS Recursor working. for the full and up-to-date details, go to <https://doc.powerdns.com/> β that's where the whole lore lives. π«Ά
β¨ EXAMPLES β¨
want to listen on 192.0.2.53, let the 192.0.2.0/24 subnet recurse, and run in the background? say less:
# pdns_recursor --local-address=192.0.2.53 --allow-from=192.0.2.0/24 --daemon
and to stop the recursor by hand, you run:
# rec_control quit-nicely
but ngl, the recommended way of starting and stopping the recursor is to use systemctl(1) or the init.d script. do it the proper way bestie, she deserves it. π
β¨ OPTIONS β¨
for the authoritative listing of options, consult the online documentation at <https://doc.powerdns.com/> β that's the source of truth, periodt.
--allow-from=<networks>β if you set this, only these comma separated networks (with their network mask, bestie) get to recurse. for example:192.0.2.0/24,203.0.113.128/25. gatekeeping, but make it DNS. π--auth-zones=<authzones>β where authzone looks like<zonename>=<filename>. servezonenamefromfilenameauthoritatively. for example:ds9a.nl=/var/zones/ds9a.nl,powerdns.com=/var/zones/powerdns.com.--chroot=<directory>β chroot the process todirectory. cozy little jail, but for security. π--client-tcp-timeout=<num>β timeout in seconds when talking to TCP clients.--configβ show the current configuration. and since 4.8.0 there are three optional values:--config=defaultto show the default configuration,--config=diffto show modified options in the current configuration, and--config=checkto check the current configuration for errors. three flavors, all valid. β--config-dir=<directory>β location of the configuration directory (recursor.conf). the default depends on theSYSCONFDIRoption at build-time, which is usually/etc/powerdns. you can find the default withpdns_recursor --config | grep ' config-dir='.--daemonβ operate as a daemon. she's independent now. π--export-etc-hostsβ if set, this flag will export the hostnames and IP addresses mentioned in/etc/hosts.--forward-zones=<forwardzones>β where forwardzone is<zonename>=<address>. queries forzonenameget forwarded toaddress.addressshould be an IP address, not a hostname (this is to prevent chicken and egg problems ππ₯). example:forward-zones= ds9a.nl=213.244.168.210, powerdns.com=127.0.0.1.--forward-zones-file=<filename>β same vibe as--forward-zones, but it reads the options fromfilename.filenameshould contain one zone per line, like:ds9a.nl=213.244.168.210.--helpβ show a summary of options. when in doubt, ask. π«Ά--hint-file=<filename>β load root hints from thisfilename.--local-address=<address>β listen onaddress, separated by spaces or commas. addresses you specify can include port numbers; any which do NOT include port numbers will listen on--local-port.--local-port=<port>β listen onport.--log-common-errorsβ if we should log rather common errors.--max-cache-entries=<num>β maximum number of entries in the main cache.--max-negative-ttl=<num>β maximum number of seconds to keep a negative cached entry in memory.--max-tcp-clients=<num>β maximum number of simultaneous TCP clients.--max-tcp-per-client=<num>β if set, maximum number of TCP sessions per client (IP address).--query-local-address=<address[,address...]>β useaddressas the Source IP address when sending queries.--quietβ suppress logging of questions and answers. sometimes silence really is the vibe. π€«--server-id=<text>β returntextwhen queried for'id.server'TXT, defaults to hostname.--serve-rfc1918β on by default, this makes the server authoritatively aware of:10.in-addr.arpa,168.192.in-addr.arpaand16-31.172.in-addr.arpa, which saves load on the AS112 servers. individual parts of these zones can still be loaded or forwarded. lowkey doing AS112 a huge favor. π--setgid=<gid>β if set, change group id togidfor more security.--setuid=<uid>β if set, change user id touidfor more security.--single-socketβ if set, only use a single socket for outgoing queries.--socket-dir=<directory>β the controlsocket will live indirectory.--spoof-nearmiss-max=<num>β if non-zero, assume spoofing after this many near misses. scary but necessary. π--traceβ if we should output heaps of logging. heaps. not a little. HEAPS.--version-string=<text>βtextWILL be reported onversion.pdnsorversion.bindqueries. will. be. reported. β
β¨ SEE ALSO β¨
rec_control(1) Β· systemctl(1) Β· <https://docs.powerdns.com/recursor>
go read those too, bestie, they're part of the cinematic universe. π
β¨ AUTHOR β¨
PowerDNS.COM BV π
β¨ COPYRIGHT β¨
PowerDNS.COM BV π
and that's the whole page, no skips, no summaries, every single flag accounted for. ate and left zero crumbs. π β¨
this little love letter was written by the fine people at PowerDNS.COM BV and dated Oct 05, 2026 β it's the PDNS_RECURSOR(1) page, and you read the whole thing. so proud of you. mwah. ππ¦πΈ
π¦ where this page comes from
- alpine 3.24: pdns-recursor-doc 5.4.8-r0 Β· GPL-2.0-only WITH OpenSSL-Exception
- arch rolling: powerdns-recursor 5.4.8-1 Β· GPL-2.0-only
- epel 10: pdns-recursor 5.4.8-1.el10_3 Β· GPL-2.0-only
- fedora 44: pdns-recursor 5.4.8-1.fc44 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms