CURVEDNS(8)

πŸ’– CURVEDNS(8) β€” the group chat guide to curvedns

okay so this is curvedns(8), from the System Manager's Manual (section 8, system manager land, we love a system manager). she's a whole daemon, she's high-speed, she's high-security, she's elliptic-curve, and she's about to forward your DNS like nobody's business. let's get into it bestie πŸ¦‹


✨ NAME ✨

curvedns β€” high-speed high-security elliptic-curve cryptography DNS server. yes that is the whole vibe. no notes. πŸ’…


🌈 SYNOPSIS 🌈

curvedns listening_IPs listening_port target_DNS_server_IP target_DNS_server_port

four arguments. all mandatory. she does not do optional here. πŸ™ˆ


πŸŽ€ DESCRIPTION πŸŽ€

curvedns(8) is a daemon that implements the DNSCurve protocol, and she acts as a forwarder to an authoritative DNS server. main character energy fr.

the daemon is started with four mandatory command line arguments, and here they are, in order, no skips:

  • listening_IPs β€” the IP addresses on which CurveDNS should listen. if you have more than one IP address, separate them by a comma (,). heads up: both IPv4 and IPv6 addresses can be used. valid inputs are, for example: 192.168.0.1 and fe80::1,10.3.11.86. and if you want CurveDNS to listen on all IP addresses, use 0.0.0.0 (for IPv4 hosts) or :: (for IPv6 hosts).
  • listening_port β€” the port number on which CurveDNS should listen. if you want to use a port number beneath 1024, you must be root β€” but not forever, bestie: nevertheless, CurveDNS will eventually drop the root privileges once it has done all the tasks that need root. she's responsible like that. πŸ’œ
  • target_DNS_server_IP β€” this is the IP address of the authoritative name server we are forwarding non-DNSCurve queries to. this can be either an IPv4 or IPv6 address. either one, she's flexible. ✨
  • target_DNS_server_port β€” the port number of the authoritative name server we are forwarding for. usually this will be 53. the classic. the icon. πŸ‘‘

🧚 ENVIRONMENT VARIABLES 🧚

curvedns(8) does not use a configuration files. nope! instead, all remaining configuration uses environment variables. it's giving ✨config but make it vibes✨.

Mandatory environment variables:

  • CURVEDNS_PRIVATE_KEY β€” the hexadecimal representation of the server's private (secret) key. okay so this one is not optional, do not forget her, do not lose her, do not post her in the group chat. πŸ”

Optional environment variables:

  • CURVEDNS_INTERNAL_TIMEOUT β€” number of seconds when to consider the target server has timeout (default: 1.2)
  • CURVEDNS_UDP_TRIES β€” total number of tries towards the target server before we drop the query (default: 2)
  • CURVEDNS_TCP_NUMBER β€” number of simultaneous TCP connections that are allowed (default: 25)
  • CURVEDNS_TCP_TIMEOUT β€” number of seconds before the TCP session to the client times out (default: 60.0)
  • CURVEDNS_SHARED_SECRETS β€” number of shared secrets that can be cached (default: 5000)

depending on your query load and the number of clients, increasing the number of cached shared secrets can improve performance. it is a good idea to temporarily set the debug level (see next option) to debug when you alter this value. using this level, curvedns will log the amount of memory it reserved for the shared secret cache during startup. in this way you can check whether this will suit your system's physical memory boundaries. so yeah β€” peek before you yeet. πŸ‘€

  • CURVEDNS_DEBUG β€” the debug level to control what events to log (default : 2)

available debug levels: 1 (fatal), 2 (error), 3 (warning), 4 (info), 5 (debug)

  • CURVEDNS_SOURCE_IP β€” the IP address CurveDNS will use as source IP address when it forwards the query to the authoritative name server (default: let kernel decide). letting the kernel decide is lowkey the most chill option, tbh. 🌸

🫢 SEE ALSO 🫢


πŸ‘‘ MANPAGE AUTHOR πŸ‘‘

Stephane Neveu stefneveu@gmail.com


and that's the whole page, bestie!! πŸŽ€ she's from the System Manager's Manual, she's dated July 2026, and she'll live forever as CURVEDNS(8) in your heart (and in your man pages) πŸ’– mwah, go encrypt something gorgeous βœ¨πŸ¦‹

πŸ“¦ where this page comes from