summaryrefslogtreecommitdiffstats
path: root/doc/notes/notes-9.18.0.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/notes/notes-9.18.0.rst')
-rw-r--r--doc/notes/notes-9.18.0.rst346
1 files changed, 346 insertions, 0 deletions
diff --git a/doc/notes/notes-9.18.0.rst b/doc/notes/notes-9.18.0.rst
new file mode 100644
index 0000000..68f8c9b
--- /dev/null
+++ b/doc/notes/notes-9.18.0.rst
@@ -0,0 +1,346 @@
+.. Copyright (C) Internet Systems Consortium, Inc. ("ISC")
+..
+.. SPDX-License-Identifier: MPL-2.0
+..
+.. This Source Code Form is subject to the terms of the Mozilla Public
+.. License, v. 2.0. If a copy of the MPL was not distributed with this
+.. file, you can obtain one at https://mozilla.org/MPL/2.0/.
+..
+.. See the COPYRIGHT file distributed with this work for additional
+.. information regarding copyright ownership.
+
+Notes for BIND 9.18.0
+---------------------
+
+.. note:: This section only lists changes since BIND 9.16.25, the most
+ recent release on the previous stable branch of BIND before
+ the publication of BIND 9.18.0.
+
+Known Issues
+~~~~~~~~~~~~
+
+- ``rndc`` has been updated to use the new BIND network manager API. As
+ the network manager currently has no support for UNIX-domain sockets,
+ those cannot now be used with ``rndc``. This will be addressed in a
+ future release, either by restoring UNIX-domain socket support or by
+ formally declaring them to be obsolete in the control channel.
+ :gl:`#1759`
+
+- See :ref:`above <relnotes_known_issues>` for a list of all known
+ issues affecting this BIND 9 branch.
+
+New Features
+~~~~~~~~~~~~
+
+- ``named`` now supports securing DNS traffic using Transport Layer
+ Security (TLS). TLS is used by both DNS over TLS (DoT) and
+ DNS over HTTPS (DoH).
+
+ ``named`` can use either a certificate provided by the user or an
+ ephemeral certificate generated automatically upon startup. The
+ :any:`tls` block allows fine-grained control over TLS
+ parameters. :gl:`#1840` :gl:`#2795` :gl:`#2796`
+
+ For debugging purposes, ``named`` logs TLS pre-master secrets when the
+ ``SSLKEYLOGFILE`` environment variable is set. This enables
+ troubleshooting of issues with encrypted traffic. :gl:`#2723`
+
+- Support for DNS over TLS (DoT) has been added to ``named``. Network
+ interfaces for DoT are configured using the existing
+ :ref:`listen-on <interfaces>` directive, while TLS parameters are
+ configured using the new :any:`tls` block. :gl:`#1840`
+
+ ``named`` supports :rfc:`zone transfers over TLS <9103>`
+ (XFR-over-TLS, XoT) for both incoming and outgoing zone transfers.
+
+ Incoming zone transfers over TLS are enabled by adding the :any:`tls`
+ keyword, followed by either the name of a previously configured
+ :any:`tls` block or the string ``ephemeral``, to the
+ addresses included in :any:`primaries` lists.
+ :gl:`#2392`
+
+ Similarly, the :any:`allow-transfer` option
+ was extended to accept additional ``port`` and ``transport``
+ parameters, to further restrict outgoing zone transfers to a
+ particular port and/or DNS transport protocol. :gl:`#2776`
+
+ Note that zone transfers over TLS (XoT) require the ``dot``
+ Application-Layer Protocol Negotiation (ALPN) token to be selected in
+ the TLS handshake, as required by :rfc:`9103` section 7.1. This might
+ cause issues with non-compliant XoT servers. :gl:`#2794`
+
+ The ``dig`` tool is now able to send DoT queries (``+tls`` option).
+ :gl:`#1840`
+
+ There is currently no support for forwarding DNS queries via DoT.
+
+- Support for DNS over HTTPS (DoH) has been added to ``named``. Both
+ TLS-encrypted and unencrypted connections are supported (the latter
+ may be used to offload encryption to other software). Network
+ interfaces for DoH are configured using the existing
+ :ref:`listen-on <interfaces>` directive, while TLS parameters are
+ configured using the new :any:`tls` block and HTTP
+ parameters are configured using the new :any:`http` block.
+ :gl:`#1144` :gl:`#2472`
+
+ Server-side quotas on both the number of concurrent DoH connections
+ and the number of active HTTP/2 streams per connection can be
+ configured using the global :any:`http-listener-clients` and
+ :any:`http-streams-per-connection` options, or the :any:`listener-clients`
+ and :any:`streams-per-connection` parameters in an
+ :any:`http block <http>`. :gl:`#2809`
+
+ The ``dig`` tool is now able to send DoH queries (``+https`` option).
+ :gl:`#1641`
+
+ There is currently no support for forwarding DNS queries via DoH.
+
+ DoH support can be disabled at compile time using a new build-time
+ option, ``--disable-doh``. This allows BIND 9 to be built without the
+ `libnghttp2`_ library. :gl:`#2478`
+
+- A new logging category, ``rpz-passthru``, was added, which allows RPZ
+ passthru actions to be logged into a separate channel. :gl:`#54`
+
+- A new option, ``nsdname-wait-recurse``, has been added to the
+ :any:`response-policy` clause in the configuration file. When set to
+ ``no``, RPZ NSDNAME rules are only applied if the authoritative
+ nameservers for the query name have been looked up and are present in
+ the cache. If this information is not present, the RPZ NSDNAME rules
+ are ignored, but the information is looked up in the background and
+ applied to subsequent queries. The default is ``yes``, meaning that
+ RPZ NSDNAME rules should always be applied, even if the information
+ needs to be looked up first. :gl:`#1138`
+
+- Support for HTTPS and SVCB record types now also includes ADDITIONAL
+ section processing for these record types. :gl:`#1132`
+
+- New configuration options, :any:`tcp-receive-buffer`,
+ :any:`tcp-send-buffer`, :any:`udp-receive-buffer`, and :any:`udp-send-buffer`,
+ have been added. These options allow the operator to fine-tune the
+ receiving and sending buffers in the operating system. On busy
+ servers, increasing the size of the receive buffers can prevent the
+ server from dropping packets during short traffic spikes, and
+ decreasing it can prevent the server from becoming clogged with
+ queries that are too old and have already timed out. :gl:`#2313`
+
+- New finer-grained :any:`update-policy` rule types,
+ ``krb5-subdomain-self-rhs`` and ``ms-subdomain-self-rhs``, were added.
+ These rule types restrict updates to SRV and PTR records so that their
+ content can only match the machine name embedded in the Kerberos
+ principal making the change. :gl:`#481`
+
+- Per-type record count limits can now be specified in :any:`update-policy`
+ statements, to limit the number of records of a particular type that
+ can be added to a domain name via dynamic update. :gl:`#1657`
+
+- Support for OpenSSL 3.0 APIs was added. :gl:`#2843` :gl:`#3057`
+
+- Extended DNS Error Code 18 - Prohibited (see :rfc:`8914` section
+ 4.19) is now set if query access is denied to the specific client.
+ :gl:`#1836`
+
+- ``ipv4only.arpa`` is now served when DNS64 is configured. :gl:`#385`
+
+- ``dig`` can now report the DNS64 prefixes in use (``+dns64prefix``).
+ This is useful when the host on which ``dig`` is run is behind an
+ IPv6-only link, using DNS64/NAT64 or 464XLAT for IPv4aaS (IPv4 as a
+ Service). :gl:`#1154`
+
+- ``dig`` output now includes the transport protocol used (UDP, TCP,
+ TLS, HTTPS). :gl:`#1144` :gl:`#1816`
+
+- ``dig +qid=<num>`` allows the user to specify a particular query ID
+ for testing purposes. :gl:`#1851`
+
+.. _libnghttp2: https://nghttp2.org/
+
+Removed Features
+~~~~~~~~~~~~~~~~
+
+- Support for the ``map`` zone file format (``masterfile-format map;``)
+ has been removed. Users relying on the ``map`` format are advised to
+ convert their zones to the ``raw`` format with ``named-compilezone``
+ and change the configuration appropriately prior to upgrading BIND 9.
+ :gl:`#2882`
+
+- Old-style Dynamically Loadable Zones (DLZ) drivers that had to be
+ enabled in ``named`` at build time have been removed. New-style DLZ
+ modules should be used as a replacement. :gl:`#2814`
+
+- Support for compiling and running BIND 9 natively on Windows has been
+ completely removed. The last stable release branch that has working
+ Windows support is BIND 9.16. :gl:`#2690`
+
+- Native PKCS#11 support has been removed. :gl:`#2691`
+
+ When built against OpenSSL 1.x, BIND 9 now
+ :ref:`uses engine_pkcs11 for PKCS#11 <pkcs11>`. engine_pkcs11 is an
+ OpenSSL engine which is part of the `OpenSC`_ project.
+
+ As support for so-called "engines" was deprecated in OpenSSL 3.x,
+ compiling BIND 9 against an OpenSSL 3.x build which does not retain
+ support for deprecated APIs makes it impossible to use PKCS#11 in BIND
+ 9. A replacement for engine_pkcs11 which employs the new "provider"
+ approach introduced in OpenSSL 3.x is in the making. :gl:`#2843`
+
+- The utilities ``dnssec-checkds``, ``dnssec-coverage``, and
+ ``dnssec-keymgr`` have been removed from the BIND distribution, as well
+ as the ``isc`` Python package. DNSSEC features formerly provided
+ by these utilities are now integrated into ``named``.
+ See the :any:`dnssec-policy` configuration option
+ for more details.
+
+ An archival version of the Python utilities has been moved to
+ the repository https://gitlab.isc.org/isc-projects/dnssec-keymgr/.
+ Please note these tools are no longer supported by ISC.
+
+- Since the old socket manager API has been removed, "socketmgr"
+ statistics are no longer reported by the
+ :any:`statistics-channels`. :gl:`#2926`
+
+- The :any:`glue-cache` *option* has been marked as deprecated. The glue
+ cache *feature* still works and will be permanently *enabled* in a
+ future release. :gl:`#2146`
+
+- A number of non-working configuration options that had been marked as
+ obsolete in previous releases have now been removed completely. Using
+ any of the following options is now considered a configuration
+ failure: ``acache-cleaning-interval``, ``acache-enable``,
+ ``additional-from-auth``, ``additional-from-cache``,
+ ``allow-v6-synthesis``, ``cleaning-interval``, ``dnssec-enable``,
+ ``dnssec-lookaside``, ``filter-aaaa``, ``filter-aaaa-on-v4``,
+ ``filter-aaaa-on-v6``, ``geoip-use-ecs``, ``lwres``,
+ ``max-acache-size``, ``nosit-udp-size``, ``queryport-pool-ports``,
+ ``queryport-pool-updateinterval``, ``request-sit``, ``sit-secret``,
+ ``support-ixfr``, ``use-queryport-pool``, ``use-ixfr``. :gl:`#1086`
+
+- The ``dig`` option ``+unexpected`` has been removed. :gl:`#2140`
+
+- IPv6 sockets are now explicitly restricted to sending and receiving
+ IPv6 packets only. As this breaks the ``+mapped`` option for ``dig``,
+ the option has been removed. :gl:`#3093`
+
+- Disable and disallow static linking of BIND 9 binaries and libraries
+ as BIND 9 modules require ``dlopen()`` support and static linking also
+ prevents using security features like read-only relocations (RELRO) or
+ address space layout randomization (ASLR) which are important for
+ programs that interact with the network and process arbitrary user
+ input. :gl:`#1933`
+
+- The ``--with-gperftools-profiler`` ``configure`` option was removed.
+ To use the gperftools profiler, the ``HAVE_GPERFTOOLS_PROFILER`` macro
+ now needs to be manually set in ``CFLAGS`` and ``-lprofiler`` needs to
+ be present in ``LDFLAGS``. :gl:`!4045`
+
+.. _OpenSC: https://github.com/OpenSC/libp11
+
+Feature Changes
+~~~~~~~~~~~~~~~
+
+- Aggressive Use of DNSSEC-Validated Cache (:any:`synth-from-dnssec`, see
+ :rfc:`8198`) is now enabled by default again, after having been
+ disabled in BIND 9.14.8. The implementation of this feature was
+ reworked to achieve better efficiency and tuned to ignore certain
+ types of broken NSEC records. Negative answer synthesis is currently
+ only supported for zones using NSEC. :gl:`#1265`
+
+- The default NSEC3 parameters for :any:`dnssec-policy` were updated to no
+ extra SHA-1 iterations and no salt (``NSEC3PARAM 1 0 0 -``). This
+ change is in line with the `latest NSEC3 recommendations`_.
+ :gl:`#2956`
+
+- The default for :any:`dnssec-dnskey-kskonly` was changed to ``yes``. This
+ means that DNSKEY, CDNSKEY, and CDS RRsets are now only signed with
+ the KSK by default. The additional signatures prepared using the ZSK
+ when the option is set to ``no`` add to the DNS response payload
+ without offering added value. :gl:`#1316`
+
+- ``dnssec-cds`` now only generates SHA-2 DS records by default and
+ avoids copying deprecated SHA-1 records from a child zone to its
+ delegation in the parent. If the child zone does not publish SHA-2 CDS
+ records, ``dnssec-cds`` will generate them from the CDNSKEY records.
+ The ``-a algorithm`` option now affects the process of generating DS
+ digest records from both CDS and CDNSKEY records. Thanks to Tony
+ Finch. :gl:`#2871`
+
+- Previously, ``named`` accepted FORMERR responses both with and without
+ an OPT record, as an indication that a given server did not support
+ EDNS. To implement full compliance with :rfc:`6891`, only FORMERR
+ responses without an OPT record are now accepted. This intentionally
+ breaks communication with servers that do not support EDNS and that
+ incorrectly echo back the query message with the RCODE field set to
+ FORMERR and the QR bit set to 1. :gl:`#2249`
+
+- The question section is now checked when processing AXFR, IXFR, and
+ SOA replies while transferring a zone in. :gl:`#1683`
+
+- DNS Flag Day 2020: the EDNS buffer size probing code, which made the
+ resolver adjust the EDNS buffer size used for outgoing queries based
+ on the successful query responses and timeouts observed, was removed.
+ The resolver now always uses the EDNS buffer size set in
+ :any:`edns-udp-size` for all outgoing queries. :gl:`#2183`
+
+- Keeping stale answers in cache (:any:`stale-cache-enable`) has been
+ disabled by default. :gl:`#1712`
+
+- Overall memory use by ``named`` has been optimized and significantly
+ reduced, especially for resolver workloads. :gl:`#2398` :gl:`#3048`
+
+- Memory allocation is now based on the memory allocation API provided
+ by the `jemalloc`_ library, on platforms where it is available. Use of
+ this library is now recommended when building BIND 9; although it is
+ optional, it is enabled by default. :gl:`#2433`
+
+- Internal data structures maintained for each cache database are now
+ grown incrementally when they need to be expanded. This helps maintain
+ a steady response rate on a loaded resolver while these internal data
+ structures are resized. :gl:`#2941`
+
+- The interface handling code has been refactored to use fewer
+ resources, which should lead to less memory fragmentation and better
+ startup performance. :gl:`#2433`
+
+- When reporting zone types in the statistics channel, the terms
+ :any:`primary <type primary>` and :any:`secondary <type secondary>` are now used instead of ``master`` and
+ ``slave``, respectively. :gl:`#1944`
+
+- The ``rndc nta -dump`` and ``rndc secroots`` commands now both include
+ :any:`validate-except` entries when listing negative trust anchors. These
+ are indicated by the keyword ``permanent`` in place of the expiry
+ date. :gl:`#1532`
+
+- The output of ``rndc serve-stale status`` has been clarified. It now
+ explicitly reports whether retention of stale data in the cache is
+ enabled (:any:`stale-cache-enable`), and whether returning such data in
+ responses is enabled (:any:`stale-answer-enable`). :gl:`#2742`
+
+- Previously, using ``dig +bufsize=0`` had the side effect of disabling
+ EDNS, and there was no way to test the remote server's behavior when
+ it had received a packet with EDNS0 buffer size set to 0. This is no
+ longer the case; ``dig +bufsize=0`` now sends a DNS message with EDNS
+ version 0 and buffer size set to 0. To disable EDNS, use ``dig
+ +noedns``. :gl:`#2054`
+
+- BIND 9 binaries which are neither daemons nor administrative programs
+ were moved to ``$bindir``. Only ``ddns-confgen``, ``named``, ``rndc``,
+ ``rndc-confgen``, and ``tsig-confgen`` were left in ``$sbindir``.
+ :gl:`#1724`
+
+- The BIND 9 build system has been changed to use a typical
+ autoconf+automake+libtool stack. This should not make any difference
+ for people building BIND 9 from release tarballs, but when building
+ BIND 9 from the Git repository, ``autoreconf -fi`` needs to be run
+ first. Extra attention is also needed when using non-standard
+ ``configure`` options. :gl:`#4`
+
+.. _latest NSEC3 recommendations: https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-nsec3-guidance-02
+
+.. _jemalloc: http://jemalloc.net/
+
+Bug Fixes
+~~~~~~~~~
+
+- Log files using ``timestamp``-style suffixes were not always correctly
+ removed when the number of files exceeded the limit set by
+ ``versions``. This has been fixed. :gl:`#828`