PDNSD(8)
π PDNSD(8) β the girlies' guide to the dns proxy daemon
ok so this is the manual page for pdnsd, from the System Administration Commands chapter. sit down bestie, we're learning DNS proxying today π
β¨ NAME β¨
pdnsd β dns proxy daemon. that's it, that's the whole name. iconic minimalism.
πΈ SYNOPSIS πΈ
pdnsd [-h] [-V] [-s] [-d] [-g] [-t] [-p file] [-vn] [-mxx] [-c file]
[-4] [-6] [-a]
okay real talk: this man page is literally just an extract of the pdnsd docs. if you want the complete, current documentation, go read the HTML (or plain text) version β it lives in the doc/ subdirectory of the source, or in a standard documentation directory, typically /usr/share/doc/pdnsd/ if you're running a binary package. no cap, go read that one too π«Ά
π¦ DESCRIPTION π¦
pdnsd is an IPv6 capable proxy domain name server (DNS) β and here's the cute part: it saves the contents of its DNS cache to the disk on exit. she remembers. main character energy fr fr β¨
π OPTIONS π
-4β enables IPv4 support. IPv6 support gets automatically disabled (should it be available). On by default.-6β enables IPv6 support. IPv4 support gets automatically disabled (should it be available). Off by default.-aβ with this one,pdnsdwill try to detect automatically if the system supports IPv6, and fall back to IPv4 otherwise. she adapts πββοΈ-Vor--versionβ print version information and exit. bye bestie π-cFILE or--config-file=FILEβ specifies that configuration is to be read from FILE. Default is/etc/pdnsd.conf.-dor--daemonβ startpdnsdin daemon mode (as a background process). lowkey the classic move.-gor--debugβ print some debug messages on the console, or to the filepdnsd.debugin your cache directory (in daemon mode). receipts! π-hor--helpβ print an option summary and exit.-iPREFIX or--ipv4_6_prefix=PREFIXβ specifies the prefixpdnsduses (when running in IPv6 mode) to map IPv4 addresses in the configuration file to IPv6 addresses. must be a valid IPv6 address. Default is::ffff:0.0.0.0.-pFILE β writes the pid the server runs as to the specified filename. Works only in daemon mode. β οΈ--pdnsd-userβ print the userpdnsdwill run as and exit.-sor--statusβ enables the status control socket. either this option should be passed to the command line, orstatus_ctl=on;should be specified in the config file, if you want to usepdnsd-ctl(8)to controlpdnsdat runtime. iykyk-tor--tcpβ enables the TCP server thread.pdnsdwill then serve TCP and UDP queries. double duty queen π-vnβ sets the verbosity ofpdnsd. n is a numeric argument between0(normal operation) to3(many messages for debugging). pick your chaos level π-mxxβ sets the query methodpdnsduses. possible values for xx are:uoβpdnsdwill use UDP only. This is the fastest method, and should be supported by all name servers on the Internet. speed demon β‘toβpdnsdwill use TCP only. TCP queries usually take more time than UDP queries, but are more secure against certain attacks, where an attacker tries to guess your query id and to send forged answers. TCP queries are not supported by some name servers.tuβpdnsdwill try to use TCP, and will fall back to UDP if its connection is refused or times out. she's got a backup plan πutβpdnsdwill try to use UDP, and will repeat the query using TCP if the UDP reply was truncated (i.e. thetcbit is set). This is the behaviour recommended by the DNS standards. periodt, standards-approved π
additionally, "no" can be prepended to the --status, --daemon, --debug and --tcp options (e.g. --notcp) to reverse their effect. yes, un-girlbossing an option is legal π
π USAGE π
pdnsd is usually run from a startup script. for pdnsd to work, You need to:-
- Tell your system to use
pdnsdas the primary DNS server by modifying/etc/resolv.conf. - Tell
pdnsdto use an authentic source for DNS records, by including the IP addresses of one or more DNS servers β usually your ISP's DNS servers β in/etc/pdnsd.conf.
for this, put the following line in your /etc/resolv.conf
nameserver 127.0.0.X
where X can be any number. (the original author uses 3, slay). comment out all other entries. you should put the same value in the server_ip= line in the global section of /etc/pdnsd.conf.
if you want to use pdnsd as the DNS server for a small local network, you should use the IP address or name of the interface connected to this network instead of 127.0.0.X.
to tell pdnsd where to get DNS information from, add the following lines in /etc/pdnsd.conf:-
server {
label= "myisp";
ip=123.456.789.001,123.456.789.002;
proxy_only=on;
timeout=10;
}
note the opening and closing braces β do NOT forget them, bestie, she will not forgive you π. add more such server sections for each set of DNS servers you want pdnsd to query. of course the configuration options shown here are just examples. more examples can be found in /etc/pdnsd.conf.sample or the pdnsd.conf in the documentation directory. see the pdnsd.conf(5) man page for all the possible options and their exact meaning.
if you use a dial up connection, remember that ppp scripts usually replace/etc/resolv.confwhen connection with the ISP is established. you need to configure ppp (or whatever you use to establish a connection) so that/etc/resolv.confis not replaced every time a connection is established. read the documentation for the scripts run when your network comes up. protect your config, she's fragile π₯Ί
if you use pppconfig, specify none in the nameservers option in the advanced tab. if you use multiple ISPs, you should do this for each connection/account.
if you use multiple ISPs, you should tell pdnsd which DNS servers have become available by calling pdnsd-ctl, the pdnsd control utility, in a script (e.g. /etc/ppp/ip-up when you use pppd) that is run when the connection is established. if the addresses of the DNS servers are obtained through some type of dynamic configuration protocol (e.g. pppd with the usepeerdns option or a DHCP client), you can pass the DNS server addresses as an extra argument to pdnsd-ctl to configure pdnsd at run time. see the pdnsd-ctl(8) man page for details. literally just hand her the addresses, she'll handle it π«Ά
π FILES π
/etc/pdnsd.confβ thepdnsdconfiguration file. the file format and configuration options are described in thepdnsd.conf(5)man page. you can find examples of almost all options in/etc/pdnsd.conf.sample./var/cache/pdnsd/pdnsd.cacheβ cache file, her little memory box./var/cache/pdnsd/pdnsd.statusβ the status control socket, which must be enabled before you can usepdnsd-ctl. β οΈ no enabling = no controlling./etc/init.d/pdnsdβ the start-up script. (the name and location of the start-up script may be different depending on your distribution.)/etc/resolv.confβ yeah. that one./etc/defaults/pdnsdβ contains additional parameters or options which may be passed topdnsdat boot time. this saves the hassle of fiddling with initscripts (not available on all distributions). convenient when it exists π
π BUGS π
the verbosity option -vn presently does not seem to have much effect on the amount of debug output. she's trying her best ok π
report any remaining bugs to the authors.
π CONFORMING TO π
pdnsd should comply with RFCs 1034 and 1035. as of version 1.0.0, RFC compliance has been improved and pdnsd is now believed (or hoped?) to be fully RFC compatible. it completely follows RFC 2181 (except for one minor issue in the FreeBSD port, see the documentation). we stan a standards girlie πβ¨
it does NOT support the following features, of which most are marked optional, experimental or obsolete in these RFCs:
- Inverse queries
- Status queries
- Completion queries
- Namespaces other than
IN(Internet) AXFRandIXFRqueries (whole zone transfers); sincepdnsddoes not maintain zones, that should not violate the standard
the following record types, that are extensions to the original DNS standard, are supported if given as options at compile time. (if you do not need them, you do not need to compile support for them into pdnsd, and you save cache and executable space β skinny legend behavior π§):
RP(responsible person, RFC1183)AFSDB(AFS database location, RFC1183)X25(X25 address, RFC1183)ISDN(ISDN number/address, RFC1183)RT(route through, RFC1183)NSAP(Network Service Access Protocol address , RFC1348)PX(X.400/RFC822 mapping information, RFC1995)GPOS(geographic position, deprecated)AAAA(IPv6 address, RFC1886)LOC(location, RFC1876)EID(Nimrod EID)NIMLOC(Nimrod locator)SRV(service record, RFC2782)ATMA(ATM address)NAPTR(URI mapping, RFC2168)KX(key exchange, RFC2230)
π SEE ALSO π
pdnsd-ctl(8), pdnsd.conf(5), pppconfig(8), resolv.conf(5)
more documentation is available in the doc/ subdirectory of the source, or in /usr/share/doc/pdnsd/ if you are using a binary package. read them, bestie, they're free π
π AUTHORS π
pdnsd was originally written by Thomas Moestl, <tmoestl@gmx.net>, and was extensively revised by Paul A. Rombouts <p.a.rombouts@home.nl> (for versions 1.1.8b1-par and later). legends only π
several others have contributed to pdnsd; see files in the source or /usr/share/doc/pdnsd/ directory.
this man page was written by Mahesh T. Pai <paivakil@yahoo.co.in> using the documents in /usr/share/docs/pdnsd/ directory for Debian, but can be used on other distributions too. versatile icon π
last revised: 22 Jul 2007 by Paul A. Rombouts.
β COPYRIGHT β
this man page is a part of the pdnsd package, and may be distributed in original or modified form under terms of the GNU General Public License, as published by the Free Software Foundation; either version 3, or (at your option) any later version.
you can find a copy of the GNU GPL in the file COPYING in the source or the /usr/share/common-licenses/ directory if you are using a Debian system. go read the license, it's giving responsible queen π
okay that's the whole page!! π¦ mwah π this was pdnsd 1.2.9b-par, dated Jul 2007, and you found it in the PDNSD(8) slot of your manual β go forth and proxy your DNS, bestie, you're literally gonna slay πΈβ¨π«Ά
π¦ where this page comes from
- arch rolling: pdnsd 1.2.9.a-16 Β· GPL-3.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms