DNSDIST(1)
π DNSDIST(1) β the dnsdist manual, bestie edition
okay so this is the manual page for dnsdist, from section 1 of the manual (that's the "user commands" section, iykyk). it's a DNS and DoS aware, scriptable loadbalancer and honestly? she's iconic. let's get into it π
β¨ NAME β¨
dnsdist β a DNS and DoS aware, scriptable loadbalancer π
π¦ SYNOPSIS π¦
dnsdist [<option>...] [address]...
πΈ DESCRIPTION πΈ
okay so here's the whole vibe: dnsdist receives DNS queries and relays them to one or more downstream servers. then it sends the responses right back to whoever asked originally. main character energy, fr fr.
she operates over TCP and UDP, and she strives to deliver very high performance over both. no cap, that's the goal.
right now, queries get sent to the downstream server with the least outstanding queries. which is lowkey just load balancing with extra steps β it makes sure slower servers get fewer queries. love that for us π«Ά
if a reply hasn't come in after a few seconds, it gets removed from the queue. but heads up, in the short term, timeouts do cause a server to get less traffic. so like, ghosting has consequences π
IPv4 and IPv6 operation can be mixed and matched β in other words, queries coming in over IPv6 could be forwarded to IPv4 and vice versa. she's flexible like that β¨
and she's scriptable in Lua! see the dnsdist documentation for more info on that.
π₯ SCOPE π₯
real talk: dnsdist does not 'think' about DNS queries. she restricts herself to measuring response times and error codes and routing questions accordingly. that's it. that's the job. she also comes with a very high performance packet-cache π
the goal for dnsdist is to remain simple. if you need more powerful loadbalancing, dedicated hardware or software is recommended β Linux Virtual Server for example is often mentioned. know your limits bestie π
π OPTIONS π
-a <netmask>,--acl <netmask>β add netmask to the ACL.-C <file>,--config <file>β load configuration from file.--check-configβ test the configuration file (which may be set with--configor-C) for errors.dnsdistwill show the errors and exit with a non-zero exit-code when errors are found.-c <address>,--client <address>β operate as a client, connect todnsdist. this will read thednsdistconfiguration for thecontrolSocketstatement and connect to it. when address (with an optional port number) is set,dnsdistwill connect to that instead.-k <key>,--setkey <key>β when operating as a client (-c,--client), use key as shared secret to connect todnsdist. this should be the same key that is used on the server (set withsetKey()). β οΈ note that this will leak the key into your shell's history and into the systems running process list. only available whendnsdistis compiled withlibsodiumorlibcryptosupport.-e,--execute <command>β connect todnsdistand execute command.-h,--helpβ display a helpful message and exit.-l,--local <address>β bind to address. supply as many addresses (using multiple--localstatements) to listen on as required. specify IPv4 as0.0.0.0:53and IPv6 as[::]:53.--supervisedβ run in foreground, but do not spawn a console. use this switch to rundnsdistinside a supervisor (use with e.g.systemdanddaemontools).--disable-syslogβ disable logging to syslog. use this when running inside a supervisor that handles logging (likesystemd).--log-timestampsβ prepend timestamps to messages logged to standard out.--structured-logging <true|false>β whether to enable structured logging.--structured-logging-backend <backend>β the backend to use when structured logging is enabled. supported values are'default','json'and'systemd-journal'.-u,--uid <uid>β change the process user to uid after binding sockets. uid can be a name or number.-g,--gid <gid>β change the process group to gid after binding sockets. gid can be a name or number.-V,--versionβ show thednsdistversion and exit.-v,--verboseβ be verbose.
and one more thing that isn't a flag but you gotta know about:
address are any number of downstream DNS servers, in the same syntax as used with --local. if the port is not specified, 53 is used. π
π BUGS π
right now, the TCP support has some rather arbitrary limits. yeah. we know. it's giving "we'll fix it later" π
β RESOURCES β
website: https://dnsdist.org
π AUTHOR π
PowerDNS.COM BV and its contributors π«Ά
π COPYRIGHT π
PowerDNS.COM BV and its contributors
and that's the whole page bestie!! mwah π this shipped as part of the dnsdist docs, dated Oct 12, 2026 β go slay some queries β¨π
π¦ where this page comes from
- arch rolling: dnsdist 2.1.3-1 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms