dnsconfd(8)

πŸ“¦
version 1.7.5 Β· 3 versions
, in centos-stream 10, centos-stream 9, fedora 43, fedora 44

✨ dnsconfd β€” the manual page, but make it cute ✨

okay bestie, welcome to dnsconfd(8) πŸ’– this is the section 8 manual page for Dnsconfd, and we're gonna get you fully caught up, no cap.


🌸 NAME 🌸

Dnsconfd β€” the local DNS cache configuration daemon. she configures, she caches, she serves. πŸ‘‘


🌈 SYNOPSIS 🌈

dnsconfd [options]

that's it. that's the whole vibe. ✨


πŸ’œ DESCRIPTION πŸ’œ

okay so Dnsconfd is a local cache configuration daemon. what she does is implement the DBus interface of systemd-resolved, and then translate all of that usage into the configuration of the dns service. literally a translator but for daemons 🫢


πŸŽ€ OPTIONS πŸŽ€

  • -h, --help β€” shows you the help message and then dips. exit, stage left. πŸ’…
  • --dbus-name DBUS_NAME β€” the DBUS name that dnsconfd should use. default is com.redhat.dnsconfd
  • --log-level {DEBUG,INFO,WARN} β€” the log level of dnsconfd. default is INFO
  • --resolv-conf-path RESOLV_CONF_PATH β€” path to the resolv.conf that dnsconfd should manage. default is /etc/resolv.conf
  • --prioritize-wire, --no-prioritize-wire β€” if you set this to yes, then wireless interfaces get lower priority. default is yes
  • --listen-address ADDRESS β€” the address on which the local resolver listens. default is 127.0.0.1
  • --config-file PATH β€” the path where the config file lives. default is /etc/dnsconfd.conf
  • --resolver-options options β€” options to be used in resolv.conf for alteration of the resolver. default is "edns0 trust-ad"
  • --dnssec-enabled, --no-dnssec-enabled β€” enable dnssec record validation. default is no
  • --handle-routing, --no-handle-routing β€” dnsconfd will submit the necessary routes to the routing manager. default is yes
  • --stderr-log, --no-stderr-log β€” dnsconfd will write logs into stderr. default is yes
  • --journal-log, --no-journal-log β€” dnsconfd will send logs into the journal. default is no
  • --syslog-log β€” dnsconfd will send logs into the syslog destination specified by this option. by default it's disabled. you can specify either a linux domain socket with 'unix:<path>', where path will usually be /dev/log on your system, or you can use tcp or udp protocols like '<transport_protocol>:<host>:<port>', where 'transport_protocol' is either tcp or udp, host can be an ipv4 address, an ipv6 address in square brackets, or a hostname, and the port is where the syslog daemon is listening. examples, bestie: udp:localhost:514, udp:[::1]:514, tcp:127.0.0.1:514, tcp:myhost.example.com:514 ✨
  • --file-log β€” dnsconfd will write logs into the specified file. not used by default.
  • --api-choice β€” dnsconfd will switch between APIs. the allowed options are resolve1 and dnsconfd. default is dnsconfd
  • --certification-authority β€” a space separated list of CA bundles used for encrypted protocols as the default when no custom CA was specified. the first one that can be accessed will be used. default is /etc/pki/dns/extracted/pem/tls-ca-bundle.pem /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem

πŸ’€ EXIT STATUS πŸ’€

she tells you exactly how it went, fr fr:

  • 0 β€” graceful stop. 🫢
  • 8 β€” DNS caching service failure. the service crashed, for example.
  • 9 β€” failed communication through DBUS. 😭
  • 10 β€” failed interaction with resolv.conf.
  • 11 β€” failed to configure the dns cache service.
  • 12 β€” failed to set up the necessary routes.
  • 13 β€” bad arguments. πŸ™ˆ

πŸ¦‹ ENVIRONMENT πŸ¦‹

okay so the tea here is: environment variables have lower priority than command line options, but higher priority than the configuration file. and the boolean options recognize 'yes' or '1' as True, while all other values are considered as False. periodt.

  • DBUS_NAME β€” DBUS name that dnsconfd should use. default is org.freedesktop.resolve1
  • LOG_LEVEL β€” log level of dnsconfd. default is INFO
  • RESOLV_CONF_PATH β€” path to the resolv.conf that dnsconfd should manage. default is /etc/resolv.conf
  • PRIORITIZE_WIRE β€” if set to yes, then wireless interfaces will have lower priority. default is yes
  • LISTEN_ADDRESS β€” address on which the local resolver listens. default is 127.0.0.1
  • CONFIG_FILE β€” path where the config file is located. default is /etc/dnsconfd.conf
  • RESOLVER_OPTIONS β€” options to be used in resolv.conf for alteration of the resolver. default is "edns0 trust-ad"
  • DNSSEC_ENABLED β€” enable dnssec record validation. default is no
  • HANDLE_ROUTING β€” dnsconfd will submit the necessary routes to the routing manager. default is yes
  • STDERR_LOG β€” dnsconfd will write logs into stderr. default is yes
  • JOURNAL_LOG β€” dnsconfd will send logs into the journal. default is no
  • SYSLOG_LOG β€” dnsconfd will send logs into the syslog destination specified by this option. by default it's disabled. for the destination specification syntax, go peek at the command line option. πŸ‘€
  • FILE_LOG β€” dnsconfd will write logs into the specified file. not used by default.
  • API_CHOICE β€” dnsconfd will switch between APIs. the allowed options are resolve1 and dnsconfd. default is resolve1

πŸ“ FILES πŸ“

Dnsconfd manages resolv.conf to route domain name resolution to the local cache service. the default location of the configuration file is /etc/dnsconfd.conf. πŸ’–


🧚 ROUTING 🧚

by default, Dnsconfd submits routes through NetworkManager, so the system contacts DNS servers through the right interfaces. this behaviour can be turned off by setting the handle_routing option to 'no'. ✨


🌟 NOTES 🌟

the only currently supported backend is Unbound. that's the one. the only one. πŸ’…

and okay, so even though the default is to use stderr for logs and not the journal, the service is distributed with a sysconfig file that reverses this behaviour, so when you're running the Dnsconfd service you get the advantages of direct journal logs. iconic.

🌸 Installation 🌸

if you have systemd-resolved installed, then bestie, you have to disable it first. no way around it.

# systemctl disable --now systemd-resolved

stop systemd-resolved and disable its start on boot. πŸ›‘

# systemctl mask systemd-resolved

mask the service so there are no conflicts.

# dnsconfd config install

this modifies NetworkManager to explicitly use the systemd-resolved dbus API, and changes ownership of resolvconf so that Dnsconfd does not need root privileges. slay. πŸ‘‘

# systemctl enable --now dnsconfd

starts Dnsconfd and enables its startup on boot. πŸ”₯


😭 REPORTING BUGS 😭

please, for reporting bugs, use the Github repository at https://github.com/InfrastructureServices/dnsconfd. she wants your bug reports, fr fr. 🫢


πŸ‘‘ SEE ALSO πŸ‘‘


Copyright (c) 2023 Red Hat, Inc.


and that's the whole page bestie!! this was dnsconfd version dnsconfd-1.7.5, dated 07 Jan 2026, from the dnsconfd(8) manual β€” you're officially caught up, go configure something cute πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from