Compare commits

...

13 Commits

Author SHA1 Message Date
Ondřej Surý
fba4f351fe Fix HAVE_SO_REUSEPORT_LB macro name definition
A typo in macro definition caused the load-balanced sockets to be
disabled even on platforms with existing support for load-balanced
sockets.

(cherry picked from commit 5caf33feda)
2020-12-07 05:35:19 +01:00
Michał Kępień
8d14e39a0b Update BIND version to 9.17.8 2020-12-04 11:36:58 +01:00
Michał Kępień
9ac1ae758b Add a CHANGES marker 2020-12-04 11:36:58 +01:00
Michał Kępień
bd27f38852 Update library API versions 2020-12-04 11:36:58 +01:00
Michał Kępień
3285e7651d Merge branch 'michal/prepare-release-notes-for-bind-9.17.8' into 'v9_17_8-release'
Prepare release notes for BIND 9.17.8

See merge request isc-private/bind9!224
2020-12-04 10:34:38 +00:00
Michał Kępień
f8dd22df9c Prepare release notes for BIND 9.17.8 2020-12-04 11:07:22 +01:00
Michał Kępień
0da5320998 Add release note for GL #2321 2020-12-04 11:07:22 +01:00
Michał Kępień
89b154b7d8 Add release note for GL #1816 2020-12-04 11:07:22 +01:00
Michał Kępień
53ef1923a3 Reorder release notes 2020-12-04 11:07:22 +01:00
Michał Kępień
6749215951 Tweak and reword release notes 2020-12-04 11:07:22 +01:00
Michał Kępień
7878f2f672 Tweak and reword recent CHANGES entries 2020-12-04 11:07:22 +01:00
Michał Kępień
fe31d08e0c Fix formatting of "dnssec-policy" documentation 2020-12-04 11:07:22 +01:00
Michal Nowak
515ea13421 Miscellaneous minor documentation updates 2020-12-04 11:07:22 +01:00
18 changed files with 264 additions and 307 deletions

42
CHANGES
View File

@@ -1,16 +1,18 @@
5545. [func] Restore reading of incoming queries by multiple netmgr
threads on platforms other than Linux and FreeBSD 12.
[GL #2137]
--- 9.17.8 released ---
5544. [func] Restore the default value of nocookie-udp-size to 4096.
[GL #2250]
5545. [func] OS support for load-balanced sockets is no longer
required to receive incoming queries in multiple netmgr
threads. [GL #2137]
5543. [bug] Restore the UDP performance after the user netmgr
callbacks have been made asynchronous. [GL #2320]
5544. [func] Restore the default value of "nocookie-udp-size" to 4096
bytes. [GL #2250]
5542. [bug] Refactor the netmgr. [GL #1920] [GL #2034] [GL #2061]
[GL #2194] [GL #2266] [GL #2283] [GL #2318] [GL #2321]
[GL #2221]
5543. [bug] Fix UDP performance issues caused by making netmgr
callbacks asynchronous-only. [GL #2320]
5542. [bug] Refactor netmgr. [GL #1920] [GL #2034] [GL #2061]
[GL #2194] [GL #2221] [GL #2266] [GL #2283] [GL #2318]
[GL #2321]
5541. [func] Adjust the "max-recursion-queries" default from 75 to
100. [GL #2305]
@@ -21,26 +23,25 @@
5539. [bug] Tighten handling of missing DNS COOKIE responses over
UDP by falling back to TCP. [GL #2275]
5538. [func] Add NSEC3 support for zones that manage DNSSEC with
the 'dnssec-policy' configuration. A new option
'nsec3param' can be used to set the NSEC3 parameters.
This now also detects salt collisions, and logs salt
generation messages with zone context.
[GL #1620]
5538. [func] Add NSEC3 support to KASP. A new option for
"dnssec-policy", "nsec3param", can be used to set the
desired NSEC3 parameters. NSEC3 salt collisions are
automatically prevented during resalting. Salt
generation is now logged with zone context. [GL #1620]
5537. [func] The query plugin mechanism has been extended
to support asynchronous operations. For example, a
plugin can now trigger recursion and resume
processing when it's complete. Thanks to Jinmei
processing when it is complete. Thanks to Jinmei
Tatuya at Infoblox. [GL #2141]
5536. [func] Dig can now report the DNS64 prefixes in use
(+dns64prefix). [GL #1154]
5535. [bug] dig/nslookup/host could crash on shutdown after an
interrupt. [GL #2288]
interrupt. [GL #2287] [GL #2288]
5534. [bug] The synthesised CNAME from a DNAME was incorrectly
5534. [bug] The CNAME synthesized from a DNAME was incorrectly
followed when the QTYPE was CNAME or ANY. [GL #2280]
--- 9.17.7 released ---
@@ -56,7 +57,8 @@
to those files. [GL #1913]
5531. [func] Add support for DNS over TLS (DoT) to dig and named.
[GL #1840]
dig output now includes the transport protocol used.
[GL #1816] [GL #1840]
5530. [bug] dnstap did not capture responses to forwarded UPDATE
requests. [GL #2252]

View File

@@ -39,7 +39,7 @@ anyone can see the source, but only ISC employees have commit access.
In the past, the source could only be seen once ISC had published
a release; read access to the source repository was restricted just
as commit access was. That has changed, as ISC now provides a
public git mirror to the BIND source tree (see below).
public git repository of the BIND source tree (see below).
At ISC, we're committed to
building communities that are welcoming and inclusive: environments where people
@@ -55,14 +55,12 @@ the industry.
Public BIND releases are always available from the
[ISC FTP site](ftp://ftp.isc.org/isc/bind9).
A public-access GIT repository is also available at
[https://gitlab.isc.org](https://gitlab.isc.org).
This repository is a mirror, updated several times per day, of the
source repository maintained by ISC. It contains all the public release
branches; upcoming releases can be viewed in their current state at any
time. It does *not* contain development branches or unreviewed work in
progress. Commits which address security vulnerablilities are withheld
until after public disclosure.
A public-access git repository is also available at
[https://gitlab.isc.org](https://gitlab.isc.org). This repository
contains all public release branches. Upcoming releases can be viewed in
their current state at any time. Short-lived development branches
contain unreviewed work in progress. Commits which address security
vulnerablilities are withheld until after public disclosure.
You can browse the source online via
[https://gitlab.isc.org/isc-projects/bind9](https://gitlab.isc.org/isc-projects/bind9)

View File

@@ -61,7 +61,7 @@ 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. With the exception of Windows
Server 2012 R2, none of these are tested regularly by ISC.
Server 2016, none of these are tested regularly by ISC.
* Windows Server 2012 R2, 2016 / x64
* Windows 10 / x64

View File

@@ -15,7 +15,6 @@
1. [Introduction](#intro)
1. [Reporting bugs and getting help](#help)
1. [Contributing to BIND](#contrib)
1. [BIND 9.17 features](#features)
1. [Building BIND](#build)
1. [macOS](#macos)
1. [Dependencies](#dependencies)
@@ -125,16 +124,6 @@ If you prefer, you may also submit code by opening a
including your patch as an attachment, preferably generated by
`git format-patch`.
### <a name="features"/> BIND 9.17 features
BIND 9.17 is the newest development branch of BIND 9. It includes a
number of changes from BIND 9.16 and earlier releases. New features include:
* The new option `max-ixfr-ratio` to limit the size of outgoing IXFR responses
before falling back to full zone transfers.
* `rndc nta -d` and `rndc secroots` now include `validate-except` entries
when listing negative trust anchors.
### <a name="build"/> Building BIND 9
At a minimum, BIND requires a Unix or Linux system with an ANSI C compiler,

View File

@@ -14,7 +14,7 @@
#
m4_define([bind_VERSION_MAJOR], 9)dnl
m4_define([bind_VERSION_MINOR], 17)dnl
m4_define([bind_VERSION_PATCH], 7)dnl
m4_define([bind_VERSION_PATCH], 8)dnl
m4_define([bind_VERSION_EXTRA], )dnl
m4_define([bind_DESCRIPTION], [(Development Release)])dnl
m4_define([bind_SRCID], [m4_esyscmd_s([git rev-parse --short HEAD | cut -b1-7])])dnl

View File

@@ -52,7 +52,7 @@ https://www.isc.org/download/. There you will find additional
information about each release, source code, and pre-compiled versions
for Microsoft Windows operating systems.
.. include:: ../notes/notes-current.rst
.. include:: ../notes/notes-9.17.8.rst
.. include:: ../notes/notes-9.17.7.rst
.. include:: ../notes/notes-9.17.6.rst
.. include:: ../notes/notes-9.17.5.rst

View File

@@ -4755,235 +4755,200 @@ can be found, the initializing key is also compiled directly into
.. _dnssec_policy_grammar:
``dnssec-policy`` Statement Grammar
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. include:: ../misc/dnssec-policy.grammar.rst
.. _dnssec_policy:
The ``dnssec-policy`` statement defines a key and
signing policy (KASP) for zones.
``dnssec-policy`` Statement Definition and Usage
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A KASP determines how one or more zones are signed
with DNSSEC. For example, it specifies how often keys should
roll, which cryptographic algorithms to use, and how often RRSIG
records need to be refreshed.
The ``dnssec-policy`` statement defines a key and signing policy (KASP)
for zones.
Keys are not shared among zones, which means that one set of keys
per zone is generated even if they have the same policy.
If multiple views are configured with different versions of the
same zone, each separate version uses the same set of signing
keys.
A KASP determines how one or more zones are signed with DNSSEC. For
example, it specifies how often keys should roll, which cryptographic
algorithms to use, and how often RRSIG records need to be refreshed.
Multiple key and signing policies can be configured. To
attach a policy to a zone, add a ``dnssec-policy``
option to the ``zone`` statement, specifying the
name of the policy that should be used.
Keys are not shared among zones, which means that one set of keys per
zone is generated even if they have the same policy. If multiple views
are configured with different versions of the same zone, each separate
version uses the same set of signing keys.
Key rollover timing is computed for each key according to
the key lifetime defined in the KASP. The lifetime may be
modified by zone TTLs and propagation delays, to
prevent validation failures. When a key reaches the end of its
lifetime,
``named`` generates and publishes a new key
automatically, then deactivates the old key and activates the
new one; finally, the old key is retired according to a computed
schedule.
Multiple key and signing policies can be configured. To attach a policy
to a zone, add a ``dnssec-policy`` option to the ``zone`` statement,
specifying the name of the policy that should be used.
Zone-signing key (ZSK) rollovers require no operator input.
Key-signing key (KSK) and combined-signing key (CSK) rollovers
require action to be taken to submit a DS record to the parent.
Rollover timing for KSKs and CSKs is adjusted to take into account
delays in processing and propagating DS updates.
Key rollover timing is computed for each key according to the key
lifetime defined in the KASP. The lifetime may be modified by zone TTLs
and propagation delays, to prevent validation failures. When a key
reaches the end of its lifetime, ``named`` generates and publishes a new
key automatically, then deactivates the old key and activates the new
one; finally, the old key is retired according to a computed schedule.
There are two predefined ``dnssec-policy`` names:
``none`` and ``default``.
Setting a zone's policy to
``none`` is the same as not setting
``dnssec-policy`` at all; the zone is not
signed. Policy ``default`` causes the
zone to be signed with a single combined-signing key (CSK)
using algorithm ECDSAP256SHA256; this key has an
unlimited lifetime. (A verbose copy of this policy
may be found in the source tree, in the file
``doc/misc/dnssec-policy.default.conf``.)
Zone-signing key (ZSK) rollovers require no operator input. Key-signing
key (KSK) and combined-signing key (CSK) rollovers require action to be
taken to submit a DS record to the parent. Rollover timing for KSKs and
CSKs is adjusted to take into account delays in processing and
propagating DS updates.
.. note::
There are two predefined ``dnssec-policy`` names: ``none`` and
``default``. Setting a zone's policy to ``none`` is the same as not
setting ``dnssec-policy`` at all; the zone is not signed. Policy
``default`` causes the zone to be signed with a single combined-signing
key (CSK) using algorithm ECDSAP256SHA256; this key has an unlimited
lifetime. (A verbose copy of this policy may be found in the source
tree, in the file ``doc/misc/dnssec-policy.default.conf``.)
The default signing policy may change in future releases.
This could require changes to a signing policy
when upgrading to a new version of BIND. Check
the release notes carefully when upgrading to be informed
of such changes. To prevent policy changes on upgrade,
use an explicitly defined ``dnssec-policy``,
rather than ``default``.
.. note:: The default signing policy may change in future releases.
This could require changes to a signing policy when upgrading to a
new version of BIND. Check the release notes carefully when
upgrading to be informed of such changes. To prevent policy changes
on upgrade, use an explicitly defined ``dnssec-policy``, rather than
``default``.
If a ``dnssec-policy`` statement is modified
and the server restarted or reconfigured, ``named``
attempts to change the policy smoothly from the old one to
the new. For example, if the key algorithm is changed, then
a new key is generated with the new algorithm, and the old
algorithm is retired when the existing key's lifetime ends.
If a ``dnssec-policy`` statement is modified and the server restarted or
reconfigured, ``named`` attempts to change the policy smoothly from the
old one to the new. For example, if the key algorithm is changed, then
a new key is generated with the new algorithm, and the old algorithm is
retired when the existing key's lifetime ends.
.. note::
Rolling to a new policy while another key rollover is
already in progress is not yet supported, and may result in
unexpected behavior.
.. note:: Rolling to a new policy while another key rollover is already
in progress is not yet supported, and may result in unexpected
behavior.
The following options can be specified in a ``dnssec-policy`` statement:
``dnskey-ttl``
This indicates the TTL to use when generating DNSKEY resource records. The default is 1
hour (3600 seconds).
This indicates the TTL to use when generating DNSKEY resource
records. The default is 1 hour (3600 seconds).
``keys``
This is a list specifying the algorithms and roles to use when
generating keys and signing the zone.
Entries in this list do not represent specific
DNSSEC keys, which may be changed on a regular basis,
but the roles that keys play in the signing policy.
For example, configuring a KSK of algorithm RSASHA256 ensures
that the DNSKEY RRset always includes a key-signing key
for that algorithm.
generating keys and signing the zone. Entries in this list do not
represent specific DNSSEC keys, which may be changed on a regular
basis, but the roles that keys play in the signing policy. For
example, configuring a KSK of algorithm RSASHA256 ensures that the
DNSKEY RRset always includes a key-signing key for that algorithm.
Here is an example (for illustration purposes only) of
some possible entries in a ``keys``
list:
Here is an example (for illustration purposes only) of some possible
entries in a ``keys`` list:
::
keys {
ksk key-directory lifetime unlimited algorithm rsasha1 2048;
zsk lifetime P30D algorithm 8;
csk lifetime P6MT12H3M15S algorithm ecdsa256;
};
ksk key-directory lifetime unlimited algorithm rsasha1 2048;
zsk lifetime P30D algorithm 8;
csk lifetime P6MT12H3M15S algorithm ecdsa256;
};
This example specifies that three keys should be used
in the zone. The first token determines which role the
key plays in signing RRsets. If set to
``ksk``, then this is
a key-signing key; it has the KSK flag set and
is only used to sign DNSKEY, CDS, and CDNSKEY RRsets.
If set to ``zsk``, this is
a zone-signing key; the KSK flag is unset, and
the key signs all RRsets *except*
DNSKEY, CDS, and CDNSKEY. If set to
``csk``, the key has the KSK
flag set and is used to sign all RRsets.
This example specifies that three keys should be used in the zone.
The first token determines which role the key plays in signing
RRsets. If set to ``ksk``, then this is a key-signing key; it has
the KSK flag set and is only used to sign DNSKEY, CDS, and CDNSKEY
RRsets. If set to ``zsk``, this is a zone-signing key; the KSK flag
is unset, and the key signs all RRsets *except* DNSKEY, CDS, and
CDNSKEY. If set to ``csk``, the key has the KSK flag set and is
used to sign all RRsets.
An optional second token determines where the key is
stored. Currently, keys can only be stored in the
configured ``key-directory``. This token
may be used in the future to store keys in hardware
service modules or separate directories.
An optional second token determines where the key is stored.
Currently, keys can only be stored in the configured
``key-directory``. This token may be used in the future to store
keys in hardware service modules or separate directories.
The ``lifetime`` parameter specifies how
long a key may be used before rolling over. In the
example above, the first key has an unlimited
lifetime, the second key may be used for 30 days, and the
third key has a rather peculiar lifetime of 6 months,
12 hours, 3 minutes, and 15 seconds. A lifetime of 0
seconds is the same as ``unlimited``.
The ``lifetime`` parameter specifies how long a key may be used
before rolling over. In the example above, the first key has an
unlimited lifetime, the second key may be used for 30 days, and the
third key has a rather peculiar lifetime of 6 months, 12 hours, 3
minutes, and 15 seconds. A lifetime of 0 seconds is the same as
``unlimited``.
Note that the lifetime of a key may be extended if
retiring it too soon would cause validation failures.
For example, if the key were configured to roll more
frequently than its own TTL, its lifetime would
automatically be extended to account for this.
Note that the lifetime of a key may be extended if retiring it too
soon would cause validation failures. For example, if the key were
configured to roll more frequently than its own TTL, its lifetime
would automatically be extended to account for this.
The ``algorithm`` parameter specifies
the key's algorithm, expressed either as a string
("rsasha256", "ecdsa384", etc.) or as a decimal number.
An optional second parameter specifies the key's size
in bits. If it is omitted, as shown in the
example for the second and third keys, an appropriate
default size for the algorithm is used.
The ``algorithm`` parameter specifies the key's algorithm, expressed
either as a string ("rsasha256", "ecdsa384", etc.) or as a decimal
number. An optional second parameter specifies the key's size in
bits. If it is omitted, as shown in the example for the second and
third keys, an appropriate default size for the algorithm is used.
``publish-safety``
This is a margin that is added to the pre-publication
interval in rollover timing calculations, to give some
extra time to cover unforeseen events. This increases
the time between when keys are published and when they become active.
The default is ``PT1H`` (1 hour).
``publish-safety``
This is a margin that is added to the pre-publication interval in
rollover timing calculations, to give some extra time to cover
unforeseen events. This increases the time between when keys are
published and when they become active. The default is ``PT1H`` (1
hour).
``retire-safety``
This is a margin that is added to the post-publication interval
in rollover timing calculations, to give some extra time
to cover unforeseen events. This increases the time a key
remains published after it is no longer active. The
default is ``PT1H`` (1 hour).
``retire-safety``
This is a margin that is added to the post-publication interval in
rollover timing calculations, to give some extra time to cover
unforeseen events. This increases the time a key remains published
after it is no longer active. The default is ``PT1H`` (1 hour).
``signatures-refresh``
This determines how frequently an RRSIG record needs to be
refreshed. The signature is renewed when the time until
the expiration time is less than the specified interval.
The default is ``P5D`` (5 days), meaning
signatures that expire in 5 days or sooner are
refreshed.
``signatures-refresh``
This determines how frequently an RRSIG record needs to be
refreshed. The signature is renewed when the time until the
expiration time is less than the specified interval. The default is
``P5D`` (5 days), meaning signatures that expire in 5 days or sooner
are refreshed.
``signatures-validity``
This indicates the validity period of an RRSIG record (subject to
inception offset and jitter). The default is
``P2W`` (2 weeks).
``signatures-validity``
This indicates the validity period of an RRSIG record (subject to
inception offset and jitter). The default is ``P2W`` (2 weeks).
``signatures-validity-dnskey``
This is similar to ``signatures-validity``, but for
DNSKEY records. The default is ``P2W``
(2 weeks).
``signatures-validity-dnskey``
This is similar to ``signatures-validity``, but for DNSKEY records.
The default is ``P2W`` (2 weeks).
``max-zone-ttl``
Like the ``max-zone-ttl`` zone option,
this specifies the maximum permissible TTL value, in
seconds, for the zone. When loading a zone file using
a ``masterfile-format`` of
``text`` or ``raw``,
any record encountered with a TTL higher than
``max-zone-ttl`` is capped at the
maximum permissible TTL value.
``max-zone-ttl``
Like the ``max-zone-ttl`` zone option, this specifies the maximum
permissible TTL value, in seconds, for the zone. When loading a
zone file using a ``masterfile-format`` of ``text`` or ``raw``, any
record encountered with a TTL higher than ``max-zone-ttl`` is capped
at the maximum permissible TTL value.
This is needed in DNSSEC-maintained zones because when
rolling to a new DNSKEY, the old key needs to remain
available until RRSIG records have expired from caches.
The ``max-zone-ttl`` option guarantees that
the largest TTL in the zone is no higher than the
set value.
This is needed in DNSSEC-maintained zones because when rolling to a
new DNSKEY, the old key needs to remain available until RRSIG
records have expired from caches. The ``max-zone-ttl`` option
guarantees that the largest TTL in the zone is no higher than the
set value.
.. note::
Because ``map``-format files
load directly into memory, this option cannot be
used with them.
.. note:: Because ``map``-format files load directly into memory,
this option cannot be used with them.
The default value is ``PT24H`` (24 hours).
A ``max-zone-ttl`` of zero is treated as if
the default value were in use.
The default value is ``PT24H`` (24 hours). A ``max-zone-ttl`` of
zero is treated as if the default value were in use.
``nsec3param``
Use NSEC3 instead of NSEC, and optionally set the NSEC3 parameters.
``nsec3param``
Use NSEC3 instead of NSEC, and optionally set the NSEC3 parameters.
Here is an example of an ``nsec3`` configuration:
Here is an example of an ``nsec3`` configuration:
::
::
nsec3param iterations 5 optout no salt-length 8;
nsec3param iterations 5 optout no salt-length 8;
The default is to use NSEC. The ``iterations``, ``optout``
and ``salt-length`` parts are optional, but if not set, the
values in the example above are the default NSEC3 parameters.
The default is to use NSEC. The ``iterations``, ``optout`` and
``salt-length`` parts are optional, but if not set, the values in
the example above are the default NSEC3 parameters.
``zone-propagation-delay``
This is the expected propagation delay from the time when a zone
is first updated to the time when the new version of the
zone is served by all secondary servers. The default
is ``PT5M`` (5 minutes).
``zone-propagation-delay``
This is the expected propagation delay from the time when a zone is
first updated to the time when the new version of the zone is served
by all secondary servers. The default is ``PT5M`` (5 minutes).
``parent-ds-ttl``
This is the TTL of the DS RRset that the parent zone uses. The
default is ``P1D`` (1 day).
``parent-ds-ttl``
This is the TTL of the DS RRset that the parent zone uses. The
default is ``P1D`` (1 day).
``parent-propagation-delay``
This is the expected propagation delay from the time when the
parent zone is updated to the time when the new version
is served by all of the parent zone's name servers.
The default is ``PT1H`` (1 hour).
``parent-propagation-delay``
This is the expected propagation delay from the time when the parent
zone is updated to the time when the new version is served by all of
the parent zone's name servers. The default is ``PT1H`` (1 hour).
.. _managed-keys:

View File

@@ -0,0 +1,72 @@
..
Copyright (C) Internet Systems Consortium, Inc. ("ISC")
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.17.8
---------------------
New Features
~~~~~~~~~~~~
- NSEC3 support was added to KASP. A new option for ``dnssec-policy``,
``nsec3param``, can be used to set the desired NSEC3 parameters.
NSEC3 salt collisions are automatically prevented during resalting.
[GL #1620]
- ``dig`` output now includes the transport protocol used (UDP, TCP, or
TLS). [GL #1816]
- ``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]
Feature Changes
~~~~~~~~~~~~~~~
- The new networking code introduced in BIND 9.16 (netmgr) was
overhauled in order to make it more stable, testable, and
maintainable. [GL #2321]
- Earlier releases of BIND versions 9.16 and newer required the
operating system to support load-balanced sockets in order for
``named`` to be able to achieve high performance (by distributing
incoming queries among multiple threads). However, the only operating
systems currently known to support load-balanced sockets are Linux and
FreeBSD 12, which means both UDP and TCP performance were limited to a
single thread on other systems. As of BIND 9.17.8, ``named`` attempts
to distribute incoming queries among multiple threads on systems which
lack support for load-balanced sockets (except Windows). [GL #2137]
- The default value of ``max-recursion-queries`` was increased from 75
to 100. Since the queries sent towards root and TLD servers are now
included in the count (as a result of the fix for CVE-2020-8616),
``max-recursion-queries`` has a higher chance of being exceeded by
non-attack queries, which is the main reason for increasing its
default value. [GL #2305]
- The default value of ``nocookie-udp-size`` was restored back to 4096
bytes. Since ``max-udp-size`` is the upper bound for
``nocookie-udp-size``, this change relieves the operator from having
to change ``nocookie-udp-size`` together with ``max-udp-size`` in
order to increase the default EDNS buffer size limit.
``nocookie-udp-size`` can still be set to a value lower than
``max-udp-size``, if desired. [GL #2250]
Bug Fixes
~~~~~~~~~
- Handling of missing DNS COOKIE responses over UDP was tightened by
falling back to TCP. [GL #2275]
- The CNAME synthesized from a DNAME was incorrectly followed when the
QTYPE was CNAME or ANY. [GL #2280]
- Building with native PKCS#11 support for AEP Keyper has been broken
since BIND 9.17.4. This has been fixed. [GL #2315]

View File

@@ -1,75 +0,0 @@
..
Copyright (C) Internet Systems Consortium, Inc. ("ISC")
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.17.8
---------------------
Security Fixes
~~~~~~~~~~~~~~
- None.
Known Issues
~~~~~~~~~~~~
- None.
New Features
~~~~~~~~~~~~
- ``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]
Removed Features
~~~~~~~~~~~~~~~~
- None.
Feature Changes
~~~~~~~~~~~~~~~
- Add NSEC3 support for zones that manage their DNSSEC with the `dnssec-policy`
configuration. A new option 'nsec3param' can be used to set the desired
NSEC3 parameters, and will detect collisions when resalting. [GL #1620].
- Adjust the ``max-recursion-queries`` default from 75 to 100. Since the
queries sent towards root and TLD servers are now included in the
count (as a result of the fix for CVE-2020-8616), ``max-recursion-queries``
has a higher chance of being exceeded by non-attack queries, which is the
main reason for increasing its default value. [GL #2305]
- Restore the ``nocookie-udp-size`` default from 1232 to 4096. Normally the
EDNS buffer size is configured by ``max-udp-size``, but this configuration
option overrides the value, but most people don't and won't realize there's
an extra configuration option that needs to be tweaked. By changing the
default here, we allow the the ``max-udp-size`` to be the sole option that
needs to be changed when operator wants to change the default EDNS buffer
size. [GL #2250]
Bug Fixes
~~~~~~~~~
- The synthesised CNAME from a DNAME was incorrectly followed when the QTYPE
was CNAME or ANY. [GL #2280]
- Tighten handling of missing DNS COOKIE responses over UDP by
falling back to TCP. [GL #2275]
- Building with native PKCS#11 support for AEP Keyper has been broken
since BIND 9.17.4. This has been fixed. [GL #2315]
- The ``named`` daemon uses load-balanced sockets to increase performance by
distributing the incoming queries among multiple threads. Currently, the only
operating systems that support load-balanced sockets are Linux and FreeBSD 12,
thus both UDP and TCP performance was limited to a single-thread on systems
without load-balancing socket support. This has been fixed on all platforms
except Windows. [GL #2137]

View File

@@ -11,6 +11,6 @@
# 9.13/9.14: 1300-1499
# 9.15/9.16: 1500-1699
# 9.17/9.18: 1700-1899
LIBINTERFACE = 1707
LIBINTERFACE = 1708
LIBREVISION = 0
LIBAGE = 0

View File

@@ -11,6 +11,6 @@
# 9.13/9.14: 1300-1499
# 9.15/9.16: 1500-1699
# 9.17/9.18: 1700-1899
LIBINTERFACE = 1706
LIBINTERFACE = 1707
LIBREVISION = 0
LIBAGE = 0

View File

@@ -53,7 +53,7 @@
#endif
#if defined(SO_REUSEPORT_LB) || (defined(SO_REUSEPORT) && defined(__linux__))
#define HAVE_REUSEPORT_LB 1
#define HAVE_SO_REUSEPORT_LB 1
#endif
/*

View File

@@ -406,7 +406,9 @@ isc_nm_listentcp(isc_nm_t *mgr, isc_nmiface_t *iface,
isc_nmsocket_t *sock = NULL;
sa_family_t sa_family = iface->addr.type.sa.sa_family;
size_t children_size = 0;
#if !HAVE_SO_REUSEPORT_LB && !defined(WIN32)
uv_os_sock_t fd = -1;
#endif
REQUIRE(VALID_NM(mgr));

View File

@@ -450,7 +450,9 @@ isc_nm_listentcpdns(isc_nm_t *mgr, isc_nmiface_t *iface,
isc_nmsocket_t *sock = NULL;
sa_family_t sa_family = iface->addr.type.sa.sa_family;
size_t children_size = 0;
#if !HAVE_SO_REUSEPORT_LB && !defined(WIN32)
uv_os_sock_t fd = -1;
#endif
REQUIRE(VALID_NM(mgr));

View File

@@ -106,7 +106,9 @@ isc_nm_listenudp(isc_nm_t *mgr, isc_nmiface_t *iface, isc_nm_recv_cb_t cb,
isc_nmsocket_t *sock = NULL;
sa_family_t sa_family = iface->addr.type.sa.sa_family;
size_t children_size = 0;
#if !HAVE_SO_REUSEPORT_LB && !defined(WIN32)
uv_os_sock_t fd = -1;
#endif
REQUIRE(VALID_NM(mgr));
@@ -269,7 +271,7 @@ isc__nm_async_udplisten(isc__networker_t *worker, isc__netievent_t *ev0) {
uv_bind_flags |= UV_UDP_IPV6ONLY;
}
#if HAVE_SO_REUSEPORT_LB || WIN32
#if HAVE_SO_REUSEPORT_LB || defined(WIN32)
r = isc_uv_udp_freebind(&sock->uv_handle.udp,
&sock->parent->iface->addr.type.sa,
uv_bind_flags);

View File

@@ -11,6 +11,6 @@
# 9.13/9.14: 1300-1499
# 9.15/9.16: 1500-1699
# 9.17/9.18: 1700-1899
LIBINTERFACE = 1702
LIBREVISION = 2
LIBINTERFACE = 1703
LIBREVISION = 0
LIBAGE = 0

View File

@@ -11,6 +11,6 @@
# 9.13/9.14: 1300-1499
# 9.15/9.16: 1500-1699
# 9.17/9.18: 1700-1899
LIBINTERFACE = 1705
LIBINTERFACE = 1706
LIBREVISION = 0
LIBAGE = 0

View File

@@ -1253,7 +1253,7 @@
./doc/notes/notes-9.17.5.rst RST 2020
./doc/notes/notes-9.17.6.rst RST 2020
./doc/notes/notes-9.17.7.rst RST 2020
./doc/notes/notes-current.rst RST 2020
./doc/notes/notes-9.17.8.rst RST 2020
./docutil/HTML_COPYRIGHT X 2001,2004,2016,2018,2019,2020
./docutil/MAN_COPYRIGHT X 2001,2004,2016,2018,2019,2020
./docutil/patch-db2latex-duplicate-template-bug X 2007,2018,2019,2020