2. Resource Requirements

2.1. Hardware Requirements

DNS hardware requirements have traditionally been quite modest. For many installations, servers that have been retired from active duty have performed admirably as DNS servers.

However, the DNSSEC features of BIND 9 may be quite CPU-intensive, so organizations that make heavy use of these features may wish to consider larger systems for these applications. BIND 9 is fully multithreaded, allowing full utilization of multiprocessor systems for installations that need it.

2.2. CPU Requirements

CPU requirements for BIND 9 range from i386-class machines, for serving static zones without caching, to enterprise-class machines to process many dynamic updates and DNSSEC-signed zones, serving many thousands of queries per second.

2.3. Memory Requirements

Server memory must be sufficient to hold both the cache and the zones loaded from disk. The max-cache-size option can limit the amount of memory used by the cache, at the expense of reducing cache hit rates and causing more DNS traffic. It is still good practice to have enough memory to load all zone and cache data into memory; unfortunately, the best way to determine this for a given installation is to watch the name server in operation. After a few weeks, the server process should reach a relatively stable size where entries are expiring from the cache as fast as they are being inserted.

2.4. Name Server-Intensive Environment Issues

For name server-intensive environments, there are two configurations that may be used. The first is one where clients and any second-level internal name servers query the main name server, which has enough memory to build a large cache; this approach minimizes the bandwidth used by external name lookups. The second alternative is to set up second-level internal name servers to make queries independently. In this configuration, none of the individual machines need to have as much memory or CPU power as in the first alternative, but this has the disadvantage of making many more external queries, as none of the name servers share their cached data.

2.5. Supported Platforms

The current support status of BIND 9 versions across various platforms can be found in the ISC Knowledgebase:

https://kb.isc.org/docs/supported-platforms

In general, this version of BIND will build and run on any POSIX-compliant system with a C11-compliant C compiler, BSD-style sockets with RFC-compliant IPv6 support, POSIX-compliant threads, and the required libraries.

The following C11 features are used in BIND 9:

  • Atomic operations support, either in the form of C11 atomics or __atomic builtin operations.

  • Thread Local Storage support, either in the form of C11 _Thread_local/thread_local, or the __thread GCC extension.

The C11 variants are preferred.

ISC regularly tests BIND on many operating systems and architectures, but lacks the resources to test all of them. Consequently, ISC is only able to offer support on a “best-effort” basis for some.

2.5.1. Regularly Tested Platforms

Current versions of BIND 9 are fully supported and regularly tested on the following systems:

  • Debian 10, 11

  • Ubuntu LTS 18.04, 20.04, 22.04

  • Fedora 37

  • Red Hat Enterprise Linux / CentOS / Oracle Linux 7, 8, 9

  • FreeBSD 12.4, 13.1

  • OpenBSD 7.2

  • Alpine Linux 3.17

The amd64, i386, armhf, and arm64 CPU architectures are all fully supported.

2.5.2. Best-Effort

The following are platforms on which BIND is known to build and run. ISC makes every effort to fix bugs on these platforms, but may be unable to do so quickly due to lack of hardware, less familiarity on the part of engineering staff, and other constraints. None of these are tested regularly by ISC.

  • macOS 10.12+

  • Solaris 11

  • NetBSD

  • Other Linux distributions still supported by their vendors, such as:

    • Ubuntu 20.10+

    • Gentoo

    • Arch Linux

  • OpenWRT/LEDE 17.01+

  • Other CPU architectures (mips, mipsel, sparc, …)

2.5.3. Community-Maintained

These systems may not all have the required dependencies for building BIND easily available, although it is possible in many cases to compile those directly from source. The community and interested parties may wish to help with maintenance, and we welcome patch contributions, although we cannot guarantee that we will accept them. All contributions will be assessed against the risk of adverse effect on officially supported platforms.

  • Platforms past or close to their respective EOL dates, such as:

    • Ubuntu 14.04, 16.04 (Ubuntu ESM releases are not supported)

    • CentOS 6

    • Debian 8 Jessie, 9 Stretch

    • FreeBSD 10.x, 11.x

2.6. Unsupported Platforms

These are platforms on which current versions of BIND 9 are known not to build or run:

  • Platforms without at least OpenSSL 1.0.2

  • Windows

  • Solaris 10 and older

  • Platforms that do not support IPv6 Advanced Socket API (RFC 3542)

  • Platforms that do not support atomic operations (via compiler or library)

  • Linux without NPTL (Native POSIX Thread Library)

  • Platforms on which libuv cannot be compiled

2.7. Installing BIND 9

Building BIND 9 contains complete instructions for how to build BIND 9.

The ISC Knowledgebase contains many useful articles about installing BIND 9 on specific platforms.