NAMED(8)

โœจ NAMED(8) โœจ

okay bestie, buckle up โ€” this is named, the Internet domain name server, aka the whole reason your WiFi doesn't just vibe into the void ๐Ÿ’…


๐ŸŒธ NAME ๐ŸŒธ

named โ€” Internet domain name server


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

named [ [-4] | [-6] ] [-c config-file] [-C] [-d debug-level] [-D string]
[-E engine-name] [-f] [-g] [-L logfile] [-M option] [-m flag] [-n #cpus]
[-p port] [-s] [-t directory] [-u user] [-v] [-V] ]

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

So named is a Domain Name System (DNS) server โ€” it's literally part of the BIND 9 distribution from ISC. If you wanna know more about the DNS in general, go read RFC 1033 at https://datatracker.ietf.org/doc/html/rfc1033.html, RFC 1034 at https://datatracker.ietf.org/doc/html/rfc1034.html, and RFC 1035 at https://datatracker.ietf.org/doc/html/rfc1035.html. iykyk ๐Ÿ“š

When you invoke it with no arguments at all, named reads the default configuration file /etc/bind/named.conf, reads any initial data, and then just... listens for queries. main character energy honestly ๐Ÿ‘‘


๐Ÿ’– OPTIONS ๐Ÿ’–

  • -4 โ€” tells named to use only IPv4, even if the host machine is perfectly capable of IPv6. and just so you know, -4 and -6 are mutually exclusive, so pick one, bestie ๐Ÿซถ
  • -6 โ€” tells named to use only IPv6, even if the host machine is perfectly capable of IPv4. same deal: -4 and -6 are mutually exclusive โœจ
  • -c config-file โ€” tells named to use config-file as its configuration file instead of the default /etc/bind/named.conf. and listen: to make sure the config file can still be reloaded after the server has changed its working directory (which can happen because of a possible directory option in the config file), config-file should be an absolute pathname. absolute. not vibes-based. ๐ŸŽฏ
  • -C โ€” prints out the default built-in configuration and exits.
โš ๏ธ NOTE: this is for debugging purposes only and is not an accurate representation of the actual configuration used by named at runtime. don't be fooled, bestie ๐Ÿ™ˆ
  • -d debug-level โ€” sets the daemon's debug level to debug-level. the more you crank the debug level, the more verbose the debugging traces from named get. it's giving "the volume knob goes to 11" ๐Ÿ”Š
  • -D string โ€” specifies a string that's used to identify an instance of named in a process listing. and like... the contents of string are not examined. at all. it's just a name tag ๐Ÿท๏ธ
  • -E engine-name โ€” when applicable, specifies the hardware to use for cryptographic operations, like a secure key store used for signing. when BIND 9 is built with OpenSSL, this needs to be set to the OpenSSL engine identifier that drives the cryptographic accelerator or hardware service module (usually pkcs11). slay ๐Ÿ”
  • -f โ€” runs the server in the foreground (i.e., do not daemonize). periodt.
  • -F โ€” turns on FIPS (US Federal Information Processing Standards) mode if the underlying cryptographic library supports running in FIPS mode.
  • -g โ€” runs the server in the foreground and forces all logging to stderr. double duty ๐Ÿ’…
  • -L logfile โ€” sets the log to the file logfile by default, instead of the system log.
  • -M option โ€” sets the default (comma-separated) memory context options. the possible flags are:
    • fill: fill blocks of memory with tag values when they're allocated or freed, to assist debugging of memory problems; this is the implicit default if named has been compiled with --enable-developer.
    • nofill: disable the behavior enabled by fill; this is the implicit default unless named has been compiled with --enable-developer.
  • -m flag โ€” turns on memory usage debugging flags. the possible flags are usage, trace and record. these correspond to the ISC_MEM_DEBUGXXXX flags described in <isc/mem.h>. ๐Ÿง 
  • -n #cpus โ€” creates #cpus worker threads to take advantage of multiple CPUs. if not specified, named tries to determine the number of CPUs present and creates one thread per CPU. and if it can't figure out the number of CPUs? a single worker thread is created. it tried its best ๐Ÿ˜ญ
  • -p value โ€” specifies the port(s) on which the server will listen for queries. here's the breakdown, bestie:
    • if value is of the form <portnum> or dns=<portnum>, the server listens for DNS queries on portnum; if not specified, the default is port 53.
    • if value is of the form tls=<portnum>, the server listens for TLS queries on portnum; the default is 853.
    • if value is of the form https=<portnum>, the server listens for HTTPS queries on portnum; the default is 443.
    • if value is of the form http=<portnum>, the server listens for HTTP queries on portnum; the default is 80.

(yes the original says "if not not specified" and honestly? same, girl. anyway, you get it ๐Ÿ’€)

  • -s โ€” writes memory usage statistics to stdout on exit.
๐Ÿ’ก Note: this option is mainly of interest to BIND 9 developers and may be removed or changed in a future release. so like... don't build your whole personality on it ๐Ÿซ 
  • -t directory โ€” tells named to chroot to directory after processing the command-line arguments, but before reading the configuration file.
๐Ÿšจ Warning: this option should be used in conjunction with the -u option, because chrooting a process running as root doesn't enhance security on most systems โ€” the way chroot is defined allows a process with root privileges to escape a chroot jail. no cap, that's literally how it works ๐Ÿ”“
  • -U #listeners โ€” this option has been removed. attempts to use it now result in a warning. it's gone, girl, let it go ๐Ÿ‘‹
  • -u user โ€” sets the setuid to user after completing privileged operations, such as creating sockets that listen on privileged ports.
๐Ÿ’ก Note: on Linux, named uses the kernel's capability mechanism to drop all root privileges except the ability to bind to a privileged port and set process resource limits. unfortunately, this means the -u option only works when named is run on kernel 2.2.18 or later, or kernel 2.3.99-pre3 or later, since previous kernels did not allow privileges to be retained after setuid. ancient history fr fr ๐Ÿฆ•
  • -v โ€” reports the version number and exits.
  • -V โ€” reports the version number, build options, supported cryptographic algorithms, and exits. the full tea โ˜•
  • -X lock-file โ€” this option has been removed and using it will cause a fatal error. not a warning. a fatal error. do not test her ๐Ÿ’€

๐ŸŒˆ SIGNALS ๐ŸŒˆ

okay so in routine operation, signals should not be used to control the nameserver โ€” use rndc instead. that's the vibe. ๐Ÿ”ฎ

  • SIGHUP โ€” forces a reload of the server.
  • SIGINT, SIGTERM โ€” shut down the server.

and the result of sending any other signals to the server? undefined. literally undefined. don't do it ๐Ÿ™


๐Ÿ“ CONFIGURATION ๐Ÿ“

the named configuration file is too complex to describe in detail here (iconic, honestly โ€” it said "not in this essay"). a complete description is provided in the BIND 9 Administrator Reference Manual. go read it, bestie ๐Ÿ“–

named inherits the umask (file creation mode mask) from the parent process. so if files created by named, such as journal files, need to have custom permissions, the umask should be set explicitly in the script used to start the named process. set it yourself, don't make her guess ๐Ÿ’…


๐Ÿงš FILES ๐Ÿงš

  • /etc/bind/named.conf โ€” the default configuration file.
  • /var/run/named.pid โ€” the default process-id file.

โญ SEE ALSO โญ

RFC 1033 at https://datatracker.ietf.org/doc/html/rfc1033.html, RFC 1034 at https://datatracker.ietf.org/doc/html/rfc1034.html, RFC 1035 at https://datatracker.ietf.org/doc/html/rfc1035.html, named-checkconf(8), named-checkzone(8), rndc(8), named.conf(5), BIND 9 Administrator Reference Manual. the whole friend group ๐Ÿซถ


๐Ÿ‘‘ Author ๐Ÿ‘‘

Internet Systems Consortium

2026, Internet Systems Consortium


and that's the whole page, bestie! this version is from BIND 9.20.30, dated 2026-10-12 โ€” go forth and resolve some names ๐Ÿ’–โœจ๐ŸŒธ

๐Ÿ“ฆ where this page comes from