DNSPROXY(8)

πŸ’– DNSPROXY πŸ’–

okay bestie, welcome to dnsproxy(8) β€” it lives in the System Manager's Manual section and it's literally a DNS proxy, no cap. Let me spill everything you need to know, and yes, I kept every single detail because I would never do you like that. 🫢


✨ NAME ✨

dnsproxy β€” DNS proxy. that's it, that's the whole vibe. short, iconic, to the point. πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

dnsproxy [-dhV] [-c file]

like, that's the whole command. look at her. so compact. so powerful. 😌


🌸 DESCRIPTION 🌸

okay so picture this: the dnsproxy daemon just sits there, patiently waiting for nameserver queries on an address you picked out, then it dispatches those queries off to authoritative and recursive nameservers, and when the answers come back it forwards them straight to the original client. she's the middlewoman. the connector. the main character, honestly. ✨

the options are as follows:

  • -c file β€” read the configuration from file.
  • -d β€” detach from the current terminal and run as a background process. bye bestie, she's going ghost mode. πŸ‘»
  • -h β€” show usage.
  • -V β€” show version.

now here's the important lore πŸ”₯: if a client from an internal IP address does a recursive lookup, the query gets forwarded to a recursive DNS server. but authoritative queries β€” and literally any query coming from clients in foreign networks β€” get forwarded to an authoritative DNS server. internal girlies get the recursive treatment, outsiders get authoritative. iykyk. πŸ’œ


πŸŽ€ CONFIGURATION FILE πŸŽ€

at startup, dnsproxy reads a configuration file. you can point her at it with the -c option, or she'll just go to the default location which is /etc/dnsproxy.conf. (yes, she has a usual spot. don't judge.)

the following keywords are recognized:

  • authoritative IP β€” address of the authoritative nameserver. [required] 🚨 like, you cannot skip this one.
  • recursive IP β€” address of the recursive nameserver. [required] 🚨 also non-negotiable.
  • listen IP β€” local address (defaults to 0.0.0.0).
  • port number β€” local port number (defaults to 53).
  • chroot path β€” a path to chroot to before starting to answer queries. locking it down, periodt. πŸ”’
  • user name β€” a user to change to before starting to answer queries.
  • authoritative-timeout seconds β€” time in seconds when authoritative queries time out (defaults to 10).
  • recursive-timeout seconds β€” time in seconds when recursive queries time out (defaults to 90).
  • authoritative-port number β€” port number on authoritative nameserver (defaults to 53).
  • recursive-port number β€” port number on recursive nameserver (defaults to 53).
  • statistics seconds β€” period between output of statistics (defaults to 3600). use 0 to disable output of statistics completely. (silence era. 🀫)
  • internal network β€” declare networks recognized as internal and thus eligible to do recursive queries. one network in CIDR notation per keyword.

🌈 EXAMPLE 🌈

authoritative 10.1.1.1
recursive 127.0.0.1
recursive-port 10053
listen 192.168.1.1
port 53
chroot /var/empty
user nobody
internal 192.168.1.0/24
internal 127.0.0.1

ate. no crumbs. πŸ‘‘


⭐ STATISTICS ⭐

every hour (by default) dnsproxy logs the collected statistics about its usage to standard error β€” or to syslog when she's running detached. the statistics look like this:

ActiveQr AuthorQr RecursQr AllQuery Answered
0        0        0        0        0
TimeoutQ DroppedQ DroppedA LateAnsw HashColl
0        0        0        0        0

and here's what every single one of them means, because i'm not leaving you guessing bestie:

  • ActiveQr β€” number of currently active queries proxied to the servers.
  • AuthorQr β€” accumulated number of authoritative queries.
  • RecursQr β€” accumulated number of recursive queries.
  • AllQuery β€” accumulated number of all queries ever received.
  • Answered β€” accumulated number of answered queries.
  • TimeoutQ β€” accumulated number of queries that did not receive an answer in time. 😭
  • DroppedQ β€” accumulated number of dropped queries (e.g. transmission errors).
  • DroppedA β€” accumulated number of dropped answers.
  • LateAnsw β€” accumulated number of answers received after the timeout period. fashionably late, but still late. πŸ’€
  • HashColl β€” accumulated number of hash collisions in the query list.

🧚 SEE ALSO 🧚


πŸ’œ VERSION πŸ’œ

this manual page describes dnsproxy version 1.17. current. fresh. relevant. ✨


🫢 AUTHORS 🫢

Armin Wolfermann <armin@wolfermann.org>

the dnsproxy homepage is at http://www.wolfermann.org/dnsproxy.html. go give it a little visit, she deserves the clicks. 🌈


and that's the whole page, bestie!! πŸ’– this was from the LOCAL crew, dated November 29, 2003, and it covers DNSPROXY(8) β€” and yes, the source and version and date all got their moment because i would never leave you hanging on the receipts. now go proxy some DNS. slay. πŸŽ€πŸ’…πŸ”₯