Commit Graph
27551 Commits
Author SHA1 Message Date
Michał Kępień 6f719b482b Add CHANGES entry
4985.	[func]		Add a new slave zone option, "mirror", to enable
			serving a non-authoritative copy of a zone that
			is subject to DNSSEC validation before being
			used.  For now, this option is only meant to
			facilitate deployment of an RFC 7706-style local
			copy of the root zone. [GL #33]
2018-06-28 13:38:39 +02:00
Michał Kępień 92ae05e1bc Add a release note 2018-06-28 13:38:39 +02:00
Michał Kępień dbe6a1a05f Add documentation for mirror zones
Update the ARM and various option lists with information about the
"mirror" option for slave zones.
2018-06-28 13:38:39 +02:00
Michał Kępień 73d64de779 Make "rndc zonestatus" output for mirror zones different than for regular slave zones
Replace "type: slave" with "type: mirror" in "rndc zonestatus" output
for mirror zones in order to enable the user to tell a regular slave
zone and a mirror zone apart.
2018-06-28 13:38:39 +02:00
Michał Kępień dd30f53edc Disable notifies for mirror zones unless also-notify is used
Since the mirror zone feature is expected to mostly be used for the root
zone, prevent slaves from sending NOTIFY messages for mirror zones by
default.  Retain the possibility to use "also-notify" as it might be
useful in certain cases.
2018-06-28 13:38:39 +02:00
Michał Kępień 3af412c0e0 Disable outgoing mirror zone transfers by default
As mirror zone data should be treated the way validated, cached DNS
responses are, outgoing mirror zone transfers should be disabled unless
they are explicitly enabled by zone configuration.
2018-06-28 13:38:39 +02:00
Michał Kępień c3f3b824e7 Treat mirror zone data as cache data for access control purposes
As mirror zone data should be treated the way validated, cached DNS
responses are, it should not be used when responding to clients who are
not allowed cache access.  Reuse code responsible for determining cache
database access for evaluating mirror zone access.
2018-06-28 13:38:39 +02:00
Michał Kępień 18ced94241 Rework query_checkcacheaccess()
Modify query_checkcacheaccess() so that it only contains a single return
statement rather than three and so that the "check_acl" variable is no
longer needed.  Tweak and expand comments.  Fix coding style issues.
2018-06-28 13:38:39 +02:00
Michał Kępień cde16236fb Simplify query_getcachedb()
Modify query_getcachedb() so that it uses a common return path for both
success and failure.  Remove a redundant NULL check since 'db' will
never be NULL after being passed as a target pointer to dns_db_attach().
Fix coding style issues.
2018-06-28 13:38:39 +02:00
Michał Kępień e9f17da6e9 Extract cache access checks in query_getcachedb() to a separate function
Extract the parts of query_getcachedb() responsible for checking whether
the client is allowed to access the cache to a separate function, so
that it can be reused for determining mirror zone access.
2018-06-28 13:38:39 +02:00
Michał Kępień 8d996fd79c Fall back to normal recursion when mirror zone data is unavailable
If transferring or loading a mirror zone fails, resolution should still
succeed by means of falling back to regular recursive queries.
Currently, though, if a slave zone is present in the zone table and not
loaded, a SERVFAIL response is generated.  Thus, mirror zones need
special handling in this regard.

Add a new dns_zt_find() flag, DNS_ZTFIND_MIRROR, and set it every time a
domain name is looked up rather than a zone itself.  Handle that flag in
dns_zt_find() in such a way that a mirror zone which is expired or not
yet loaded is ignored when looking up domain names, but still possible
to find when the caller wants to know whether the zone is configured.
This causes a fallback to recursion when mirror zone data is unavailable
without making unloaded mirror zones invisible to code checking a zone's
existence.
2018-06-28 13:38:39 +02:00
Michał Kępień e3160b27f7 Ensure responses sourced from mirror zones have the AD bit set
Zone RRsets are assigned trust level "ultimate" upon load, which causes
the AD bit to not be set in responses coming from slave zones, including
mirror zones.  Make dns_zoneverify_dnssec() update the trust level of
verified RRsets to "secure" so that the AD bit is set in such responses.
No rollback mechanism is implemented as dns_zoneverify_dnssec() fails in
case of any DNSSEC failure, which causes the mirror zone version being
verified to be discarded.
2018-06-28 13:38:39 +02:00
Michał Kępień ad0ec2ea93 Do not treat mirror zone data as authoritative
Section 4 of RFC 7706 suggests that responses sourced from a local copy
of a zone should not have the AA bit set.  Follow that recommendation by
setting 'qctx->authoritative' to ISC_FALSE when a response to a query is
coming from a mirror zone.
2018-06-28 13:38:39 +02:00
Michał Kępień 179d5faa28 Ensure delegations inside mirror zones are properly handled for non-recursive queries
When a resolver is a regular slave (i.e. not a mirror) for some zone,
non-recursive queries for names below that slaved zone will return a
delegation sourced from it.  This behavior is suboptimal for mirror
zones as their contents should rather be treated as validated, cached
DNS responses.  Modify query_delegation() and query_zone_delegation() to
permit clients allowed cache access to check its contents for a better
answer when responding to non-recursive queries.
2018-06-28 13:38:39 +02:00
Michał Kępień c9accfde28 Perform basic resolution checks with a mirror zone in use
Make ns3 mirror the "root" zone from ns1 and query the former for a
properly signed record below the root.  Ensure ns1 is not queried during
resolution and that the AD bit is set in the response.
2018-06-28 13:38:39 +02:00
Michał Kępień edbb256c3a Verify mirror zone journals
As mirror zone files are verified when they are loaded from disk, verify
journal files as well to ensure invalid data is not used.  Reuse the
journals generated during IXFR tests to test this.
2018-06-28 13:38:39 +02:00
Michał Kępień befd429434 Verify mirror zone files loaded from disk
Verify data read from mirror zone files before it is used in order to
prevent loading corrupt mirror zones from disk.
2018-06-28 13:38:39 +02:00
Michał Kępień 6439a76c6d Verify mirror zone IXFRs
Update ixfr_commit() so that all incoming versions of a mirror zone
transferred using IXFR are verified before being used.
2018-06-28 13:38:39 +02:00
Michał Kępień d86f1d00ad Verify mirror zone AXFRs
Update axfr_commit() so that all incoming versions of a mirror zone
transferred using AXFR are verified before being used.  If zone
verification fails, discard the received version of the zone, wait until
the next refresh and retry.
2018-06-28 13:38:39 +02:00
Michał Kępień eaf1c0f6eb Add dns_zone_verifydb()
Add a function for determining whether the supplied version of a mirror
zone passes DNSSEC validation and is signed using a trusted key.  Define
a new libdns result signifying a zone verification failure.
2018-06-28 13:38:39 +02:00
Michał Kępień fc3dd703d8 Enable dns_zoneverify_dnssec() to check whether the zone was signed by a trust anchor
Extend check_dnskey_sigs() so that, if requested, it checks whether the
DNSKEY RRset at zone apex is signed by at least one trust anchor.  The
trust anchor table is passed as an argument to dns_zoneverify_dnssec()
and passed around in the verification context structure.  Neither
dnssec-signzone nor dnssec-verify are yet modified to make use of that
feature, though.
2018-06-28 13:38:39 +02:00
Michał Kępień f86f314d7e Add a system test for mirror zones
Create the basic files comprising a system test and define a few helper
functions which will be useful when testing mirror zones.
2018-06-28 13:38:39 +02:00
Michał Kępień facb68b22e Implement a "read-only" version of nextpart()
The system test helper function nextpart() always updates the "lines
read so far" marker ("<file>.prev") when it is called, which somewhat
limits its flexibility.  Add two new helper functions, nextpartpeek()
and nextpartreset(), so that certain parts of log files can be easily
examined more than once.  Add some documentation to help understand the
purpose of each function in the nextpart*() family.
2018-06-28 13:38:39 +02:00
Michał Kępień 49201f10cb Add new "mirror" slave zone option
Add a new slave-only boolean configuration option, "mirror", along with
its corresponding dns_zoneopt_t enum and a helper function for checking
whether that option was set for a given zone.  This commit does not
introduce any behavior changes yet.
2018-06-28 13:38:39 +02:00
Evan Hunt be38c1f041 Merge branch '339-issues-with-large-journal-entries' into 'master'
Fix handling of large journal entries.

Closes #339

See merge request isc-projects/bind9!432
2018-06-27 21:24:29 -04:00
Evan Hunt 2aee33f412 CHANGES, release note 2018-06-27 17:37:29 -07:00
Witold KręcickiandEvan Hunt b1254430df Fallback to normal procedure if creating of ixfr-from-differences fails 2018-06-27 17:32:17 -07:00
Witold Kręcicki 0db7130f2b Fix some issues with large journal entries 2018-06-27 16:04:06 +02:00
Ondřej Surý 45722aa4f7 Merge branch '367-dnssec-system-test-failing' into 'master'
Resolve "dnssec system test failing"

Closes #367

See merge request isc-projects/bind9!438
2018-06-27 07:35:32 -04:00
Mark AndrewsandOndřej Surý 7288d321ae remove re-signing race when testing dnskey-sig-validity 2018-06-27 07:27:07 -04:00
Mark AndrewsandOndřej Surý 75888a1f16 improve forensics 2018-06-27 07:27:06 -04:00
Mark Andrews 03568d6ec6 Merge branch '366-missing-dereference-in-require-statement' into 'master'
Resolve "Missing dereference in REQUIRE statement?"

Closes #366

See merge request isc-projects/bind9!437
2018-06-27 03:33:12 -04:00
Mark Andrews f1ee5e4a16 cfg_parse_boolean's REQUIRE test for ret was incomplete. 2018-06-27 17:24:39 +10:00
Evan Hunt f553dac1b0 Merge branch '275-add-permanent-option-to-disable-server-side-cookies' into 'master'
Resolve "Provide a mechanism (build or runtime) to turn off server-side support for RFC7873"

Closes #275

See merge request isc-projects/bind9!413
2018-06-26 18:20:37 -04:00
Ondřej SurýandEvan Hunt cc5c3b5948 Update CHANGES and doc to reflect changes in master 2018-06-26 15:11:16 -07:00
Mark AndrewsandEvan Hunt 379d407773 add CHANGES and release notes
(cherry picked from commit 5f7a6232d6)
2018-06-26 15:10:34 -07:00
Mukund SivaramanandEvan Hunt 8c98e7abfe Update ARM documentation
(cherry picked from commit b5265a8cfa)
2018-06-26 15:10:34 -07:00
Mukund SivaramanandEvan Hunt a60cef9dec Add system test
(cherry picked from commit a5933fa2bb)
2018-06-26 15:10:34 -07:00
Mukund SivaramanandEvan Hunt 0ba997b4c2 Add a answer-cookie named config option
(cherry picked from commit 2930507357)
2018-06-26 15:10:02 -07:00
Evan Hunt 5d0b48474f Merge branch '260-queries-with-empty-question-section-return-noerror' into 'master'
Resolve "Queries with empty question section (and otherwise query message of undetermined RDCLASS) return NOERROR instead of FORMERR"

Closes #260

See merge request isc-projects/bind9!283
2018-06-26 17:20:08 -04:00
Evan Hunt 2b075c2881 CHANGES 2018-06-26 13:52:47 -07:00
Mukund SivaramanandEvan Hunt 06d3106002 return FORMERR when question section is empty if COOKIE is not present 2018-06-26 13:50:15 -07:00
Ondřej Surý be26328849 Merge branch 'temp-disable-qmin-on-rpz' into 'master'
Temporarily disable qname minimization in RPZ tests

See merge request isc-projects/bind9!433
2018-06-26 15:47:52 -04:00
Witold Kręcicki 27fb31580c Temporarily disable qname minimization in RPZ test 2018-06-26 21:28:24 +02:00
Ondřej Surý 116a2333ec Merge branch 'git-replay-merge-explicit-push' into 'master'
Explicitly push into the same named branch at the remote

See merge request isc-projects/bind9!424
2018-06-26 12:58:33 -04:00
Ondřej Surý 8afeda645c Explicitly push into same named branch at the remote instead of relying on whatever branch settings the git config might have 2018-06-26 18:49:40 +02:00
Evan Hunt 0a33957c94 Merge branch 'fix-changes' into 'master'
fix CHANGES

See merge request isc-projects/bind9!422
2018-06-26 12:02:34 -04:00
Evan Hunt 14a3193dfb add missing placeholder and fix CHANGES numbers 2018-06-26 09:01:39 -07:00
Witold Krecicki d0314a14fa Merge branch '180-fix-cmsgbuf-usage' into 'master'
Resolve "Intermittent recursive resolver issues [socket.c:2135]"

Closes #180

See merge request isc-projects/bind9!409
2018-06-26 11:55:14 -04:00
Witold Kręcicki 49f90025a0 Use completely static-sized buffers 2018-06-26 17:41:18 +02:00