Import bind-9.16.20
--- 9.16.20 released --- 5689. [security] An assertion failure occurred when named attempted to send a UDP packet that exceeded the MTU size, if Response Rate Limiting (RRL) was enabled. (CVE-2021-25218) [GL #2856] 5688. [bug] Zones using KASP and inline-signed zones failed to apply changes from the unsigned zone to the signed zone under certain circumstances. This has been fixed. [GL #2735] 5687. [bug] "rndc reload <zonename>" could trigger a redundant reload for an inline-signed zone whose zone file was not modified since the last "rndc reload". This has been fixed. [GL #2855] 5686. [func] The number of internal data structures allocated for each zone was reduced. [GL #2829] 5685. [bug] named failed to check the opcode of responses when performing zone refreshes, stub zone updates, and UPDATE forwarding. This has been fixed. [GL #2762] 5682. [bug] Some changes to "zone-statistics" settings were not properly processed by "rndc reconfig". This has been fixed. [GL #2820] 5681. [func] Relax the checks in the dns_zone_cdscheck() function to allow CDS and CDNSKEY records in the zone that do not match an existing DNSKEY record, as long as the algorithm matches. This allows a clean rollover from one provider to another in a multi-signer DNSSEC configuration. [GL #2710] 5679. [func] Thread affinity is no longer set. [GL #2822] 5678. [bug] The "check DS" code failed to release all resources upon named shutdown when a refresh was in progress. This has been fixed. [GL #2811] 5672. [bug] Authentication of rndc messages could fail if a "controls" statement was configured with multiple key algorithms for the same listener. This has been fixed. [GL #2756] --- 9.16.19 released --- 5671. [bug] A race condition could occur where two threads were competing for the same set of key file locks, leading to a deadlock. This has been fixed. [GL #2786] 5670. [bug] create_keydata() created an invalid placeholder keydata record upon a refresh failure, which prevented the database of managed keys from subsequently being read back. This has been fixed. [GL #2686] 5669. [func] KASP support was extended with the "check DS" feature. Zones with "dnssec-policy" and "parental-agents" configured now check for DS presence and can perform automatic KSK rollovers. [GL #1126] 5668. [bug] Rescheduling a setnsec3param() task when a zone failed to load on startup caused a hang on shutdown. This has been fixed. [GL #2791] 5667. [bug] The configuration-checking code failed to account for the inheritance rules of the "dnssec-policy" option. This has been fixed. [GL #2780] 5666. [doc] The safe "edns-udp-size" value was tweaked to match the probing value from BIND 9.16 for better compatibility. [GL #2183] 5665. [bug] If nsupdate sends an SOA request and receives a REFUSED response, it now fails over to the next available server. [GL #2758] 5664. [func] For UDP messages larger than the path MTU, named now sends an empty response with the TC (TrunCated) bit set. In addition, setting the DF (Don't Fragment) flag on outgoing UDP sockets was re-enabled. [GL #2790] 5662. [bug] Views with recursion disabled are now configured with a default cache size of 2 MB unless "max-cache-size" is explicitly set. This prevents cache RBT hash tables from being needlessly preallocated for such views. [GL #2777] 5661. [bug] Change 5644 inadvertently introduced a deadlock: when locking the key file mutex for each zone structure in a different view, the "in-view" logic was not considered. This has been fixed. [GL #2783] 5658. [bug] Increasing "max-cache-size" for a running named instance (using "rndc reconfig") did not cause the hash tables used by cache databases to be grown accordingly. This has been fixed. [GL #2770] 5655. [bug] Signed, insecure delegation responses prepared by named either lacked the necessary NSEC records or contained duplicate NSEC records when both wildcard expansion and CNAME chaining were required to prepare the response. This has been fixed. [GL #2759] 5653. [bug] A bug that caused the NSEC3 salt to be changed on every restart for zones using KASP has been fixed. [GL #2725] --- 9.16.18 released --- 5660. [bug] The configuration-checking code failed to account for the inheritance rules of the "key-directory" option. [GL #2778] 5659. [bug] When preparing DNS responses, named could replace the letters 'W' (uppercase) and 'w' (lowercase) with '\000'. This has been fixed. [GL #2779] --- 9.16.17 released --- 5652. [bug] A copy-and-paste error in change 5584 caused the IP_DONTFRAG socket option to be enabled instead of disabled. This has been fixed. [GL #2746] 5651. [func] Refactor zone dumping to be processed asynchronously via the uv_work_t thread pool API. [GL #2732] 5650. [bug] Prevent a crash that could occur if serve-stale was enabled and a prefetch was triggered during a query restart. [GL #2733] 5649. [bug] If a query was answered with stale data on a server with DNS64 enabled, an assertion could occur if a non-stale answer arrived afterward. [GL #2731] 5648. [bug] The calculation of the estimated IXFR transaction size in dns_journal_iter_init() was invalid. [GL #2685] 5644. [bug] Fix a race condition in reading and writing key files for zones using KASP and configured in multiple views. [GL #1875] 5643. [cleanup] "make install" no longer creates an empty ${localstatedir}/run directory. [GL #2709] 5642. [bug] Zones which are configured in multiple views with different values set for "dnssec-policy" and with identical values set for "key-directory" are now detected and treated as a configuration error. [GL #2463] 5641. [bug] Address a potential memory leak in dst_key_fromnamedfile(). [GL #2689] 5639. [bug] Check that the first and last SOA record of an AXFR are consistent. [GL #2528] 5638. [bug] Improvements related to network manager/task manager integration: - isc_managers_create() and isc_managers_destroy() functions were added to handle setup and teardown of netmgr, taskmgr, timermgr, and socketmgr, since these require a precise order of operations now. - Event queue processing is now quantized to prevent infinite looping. - The netmgr can now be paused from within a netmgr thread. - Deadlocks due to a conflict between netmgr's pause/resume and listen/stoplistening operations were fixed. [GL #2654] 5633. [doc] The "inline-signing" option was incorrectly described as being inherited from the "options"/"view" levels and was incorrectly accepted at those levels without effect. This has been fixed. [GL #2536] 5624. [func] Task manager events are now processed inside network manager loops. The task manager no longer needs its own set of worker threads, which improves resolver performance. [GL #2638] --- 9.16.16 released --- 5637. [func] Change the default value of the "max-ixfr-ratio" option to "unlimited". [GL #2671] 5636. [bug] named and named-checkconf did not report an error when multiple zones with the "dnssec-policy" option set were using the same zone file. This has been fixed. [GL #2603] 5635. [bug] Journal compaction could fail when a journal with invalid transaction headers was not detected at startup. This has been fixed. [GL #2670] 5634. [bug] If "dnssec-policy" was active and a private key file was temporarily offline during a rekey event, named could incorrectly introduce replacement keys and break a signed zone. This has been fixed. [GL #2596] 5633. [doc] The "inline-signing" option was incorrectly described as being inherited from the "options"/"view" levels and was incorrectly accepted at those levels without effect. This has been fixed. [GL #2536] 5632. [func] Add a new built-in KASP, "insecure", which is used to transition a zone from a signed to an unsigned state. The existing built-in KASP "none" should no longer be used to unsign a zone. [GL #2645] 5631. [protocol] Update the implementation of the ZONEMD RR type to match RFC 8976. [GL #2658] 5630. [func] Treat DNSSEC responses containing NSEC3 records with iteration counts greater than 150 as insecure. [GL #2445] 5629. [func] Reduce the maximum supported number of NSEC3 iterations that can be configured for a zone to 150. [GL #2642] 5627. [bug] RRSIG(SOA) RRsets placed anywhere other than at the zone apex were triggering infinite resigning loops. This has been fixed. [GL #2650] 5626. [bug] When generating zone signing keys, KASP now also checks for key ID conflicts among newly created keys, rather than just between new and existing ones. [GL #2628] 5625. [bug] A deadlock could occur when multiple "rndc addzone", "rndc delzone", and/or "rndc modzone" commands were invoked simultaneously for different zones. This has been fixed. [GL #2626] 5622. [cleanup] The lib/samples/ directory has been removed, as export versions of libraries are no longer maintained. [GL !4835] 5619. [protocol] Implement draft-vandijk-dnsop-nsec-ttl, updating the protocol such that NSEC(3) TTL values are set to the minimum of the SOA MINIMUM value or the SOA TTL. [GL #2347] 5618. [bug] Change 5149 introduced some inconsistencies in the way record TTLs were presented in cache dumps. These inconsistencies have been eliminated. [GL #389] [GL #2289]
This commit is contained in:
parent
d15f52d220
commit
b711ab94de
|
@ -1,3 +1,249 @@
|
|||
--- 9.16.20 released ---
|
||||
|
||||
5689. [security] An assertion failure occurred when named attempted to
|
||||
send a UDP packet that exceeded the MTU size, if
|
||||
Response Rate Limiting (RRL) was enabled.
|
||||
(CVE-2021-25218) [GL #2856]
|
||||
|
||||
5688. [bug] Zones using KASP and inline-signed zones failed to apply
|
||||
changes from the unsigned zone to the signed zone under
|
||||
certain circumstances. This has been fixed. [GL #2735]
|
||||
|
||||
5687. [bug] "rndc reload <zonename>" could trigger a redundant
|
||||
reload for an inline-signed zone whose zone file was not
|
||||
modified since the last "rndc reload". This has been
|
||||
fixed. [GL #2855]
|
||||
|
||||
5686. [func] The number of internal data structures allocated for
|
||||
each zone was reduced. [GL #2829]
|
||||
|
||||
5685. [bug] named failed to check the opcode of responses when
|
||||
performing zone refreshes, stub zone updates, and UPDATE
|
||||
forwarding. This has been fixed. [GL #2762]
|
||||
|
||||
5682. [bug] Some changes to "zone-statistics" settings were not
|
||||
properly processed by "rndc reconfig". This has been
|
||||
fixed. [GL #2820]
|
||||
|
||||
5681. [func] Relax the checks in the dns_zone_cdscheck() function to
|
||||
allow CDS and CDNSKEY records in the zone that do not
|
||||
match an existing DNSKEY record, as long as the
|
||||
algorithm matches. This allows a clean rollover from one
|
||||
provider to another in a multi-signer DNSSEC
|
||||
configuration. [GL #2710]
|
||||
|
||||
5679. [func] Thread affinity is no longer set. [GL #2822]
|
||||
|
||||
5678. [bug] The "check DS" code failed to release all resources upon
|
||||
named shutdown when a refresh was in progress. This has
|
||||
been fixed. [GL #2811]
|
||||
|
||||
5672. [bug] Authentication of rndc messages could fail if a
|
||||
"controls" statement was configured with multiple key
|
||||
algorithms for the same listener. This has been fixed.
|
||||
[GL #2756]
|
||||
|
||||
--- 9.16.19 released ---
|
||||
|
||||
5671. [bug] A race condition could occur where two threads were
|
||||
competing for the same set of key file locks, leading to
|
||||
a deadlock. This has been fixed. [GL #2786]
|
||||
|
||||
5670. [bug] create_keydata() created an invalid placeholder keydata
|
||||
record upon a refresh failure, which prevented the
|
||||
database of managed keys from subsequently being read
|
||||
back. This has been fixed. [GL #2686]
|
||||
|
||||
5669. [func] KASP support was extended with the "check DS" feature.
|
||||
Zones with "dnssec-policy" and "parental-agents"
|
||||
configured now check for DS presence and can perform
|
||||
automatic KSK rollovers. [GL #1126]
|
||||
|
||||
5668. [bug] Rescheduling a setnsec3param() task when a zone failed
|
||||
to load on startup caused a hang on shutdown. This has
|
||||
been fixed. [GL #2791]
|
||||
|
||||
5667. [bug] The configuration-checking code failed to account for
|
||||
the inheritance rules of the "dnssec-policy" option.
|
||||
This has been fixed. [GL #2780]
|
||||
|
||||
5666. [doc] The safe "edns-udp-size" value was tweaked to match the
|
||||
probing value from BIND 9.16 for better compatibility.
|
||||
[GL #2183]
|
||||
|
||||
5665. [bug] If nsupdate sends an SOA request and receives a REFUSED
|
||||
response, it now fails over to the next available
|
||||
server. [GL #2758]
|
||||
|
||||
5664. [func] For UDP messages larger than the path MTU, named now
|
||||
sends an empty response with the TC (TrunCated) bit set.
|
||||
In addition, setting the DF (Don't Fragment) flag on
|
||||
outgoing UDP sockets was re-enabled. [GL #2790]
|
||||
|
||||
5662. [bug] Views with recursion disabled are now configured with a
|
||||
default cache size of 2 MB unless "max-cache-size" is
|
||||
explicitly set. This prevents cache RBT hash tables from
|
||||
being needlessly preallocated for such views. [GL #2777]
|
||||
|
||||
5661. [bug] Change 5644 inadvertently introduced a deadlock: when
|
||||
locking the key file mutex for each zone structure in a
|
||||
different view, the "in-view" logic was not considered.
|
||||
This has been fixed. [GL #2783]
|
||||
|
||||
5658. [bug] Increasing "max-cache-size" for a running named instance
|
||||
(using "rndc reconfig") did not cause the hash tables
|
||||
used by cache databases to be grown accordingly. This
|
||||
has been fixed. [GL #2770]
|
||||
|
||||
5655. [bug] Signed, insecure delegation responses prepared by named
|
||||
either lacked the necessary NSEC records or contained
|
||||
duplicate NSEC records when both wildcard expansion and
|
||||
CNAME chaining were required to prepare the response.
|
||||
This has been fixed. [GL #2759]
|
||||
|
||||
5653. [bug] A bug that caused the NSEC3 salt to be changed on every
|
||||
restart for zones using KASP has been fixed. [GL #2725]
|
||||
|
||||
--- 9.16.18 released ---
|
||||
|
||||
5660. [bug] The configuration-checking code failed to account for
|
||||
the inheritance rules of the "key-directory" option.
|
||||
[GL #2778]
|
||||
|
||||
5659. [bug] When preparing DNS responses, named could replace the
|
||||
letters 'W' (uppercase) and 'w' (lowercase) with '\000'.
|
||||
This has been fixed. [GL #2779]
|
||||
|
||||
--- 9.16.17 released ---
|
||||
|
||||
5652. [bug] A copy-and-paste error in change 5584 caused the
|
||||
IP_DONTFRAG socket option to be enabled instead of
|
||||
disabled. This has been fixed. [GL #2746]
|
||||
|
||||
5651. [func] Refactor zone dumping to be processed asynchronously via
|
||||
the uv_work_t thread pool API. [GL #2732]
|
||||
|
||||
5650. [bug] Prevent a crash that could occur if serve-stale was
|
||||
enabled and a prefetch was triggered during a query
|
||||
restart. [GL #2733]
|
||||
|
||||
5649. [bug] If a query was answered with stale data on a server with
|
||||
DNS64 enabled, an assertion could occur if a non-stale
|
||||
answer arrived afterward. [GL #2731]
|
||||
|
||||
5648. [bug] The calculation of the estimated IXFR transaction size
|
||||
in dns_journal_iter_init() was invalid. [GL #2685]
|
||||
|
||||
5644. [bug] Fix a race condition in reading and writing key files
|
||||
for zones using KASP and configured in multiple views.
|
||||
[GL #1875]
|
||||
|
||||
5643. [cleanup] "make install" no longer creates an empty
|
||||
${localstatedir}/run directory. [GL #2709]
|
||||
|
||||
5642. [bug] Zones which are configured in multiple views with
|
||||
different values set for "dnssec-policy" and with
|
||||
identical values set for "key-directory" are now
|
||||
detected and treated as a configuration error.
|
||||
[GL #2463]
|
||||
|
||||
5641. [bug] Address a potential memory leak in
|
||||
dst_key_fromnamedfile(). [GL #2689]
|
||||
|
||||
5639. [bug] Check that the first and last SOA record of an AXFR are
|
||||
consistent. [GL #2528]
|
||||
|
||||
5638. [bug] Improvements related to network manager/task manager
|
||||
integration:
|
||||
- isc_managers_create() and isc_managers_destroy()
|
||||
functions were added to handle setup and teardown of
|
||||
netmgr, taskmgr, timermgr, and socketmgr, since these
|
||||
require a precise order of operations now.
|
||||
- Event queue processing is now quantized to prevent
|
||||
infinite looping.
|
||||
- The netmgr can now be paused from within a netmgr
|
||||
thread.
|
||||
- Deadlocks due to a conflict between netmgr's
|
||||
pause/resume and listen/stoplistening operations were
|
||||
fixed.
|
||||
[GL #2654]
|
||||
|
||||
5633. [doc] The "inline-signing" option was incorrectly described as
|
||||
being inherited from the "options"/"view" levels and was
|
||||
incorrectly accepted at those levels without effect.
|
||||
This has been fixed. [GL #2536]
|
||||
|
||||
5624. [func] Task manager events are now processed inside network
|
||||
manager loops. The task manager no longer needs its own
|
||||
set of worker threads, which improves resolver
|
||||
performance. [GL #2638]
|
||||
|
||||
--- 9.16.16 released ---
|
||||
|
||||
5637. [func] Change the default value of the "max-ixfr-ratio" option
|
||||
to "unlimited". [GL #2671]
|
||||
|
||||
5636. [bug] named and named-checkconf did not report an error when
|
||||
multiple zones with the "dnssec-policy" option set were
|
||||
using the same zone file. This has been fixed.
|
||||
[GL #2603]
|
||||
|
||||
5635. [bug] Journal compaction could fail when a journal with
|
||||
invalid transaction headers was not detected at startup.
|
||||
This has been fixed. [GL #2670]
|
||||
|
||||
5634. [bug] If "dnssec-policy" was active and a private key file was
|
||||
temporarily offline during a rekey event, named could
|
||||
incorrectly introduce replacement keys and break a
|
||||
signed zone. This has been fixed. [GL #2596]
|
||||
|
||||
5633. [doc] The "inline-signing" option was incorrectly described as
|
||||
being inherited from the "options"/"view" levels and was
|
||||
incorrectly accepted at those levels without effect.
|
||||
This has been fixed. [GL #2536]
|
||||
|
||||
5632. [func] Add a new built-in KASP, "insecure", which is used to
|
||||
transition a zone from a signed to an unsigned state.
|
||||
The existing built-in KASP "none" should no longer be
|
||||
used to unsign a zone. [GL #2645]
|
||||
|
||||
5631. [protocol] Update the implementation of the ZONEMD RR type to match
|
||||
RFC 8976. [GL #2658]
|
||||
|
||||
5630. [func] Treat DNSSEC responses containing NSEC3 records with
|
||||
iteration counts greater than 150 as insecure.
|
||||
[GL #2445]
|
||||
|
||||
5629. [func] Reduce the maximum supported number of NSEC3 iterations
|
||||
that can be configured for a zone to 150. [GL #2642]
|
||||
|
||||
5627. [bug] RRSIG(SOA) RRsets placed anywhere other than at the zone
|
||||
apex were triggering infinite resigning loops. This has
|
||||
been fixed. [GL #2650]
|
||||
|
||||
5626. [bug] When generating zone signing keys, KASP now also checks
|
||||
for key ID conflicts among newly created keys, rather
|
||||
than just between new and existing ones. [GL #2628]
|
||||
|
||||
5625. [bug] A deadlock could occur when multiple "rndc addzone",
|
||||
"rndc delzone", and/or "rndc modzone" commands were
|
||||
invoked simultaneously for different zones. This has
|
||||
been fixed. [GL #2626]
|
||||
|
||||
5622. [cleanup] The lib/samples/ directory has been removed, as export
|
||||
versions of libraries are no longer maintained.
|
||||
[GL !4835]
|
||||
|
||||
5619. [protocol] Implement draft-vandijk-dnsop-nsec-ttl, updating the
|
||||
protocol such that NSEC(3) TTL values are set to the
|
||||
minimum of the SOA MINIMUM value or the SOA TTL.
|
||||
[GL #2347]
|
||||
|
||||
5618. [bug] Change 5149 introduced some inconsistencies in the way
|
||||
record TTLs were presented in cache dumps. These
|
||||
inconsistencies have been eliminated. [GL #389]
|
||||
[GL #2289]
|
||||
|
||||
--- 9.16.15 released ---
|
||||
|
||||
5621. [bug] Due to a backporting mistake in change 5609, named
|
||||
|
|
|
@ -38,12 +38,12 @@ As of Nov 2020, BIND 9.16 is fully supported and regularly tested on the
|
|||
following systems:
|
||||
|
||||
* Debian 9, 10
|
||||
* Ubuntu LTS 16.04, 20.04
|
||||
* Fedora 33
|
||||
* Ubuntu LTS 18.04, 20.04
|
||||
* Fedora 34
|
||||
* Red Hat Enterprise Linux / CentOS 7, 8
|
||||
* FreeBSD 11.4, 12.2
|
||||
* OpenBSD 6.8
|
||||
* Alpine Linux 3.13
|
||||
* FreeBSD 11.4, 12.2, 13.0
|
||||
* OpenBSD 6.9
|
||||
* Alpine Linux 3.14
|
||||
|
||||
The amd64, i386, armhf and arm64 CPU architectures are all fully
|
||||
supported.
|
||||
|
@ -62,7 +62,7 @@ Server 2016, none of these are tested regularly by ISC.
|
|||
* Solaris 11
|
||||
* NetBSD
|
||||
* Other Linux distributions still supported by their vendors, such as:
|
||||
+ Ubuntu 19.04+
|
||||
+ Ubuntu 20.10+
|
||||
+ Gentoo
|
||||
+ Arch Linux
|
||||
* OpenWRT/LEDE 17.01+
|
||||
|
@ -79,7 +79,7 @@ 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, 18.10
|
||||
+ Ubuntu 14.04, 16.04 (Ubuntu ESM releases are not supported)
|
||||
+ CentOS 6
|
||||
+ Debian Jessie
|
||||
+ FreeBSD 10.x
|
||||
|
|
|
@ -46,12 +46,12 @@ As of Nov 2020, BIND 9.16 is fully supported and regularly tested on the
|
|||
following systems:
|
||||
|
||||
* Debian 9, 10
|
||||
* Ubuntu LTS 16.04, 20.04
|
||||
* Fedora 33
|
||||
* Ubuntu LTS 18.04, 20.04
|
||||
* Fedora 34
|
||||
* Red Hat Enterprise Linux / CentOS 7, 8
|
||||
* FreeBSD 11.4, 12.2
|
||||
* OpenBSD 6.8
|
||||
* Alpine Linux 3.13
|
||||
* FreeBSD 11.4, 12.2, 13.0
|
||||
* OpenBSD 6.9
|
||||
* Alpine Linux 3.14
|
||||
|
||||
The amd64, i386, armhf and arm64 CPU architectures are all fully supported.
|
||||
|
||||
|
@ -69,7 +69,7 @@ Server 2016, none of these are tested regularly by ISC.
|
|||
* Solaris 11
|
||||
* NetBSD
|
||||
* Other Linux distributions still supported by their vendors, such as:
|
||||
* Ubuntu 19.04+
|
||||
* Ubuntu 20.10+
|
||||
* Gentoo
|
||||
* Arch Linux
|
||||
* OpenWRT/LEDE 17.01+
|
||||
|
@ -86,7 +86,7 @@ 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, 18.10
|
||||
* Ubuntu 14.04, 16.04 (Ubuntu ESM releases are not supported)
|
||||
* CentOS 6
|
||||
* Debian Jessie
|
||||
* FreeBSD 10.x
|
||||
|
|
|
@ -146,9 +146,10 @@ MASTERS
|
|||
::
|
||||
|
||||
masters string [ port integer ] [ dscp
|
||||
integer ] { ( primaries | ipv4_address
|
||||
[ port integer ] | ipv6_address [ port
|
||||
integer ] ) [ key string ]; ... };
|
||||
integer ] { ( remote-servers |
|
||||
ipv4_address [ port integer ] |
|
||||
ipv6_address [ port integer ] ) [ key
|
||||
string ]; ... };
|
||||
|
||||
OPTIONS
|
||||
^^^^^^^
|
||||
|
@ -167,9 +168,9 @@ OPTIONS
|
|||
allow-transfer { address_match_element; ... };
|
||||
allow-update { address_match_element; ... };
|
||||
allow-update-forwarding { address_match_element; ... };
|
||||
also-notify [ port integer ] [ dscp integer ] { ( primaries |
|
||||
ipv4_address [ port integer ] | ipv6_address [ port
|
||||
integer ] ) [ key string ]; ... };
|
||||
also-notify [ port integer ] [ dscp integer ] { (
|
||||
remote-servers | ipv4_address [ port integer ] |
|
||||
ipv6_address [ port integer ] ) [ key string ]; ... };
|
||||
alt-transfer-source ( ipv4_address | * ) [ port ( integer | * )
|
||||
] [ dscp integer ];
|
||||
alt-transfer-source-v6 ( ipv6_address | * ) [ port ( integer |
|
||||
|
@ -185,7 +186,7 @@ OPTIONS
|
|||
blackhole { address_match_element; ... };
|
||||
cache-file quoted_string;
|
||||
catalog-zones { zone string [ default-masters [ port integer ]
|
||||
[ dscp integer ] { ( primaries | ipv4_address [ port
|
||||
[ dscp integer ] { ( remote-servers | ipv4_address [ port
|
||||
integer ] | ipv6_address [ port integer ] ) [ key
|
||||
string ]; ... } ] [ zone-directory quoted_string ] [
|
||||
in-memory boolean ] [ min-update-interval duration ]; ... };
|
||||
|
@ -237,15 +238,12 @@ OPTIONS
|
|||
dnssec-secure-to-insecure boolean;
|
||||
dnssec-update-mode ( maintain | no-resign );
|
||||
dnssec-validation ( yes | no | auto );
|
||||
dnstap { ( all | auth | client | forwarder |
|
||||
resolver | update ) [ ( query | response ) ];
|
||||
... };
|
||||
dnstap-identity ( quoted_string | none |
|
||||
hostname );
|
||||
dnstap-output ( file | unix ) quoted_string [
|
||||
size ( unlimited | size ) ] [ versions (
|
||||
unlimited | integer ) ] [ suffix ( increment
|
||||
| timestamp ) ];
|
||||
dnstap { ( all | auth | client | forwarder | resolver | update ) [
|
||||
( query | response ) ]; ... };
|
||||
dnstap-identity ( quoted_string | none | hostname );
|
||||
dnstap-output ( file | unix ) quoted_string [ size ( unlimited |
|
||||
size ) ] [ versions ( unlimited | integer ) ] [ suffix (
|
||||
increment | timestamp ) ];
|
||||
dnstap-version ( quoted_string | none );
|
||||
dscp integer;
|
||||
dual-stack-servers [ port integer ] { ( quoted_string [ port
|
||||
|
@ -276,7 +274,6 @@ OPTIONS
|
|||
glue-cache boolean;
|
||||
heartbeat-interval integer;
|
||||
hostname ( quoted_string | none );
|
||||
inline-signing boolean;
|
||||
interface-interval duration;
|
||||
ixfr-from-differences ( primary | master | secondary | slave |
|
||||
boolean );
|
||||
|
@ -298,6 +295,7 @@ OPTIONS
|
|||
max-cache-size ( default | unlimited | sizeval | percentage );
|
||||
max-cache-ttl duration;
|
||||
max-clients-per-query integer;
|
||||
max-ixfr-ratio ( unlimited | percentage );
|
||||
max-journal-size ( default | unlimited | sizeval );
|
||||
max-ncache-ttl duration;
|
||||
max-records integer;
|
||||
|
@ -337,6 +335,10 @@ OPTIONS
|
|||
nta-lifetime duration;
|
||||
nta-recheck duration;
|
||||
nxdomain-redirect string;
|
||||
parental-source ( ipv4_address | * ) [ port ( integer | * ) ] [
|
||||
dscp integer ];
|
||||
parental-source-v6 ( ipv6_address | * ) [ port ( integer | * )
|
||||
] [ dscp integer ];
|
||||
pid-file ( quoted_string | none );
|
||||
port integer;
|
||||
preferred-glue string;
|
||||
|
@ -453,6 +455,17 @@ OPTIONS
|
|||
zone-statistics ( full | terse | none | boolean );
|
||||
};
|
||||
|
||||
PARENTAL-AGENTS
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
::
|
||||
|
||||
parental-agents string [ port integer ] [
|
||||
dscp integer ] { ( remote-servers |
|
||||
ipv4_address [ port integer ] |
|
||||
ipv6_address [ port integer ] ) [ key
|
||||
string ]; ... };
|
||||
|
||||
PLUGIN
|
||||
^^^^^^
|
||||
|
||||
|
@ -467,9 +480,10 @@ PRIMARIES
|
|||
::
|
||||
|
||||
primaries string [ port integer ] [ dscp
|
||||
integer ] { ( primaries | ipv4_address
|
||||
[ port integer ] | ipv6_address [ port
|
||||
integer ] ) [ key string ]; ... };
|
||||
integer ] { ( remote-servers |
|
||||
ipv4_address [ port integer ] |
|
||||
ipv6_address [ port integer ] ) [ key
|
||||
string ]; ... };
|
||||
|
||||
SERVER
|
||||
^^^^^^
|
||||
|
@ -559,9 +573,9 @@ VIEW
|
|||
allow-transfer { address_match_element; ... };
|
||||
allow-update { address_match_element; ... };
|
||||
allow-update-forwarding { address_match_element; ... };
|
||||
also-notify [ port integer ] [ dscp integer ] { ( primaries |
|
||||
ipv4_address [ port integer ] | ipv6_address [ port
|
||||
integer ] ) [ key string ]; ... };
|
||||
also-notify [ port integer ] [ dscp integer ] { (
|
||||
remote-servers | ipv4_address [ port integer ] |
|
||||
ipv6_address [ port integer ] ) [ key string ]; ... };
|
||||
alt-transfer-source ( ipv4_address | * ) [ port ( integer | * )
|
||||
] [ dscp integer ];
|
||||
alt-transfer-source-v6 ( ipv6_address | * ) [ port ( integer |
|
||||
|
@ -571,7 +585,7 @@ VIEW
|
|||
auto-dnssec ( allow | maintain | off );
|
||||
cache-file quoted_string;
|
||||
catalog-zones { zone string [ default-masters [ port integer ]
|
||||
[ dscp integer ] { ( primaries | ipv4_address [ port
|
||||
[ dscp integer ] { ( remote-servers | ipv4_address [ port
|
||||
integer ] | ipv6_address [ port integer ] ) [ key
|
||||
string ]; ... } ] [ zone-directory quoted_string ] [
|
||||
in-memory boolean ] [ min-update-interval duration ]; ... };
|
||||
|
@ -622,9 +636,8 @@ VIEW
|
|||
dnssec-secure-to-insecure boolean;
|
||||
dnssec-update-mode ( maintain | no-resign );
|
||||
dnssec-validation ( yes | no | auto );
|
||||
dnstap { ( all | auth | client | forwarder |
|
||||
resolver | update ) [ ( query | response ) ];
|
||||
... };
|
||||
dnstap { ( all | auth | client | forwarder | resolver | update ) [
|
||||
( query | response ) ]; ... };
|
||||
dual-stack-servers [ port integer ] { ( quoted_string [ port
|
||||
integer ] [ dscp integer ] | ipv4_address [ port
|
||||
integer ] [ dscp integer ] | ipv6_address [ port
|
||||
|
@ -642,7 +655,6 @@ VIEW
|
|||
forwarders [ port integer ] [ dscp integer ] { ( ipv4_address
|
||||
| ipv6_address ) [ port integer ] [ dscp integer ]; ... };
|
||||
glue-cache boolean;
|
||||
inline-signing boolean;
|
||||
ixfr-from-differences ( primary | master | secondary | slave |
|
||||
boolean );
|
||||
key string {
|
||||
|
@ -666,6 +678,7 @@ VIEW
|
|||
max-cache-size ( default | unlimited | sizeval | percentage );
|
||||
max-cache-ttl duration;
|
||||
max-clients-per-query integer;
|
||||
max-ixfr-ratio ( unlimited | percentage );
|
||||
max-journal-size ( default | unlimited | sizeval );
|
||||
max-ncache-ttl duration;
|
||||
max-records integer;
|
||||
|
@ -701,6 +714,10 @@ VIEW
|
|||
nta-lifetime duration;
|
||||
nta-recheck duration;
|
||||
nxdomain-redirect string;
|
||||
parental-source ( ipv4_address | * ) [ port ( integer | * ) ] [
|
||||
dscp integer ];
|
||||
parental-source-v6 ( ipv6_address | * ) [ port ( integer | * )
|
||||
] [ dscp integer ];
|
||||
plugin ( query ) string [ {
|
||||
unspecified-text } ];
|
||||
preferred-glue string;
|
||||
|
@ -833,7 +850,7 @@ VIEW
|
|||
allow-update { address_match_element; ... };
|
||||
allow-update-forwarding { address_match_element; ... };
|
||||
also-notify [ port integer ] [ dscp integer ] { (
|
||||
primaries | ipv4_address [ port integer ] |
|
||||
remote-servers | ipv4_address [ port integer ] |
|
||||
ipv6_address [ port integer ] ) [ key string ];
|
||||
... };
|
||||
alt-transfer-source ( ipv4_address | * ) [ port (
|
||||
|
@ -873,9 +890,11 @@ VIEW
|
|||
key-directory quoted_string;
|
||||
masterfile-format ( map | raw | text );
|
||||
masterfile-style ( full | relative );
|
||||
masters [ port integer ] [ dscp integer ] { ( primaries
|
||||
| ipv4_address [ port integer ] | ipv6_address [
|
||||
port integer ] ) [ key string ]; ... };
|
||||
masters [ port integer ] [ dscp integer ] { (
|
||||
remote-servers | ipv4_address [ port integer ] |
|
||||
ipv6_address [ port integer ] ) [ key string ];
|
||||
... };
|
||||
max-ixfr-ratio ( unlimited | percentage );
|
||||
max-journal-size ( default | unlimited | sizeval );
|
||||
max-records integer;
|
||||
max-refresh-time integer;
|
||||
|
@ -895,8 +914,16 @@ VIEW
|
|||
notify-source-v6 ( ipv6_address | * ) [ port ( integer
|
||||
| * ) ] [ dscp integer ];
|
||||
notify-to-soa boolean;
|
||||
parental-agents [ port integer ] [ dscp integer ] { (
|
||||
remote-servers | ipv4_address [ port integer ] |
|
||||
ipv6_address [ port integer ] ) [ key string ];
|
||||
... };
|
||||
parental-source ( ipv4_address | * ) [ port ( integer |
|
||||
* ) ] [ dscp integer ];
|
||||
parental-source-v6 ( ipv6_address | * ) [ port (
|
||||
integer | * ) ] [ dscp integer ];
|
||||
primaries [ port integer ] [ dscp integer ] { (
|
||||
primaries | ipv4_address [ port integer ] |
|
||||
remote-servers | ipv4_address [ port integer ] |
|
||||
ipv6_address [ port integer ] ) [ key string ];
|
||||
... };
|
||||
request-expire boolean;
|
||||
|
@ -941,9 +968,9 @@ ZONE
|
|||
allow-transfer { address_match_element; ... };
|
||||
allow-update { address_match_element; ... };
|
||||
allow-update-forwarding { address_match_element; ... };
|
||||
also-notify [ port integer ] [ dscp integer ] { ( primaries |
|
||||
ipv4_address [ port integer ] | ipv6_address [ port
|
||||
integer ] ) [ key string ]; ... };
|
||||
also-notify [ port integer ] [ dscp integer ] { (
|
||||
remote-servers | ipv4_address [ port integer ] |
|
||||
ipv6_address [ port integer ] ) [ key string ]; ... };
|
||||
alt-transfer-source ( ipv4_address | * ) [ port ( integer | * )
|
||||
] [ dscp integer ];
|
||||
alt-transfer-source-v6 ( ipv6_address | * ) [ port ( integer |
|
||||
|
@ -979,9 +1006,10 @@ ZONE
|
|||
key-directory quoted_string;
|
||||
masterfile-format ( map | raw | text );
|
||||
masterfile-style ( full | relative );
|
||||
masters [ port integer ] [ dscp integer ] { ( primaries |
|
||||
ipv4_address [ port integer ] | ipv6_address [ port
|
||||
masters [ port integer ] [ dscp integer ] { ( remote-servers
|
||||
| ipv4_address [ port integer ] | ipv6_address [ port
|
||||
integer ] ) [ key string ]; ... };
|
||||
max-ixfr-ratio ( unlimited | percentage );
|
||||
max-journal-size ( default | unlimited | sizeval );
|
||||
max-records integer;
|
||||
max-refresh-time integer;
|
||||
|
@ -1001,9 +1029,16 @@ ZONE
|
|||
notify-source-v6 ( ipv6_address | * ) [ port ( integer | * ) ]
|
||||
[ dscp integer ];
|
||||
notify-to-soa boolean;
|
||||
primaries [ port integer ] [ dscp integer ] { ( primaries |
|
||||
ipv4_address [ port integer ] | ipv6_address [ port
|
||||
integer ] ) [ key string ]; ... };
|
||||
parental-agents [ port integer ] [ dscp integer ] { (
|
||||
remote-servers | ipv4_address [ port integer ] |
|
||||
ipv6_address [ port integer ] ) [ key string ]; ... };
|
||||
parental-source ( ipv4_address | * ) [ port ( integer | * ) ] [
|
||||
dscp integer ];
|
||||
parental-source-v6 ( ipv6_address | * ) [ port ( integer | * )
|
||||
] [ dscp integer ];
|
||||
primaries [ port integer ] [ dscp integer ] { (
|
||||
remote-servers | ipv4_address [ port integer ] |
|
||||
ipv6_address [ port integer ] ) [ key string ]; ... };
|
||||
request-expire boolean;
|
||||
request-ixfr boolean;
|
||||
serial-update-method ( date | increment | unixtime );
|
||||
|
|
|
@ -136,7 +136,7 @@ Currently supported commands are:
|
|||
This sample ``addzone`` command adds the zone ``example.com`` to
|
||||
the default view:
|
||||
|
||||
``$ \ rndc addzone example.com '{ type master; file "example.com.db"; };'``
|
||||
``rndc addzone example.com '{ type master; file "example.com.db"; };'``
|
||||
|
||||
(Note the brackets around and semi-colon after the zone configuration
|
||||
text.)
|
||||
|
|
|
@ -17,23 +17,32 @@ VERSION=@BIND9_VERSION@
|
|||
|
||||
SUBDIRS = dlzexternal dyndb pipelined rndc rpz rsabigexponent tkey
|
||||
|
||||
CINCLUDES = ${ISC_INCLUDES} ${DNS_INCLUDES}
|
||||
CINCLUDES = ${ISC_INCLUDES} \
|
||||
${DNS_INCLUDES} \
|
||||
${ISCCFG_INCLUDES} \
|
||||
${IRS_INCLUDES}
|
||||
|
||||
CDEFINES = @USE_GSSAPI@ @CONTRIB_DLZ@
|
||||
CWARNINGS =
|
||||
|
||||
ISCLIBS = ../../../lib/isc/libisc.@A@ @NO_LIBTOOL_ISCLIBS@
|
||||
DNSLIBS = ../../../lib/dns/libdns.@A@ @NO_LIBTOOL_DNSLIBS@
|
||||
ISCCFGLIBS = ../../../lib/isccfg/libisccfg.@A@
|
||||
IRSLIBS = ../../../lib/irs/libirs.@A@
|
||||
|
||||
ISCDEPLIBS =
|
||||
ISCDEPLIBS = ../../../lib/isc/libisc.@A@
|
||||
DNSDEPLIBS = ../../../lib/dns/libdns.@A@
|
||||
ISCCFGDEPLIBS = ../../../lib/isccfg/libisccfg.@A@
|
||||
IRSDEPLIBS = ../../../lib/irs/libirs.@A@
|
||||
|
||||
DEPLIBS =
|
||||
DEPLIBS = ${IRSDEPLIBS} ${ISCCFGDEPLIBS} ${DNSDEPLIBS} ${ISCDEPLIBS}
|
||||
|
||||
LIBS = @LIBS@
|
||||
LIBS = ${IRSLIBS} ${ISCCFGLIBS} ${DNSLIBS} ${ISCLIBS} @LIBS@
|
||||
|
||||
OBJS = feature-test.@O@
|
||||
SRCS = feature-test.c
|
||||
OBJS = feature-test.@O@ resolve.@O@
|
||||
SRCS = feature-test.c resolve.c
|
||||
|
||||
TARGETS = feature-test@EXEEXT@
|
||||
TARGETS = feature-test@EXEEXT@ resolve@EXEEXT@
|
||||
|
||||
@BIND9_MAKE_RULES@
|
||||
|
||||
|
@ -42,6 +51,10 @@ subdirs: ${TARGETS}
|
|||
feature-test@EXEEXT@: feature-test.@O@
|
||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ feature-test.@O@ ${ISCLIBS} ${LIBS}
|
||||
|
||||
resolve@EXEEXT@: resolve.@O@ ${DEPLIBS}
|
||||
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
|
||||
resolve.@O@ ${LIBS}
|
||||
|
||||
# Running the scripts below is bypassed when a separate build directory is
|
||||
# used.
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
@ IN SOA localhost. localhost.localhost. 1 10800 3600 605800 86400
|
||||
@ IN NS localhost.
|
|
@ -0,0 +1,90 @@
|
|||
############################################################################
|
||||
# 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.
|
||||
############################################################################
|
||||
|
||||
import concurrent.futures
|
||||
import os
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
|
||||
def run_rndc(server, rndc_command):
|
||||
'''
|
||||
Send the specified 'rndc_command' to 'server' with a timeout of 10 seconds
|
||||
'''
|
||||
rndc = os.getenv('RNDC')
|
||||
port = os.getenv('CONTROLPORT')
|
||||
|
||||
cmdline = [rndc, '-c', '../common/rndc.conf', '-p', port, '-s', server]
|
||||
cmdline.extend(rndc_command)
|
||||
|
||||
subprocess.check_output(cmdline, stderr=subprocess.STDOUT, timeout=10)
|
||||
|
||||
|
||||
def rndc_loop(test_state, domain):
|
||||
'''
|
||||
Run "rndc addzone", "rndc modzone", and "rndc delzone" in a tight loop
|
||||
until the test is considered finished, ignoring errors
|
||||
'''
|
||||
rndc_commands = [
|
||||
['addzone', domain,
|
||||
'{ type master; file "example.db"; };'],
|
||||
['modzone', domain,
|
||||
'{ type master; file "example.db"; allow-transfer { any; }; };'],
|
||||
['delzone', domain],
|
||||
]
|
||||
|
||||
while not test_state['finished']:
|
||||
for command in rndc_commands:
|
||||
try:
|
||||
run_rndc('10.53.0.3', command)
|
||||
except subprocess.SubprocessError:
|
||||
pass
|
||||
|
||||
|
||||
def check_if_server_is_responsive():
|
||||
'''
|
||||
Check if server status can be successfully retrieved using "rndc status"
|
||||
'''
|
||||
try:
|
||||
run_rndc('10.53.0.3', ['status'])
|
||||
return True
|
||||
except subprocess.SubprocessError:
|
||||
return False
|
||||
|
||||
|
||||
def test_rndc_deadlock():
|
||||
'''
|
||||
Test whether running "rndc addzone", "rndc modzone", and "rndc delzone"
|
||||
commands concurrently does not trigger a deadlock
|
||||
'''
|
||||
test_state = {'finished': False}
|
||||
|
||||
# Create 4 worker threads running "rndc" commands in a loop.
|
||||
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||
for i in range(1, 5):
|
||||
domain = 'example%d' % i
|
||||
executor.submit(rndc_loop, test_state, domain)
|
||||
|
||||
# Run "rndc status" 10 times, with 1-second pauses between attempts.
|
||||
# Each "rndc status" invocation has a timeout of 10 seconds. If any of
|
||||
# them fails, the loop will be interrupted.
|
||||
server_is_responsive = True
|
||||
attempts = 10
|
||||
while server_is_responsive and attempts > 0:
|
||||
server_is_responsive = check_if_server_is_responsive()
|
||||
attempts -= 1
|
||||
time.sleep(1)
|
||||
|
||||
# Signal worker threads that the test is finished.
|
||||
test_state['finished'] = True
|
||||
|
||||
# Check whether all "rndc status" commands succeeded.
|
||||
assert server_is_responsive
|
|
@ -1591,7 +1591,7 @@ status=`expr $status + $ret`
|
|||
echo_i "check that DNAME at apex with NSEC3 is correctly signed (auto-dnssec maintain) ($n)"
|
||||
ret=0
|
||||
$DIG $DIGOPTS txt dname-at-apex-nsec3.example @10.53.0.3 > dig.out.ns3.test$n || ret=1
|
||||
grep "RRSIG NSEC3 7 3 3600" dig.out.ns3.test$n > /dev/null || ret=1
|
||||
grep "RRSIG NSEC3 7 3 600" dig.out.ns3.test$n > /dev/null || ret=1
|
||||
n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
-m record,size,mctx -c named.conf -d 1 -D cacheclean-ns1 -X named.lock -g -T maxcachesize=2097152
|
|
@ -0,0 +1 @@
|
|||
-m record,size,mctx -c named.conf -d 3 -D cacheclean-ns2 -X named.lock -g -T maxcachesize=2097152
|
|
@ -80,6 +80,34 @@ sub reply_handler {
|
|||
$rr = new Net::DNS::RR("$synth2 $ttl $qclass DNAME .");
|
||||
push @ans, $rr;
|
||||
$rcode = "NOERROR";
|
||||
# The following three code branches referring to the "example.dname"
|
||||
# zone are necessary for the resolver variant of the CVE-2021-25215
|
||||
# regression test to work. A named instance cannot be used for
|
||||
# serving the DNAME records below as a version of BIND vulnerable to
|
||||
# CVE-2021-25215 would crash while answering the queries asked by
|
||||
# the tested resolver.
|
||||
} elsif ($qname eq "ns3.example.dname") {
|
||||
if ($qtype eq "A") {
|
||||
my $rr = new Net::DNS::RR("$qname $ttl $qclass A 10.53.0.3");
|
||||
push @ans, $rr;
|
||||
}
|
||||
if ($qtype eq "AAAA") {
|
||||
my $rr = new Net::DNS::RR("example.dname. $ttl $qclass SOA . . 0 0 0 0 $ttl");
|
||||
push @auth, $rr;
|
||||
}
|
||||
$rcode = "NOERROR";
|
||||
} elsif ($qname eq "self.example.self.example.dname") {
|
||||
my $rr = new Net::DNS::RR("self.example.dname. $ttl $qclass DNAME dname.");
|
||||
push @ans, $rr;
|
||||
$rr = new Net::DNS::RR("$qname $ttl $qclass CNAME self.example.dname.");
|
||||
push @ans, $rr;
|
||||
$rcode = "NOERROR";
|
||||
} elsif ($qname eq "self.example.dname") {
|
||||
if ($qtype eq "DNAME") {
|
||||
my $rr = new Net::DNS::RR("$qname $ttl $qclass DNAME dname.");
|
||||
push @ans, $rr;
|
||||
}
|
||||
$rcode = "NOERROR";
|
||||
} else {
|
||||
$rcode = "REFUSED";
|
||||
}
|
||||
|
|
|
@ -12,5 +12,5 @@
|
|||
rm -f dig.out.* named*.pid
|
||||
rm -f ns*/named.conf
|
||||
rm -f */named.memstats */named.recursing */named.lock */named.run */ans.run
|
||||
rm -f ns2/K* ns2/dsset-* ns2/example.db.signed
|
||||
rm -f ns2/K* ns2/dsset-* ns2/*.db.signed
|
||||
rm -f ns*/managed-keys.bind*
|
||||
|
|
|
@ -24,6 +24,10 @@ ns2.example. A 10.53.0.2
|
|||
example.broken. NS ns3.example.broken.
|
||||
ns3.example.broken. A 10.53.0.3
|
||||
|
||||
; for the resolver variant of the CVE-2021-25215 regression test
|
||||
example.dname. NS ns3.example.dname.
|
||||
ns3.example.dname. A 10.53.0.3
|
||||
|
||||
domain0.nil. NS ns2.domain0.nil
|
||||
domain1.nil. NS ns2.domain0.nil
|
||||
domain2.nil. NS ns2.domain0.nil
|
||||
|
|
|
@ -16,3 +16,5 @@ ns2 86400 AAAA fd92:7065:b8e:ffff::2
|
|||
@ 86400 AAAA 1:2:3::4
|
||||
* 86400 A 1.2.3.4
|
||||
* 86400 AAAA 1:2:3::4
|
||||
; CVE-2021-25215 regression test data
|
||||
self 86400 DNAME nil.
|
||||
|
|
|
@ -40,6 +40,26 @@ zone "signed-sub2.example" {
|
|||
file "sub.db";
|
||||
};
|
||||
|
||||
zone "wildcard-secure.example" {
|
||||
type primary;
|
||||
file "wildcard-secure.example.db.signed";
|
||||
};
|
||||
|
||||
zone "wildcard-nsec.example" {
|
||||
type primary;
|
||||
file "wildcard-nsec.example.db.signed";
|
||||
};
|
||||
|
||||
zone "wildcard-nsec3.example" {
|
||||
type primary;
|
||||
file "wildcard-nsec3.example.db.signed";
|
||||
};
|
||||
|
||||
zone "wildcard-nsec3-optout.example" {
|
||||
type primary;
|
||||
file "wildcard-nsec3-optout.example.db.signed";
|
||||
};
|
||||
|
||||
zone "domain0.nil" { type primary; file "generic.db"; };
|
||||
zone "domain1.nil" { type primary; file "generic.db"; };
|
||||
zone "domain2.nil" { type primary; file "generic.db"; };
|
||||
|
|
|
@ -14,7 +14,40 @@ SYSTEMTESTTOP=../..
|
|||
|
||||
zone=example.
|
||||
zonefile=example.db
|
||||
signedfile=example.db.signed
|
||||
|
||||
ksk=`$KEYGEN -q -a RSASHA256 -b 2048 -fk $zone`
|
||||
zsk=`$KEYGEN -q -a RSASHA256 -b 1024 $zone`
|
||||
$SIGNER -S -o $zone example.db > /dev/null
|
||||
$SIGNER -S -o $zone -f $signedfile $zonefile > /dev/null
|
||||
|
||||
zone=wildcard-secure.example.
|
||||
zonefile=wildcard-secure.db
|
||||
signedfile=wildcard-secure.example.db.signed
|
||||
|
||||
ksk=`$KEYGEN -q -a RSASHA256 -b 2048 -fk $zone`
|
||||
zsk=`$KEYGEN -q -a RSASHA256 -b 1024 $zone`
|
||||
$SIGNER -S -o $zone -f $signedfile $zonefile > /dev/null
|
||||
|
||||
zone=wildcard-nsec.example.
|
||||
zonefile=wildcard.db
|
||||
signedfile=wildcard-nsec.example.db.signed
|
||||
|
||||
ksk=`$KEYGEN -q -a RSASHA256 -b 2048 -fk $zone`
|
||||
zsk=`$KEYGEN -q -a RSASHA256 -b 1024 $zone`
|
||||
$SIGNER -S -o $zone -f $signedfile $zonefile > /dev/null
|
||||
|
||||
zone=wildcard-nsec3.example.
|
||||
zonefile=wildcard.db
|
||||
signedfile=wildcard-nsec3.example.db.signed
|
||||
|
||||
ksk=`$KEYGEN -q -a RSASHA256 -b 2048 -fk $zone`
|
||||
zsk=`$KEYGEN -q -a RSASHA256 -b 1024 $zone`
|
||||
$SIGNER -S -3 - -H 0 -o $zone -f $signedfile $zonefile > /dev/null
|
||||
|
||||
zone=wildcard-nsec3-optout.example.
|
||||
zonefile=wildcard.db
|
||||
signedfile=wildcard-nsec3-optout.example.db.signed
|
||||
|
||||
ksk=`$KEYGEN -q -a RSASHA256 -b 2048 -fk $zone`
|
||||
zsk=`$KEYGEN -q -a RSASHA256 -b 1024 $zone`
|
||||
$SIGNER -S -3 - -H 0 -A -o $zone -f $signedfile $zonefile > /dev/null
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
; 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 http://mozilla.org/MPL/2.0/.
|
||||
;
|
||||
; See the COPYRIGHT file distributed with this work for additional
|
||||
; information regarding copyright ownership.
|
||||
|
||||
$TTL 300 ; 5 minutes
|
||||
@ IN SOA mname1. . (
|
||||
2021051901 ; serial
|
||||
20 ; refresh (20 seconds)
|
||||
20 ; retry (20 seconds)
|
||||
1814400 ; expire (3 weeks)
|
||||
3600 ; minimum (1 hour)
|
||||
)
|
||||
NS localhost.
|
||||
|
||||
delegation NS localhost.
|
||||
DS 12345 13 2 0000000000000000000000000000000000000000000000000000000000000000
|
||||
|
||||
; CNAME pointing into a child zone
|
||||
cname CNAME delegation
|
||||
|
||||
; wildcard CNAME pointing at a CNAME pointing into a child zone
|
||||
* CNAME cname
|
|
@ -0,0 +1,26 @@
|
|||
; 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 http://mozilla.org/MPL/2.0/.
|
||||
;
|
||||
; See the COPYRIGHT file distributed with this work for additional
|
||||
; information regarding copyright ownership.
|
||||
|
||||
$TTL 300 ; 5 minutes
|
||||
@ IN SOA mname1. . (
|
||||
2021051901 ; serial
|
||||
20 ; refresh (20 seconds)
|
||||
20 ; retry (20 seconds)
|
||||
1814400 ; expire (3 weeks)
|
||||
3600 ; minimum (1 hour)
|
||||
)
|
||||
NS localhost.
|
||||
|
||||
delegation NS localhost.
|
||||
|
||||
; CNAME pointing into a child zone
|
||||
cname CNAME delegation
|
||||
|
||||
; wildcard CNAME pointing at a CNAME pointing into a child zone
|
||||
* CNAME cname
|
|
@ -78,6 +78,313 @@ grep '^toolong-dname\.example\..*DNAME.*long' dig.out.ns4.uncachedtoolong > /dev
|
|||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
find_records() {
|
||||
owner_name="$1"
|
||||
rr_type="$2"
|
||||
file="$3"
|
||||
awk '$1 == "'"$owner_name"'" && $4 == "'"$rr_type"'" { print }' < "$file"
|
||||
}
|
||||
|
||||
count_records() {
|
||||
owner_name="$1"
|
||||
rr_type="$2"
|
||||
file="$3"
|
||||
find_records "$owner_name" "$rr_type" "$file" | wc -l
|
||||
}
|
||||
|
||||
exactly_one_record_exists_for() {
|
||||
owner_name="$1"
|
||||
rr_type="$2"
|
||||
file="$3"
|
||||
test "$(count_records "$owner_name" "$rr_type" "$file")" -eq 1
|
||||
}
|
||||
|
||||
no_records_exist_for() {
|
||||
owner_name="$1"
|
||||
rr_type="$2"
|
||||
file="$3"
|
||||
test "$(count_records "$owner_name" "$rr_type" "$file")" -eq 0
|
||||
}
|
||||
|
||||
ensure_no_ds_in_bitmap() {
|
||||
owner_name="$1"
|
||||
rr_type="$2"
|
||||
file="$3"
|
||||
case "$rr_type" in
|
||||
NSEC) start_index=6 ;;
|
||||
NSEC3) start_index=10 ;;
|
||||
*) exit 1 ;;
|
||||
esac
|
||||
find_records "$owner_name" "$rr_type" "$file" | awk '{ for (i='"$start_index"'; i<=NF; i++) if ($i == "DS") exit 1 }'
|
||||
}
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking secure delegation prepared using CNAME chaining ($n)"
|
||||
ret=0
|
||||
# QNAME exists, so the AUTHORITY section should only contain an NS RRset and a
|
||||
# DS RRset.
|
||||
$DIG $DIGOPTS @10.53.0.2 cname.wildcard-secure.example A +norec +dnssec > dig.out.2.$n 2>&1 || ret=1
|
||||
# Ensure that the AUTHORITY section contains the expected NS and DS RRsets.
|
||||
exactly_one_record_exists_for "delegation.wildcard-secure.example." NS dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "delegation.wildcard-secure.example." DS dig.out.2.$n || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking secure delegation prepared using wildcard expansion + CNAME chaining ($n)"
|
||||
ret=0
|
||||
# QNAME does not exist, so the AUTHORITY section should contain an NS RRset, an
|
||||
# NSEC record proving nonexistence of QNAME, and a DS RRset at the zone cut.
|
||||
$DIG $DIGOPTS @10.53.0.2 a-nonexistent-name.wildcard-secure.example A +norec +dnssec > dig.out.2.$n 2>&1 || ret=1
|
||||
# Ensure that the AUTHORITY section contains the expected NS and DS RRsets.
|
||||
exactly_one_record_exists_for "delegation.wildcard-secure.example." NS dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "delegation.wildcard-secure.example." DS dig.out.2.$n || ret=1
|
||||
# Check NSEC records in the AUTHORITY section.
|
||||
no_records_exist_for "wildcard-secure.example." NSEC dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "*.wildcard-secure.example." NSEC dig.out.2.$n || ret=1
|
||||
no_records_exist_for "cname.wildcard-secure.example." NSEC dig.out.2.$n || ret=1
|
||||
no_records_exist_for "delegation.wildcard-secure.example." NSEC dig.out.2.$n || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking insecure delegation prepared using CNAME chaining, NSEC ($n)"
|
||||
ret=0
|
||||
# QNAME exists, so the AUTHORITY section should only contain an NS RRset and a
|
||||
# single NSEC record proving nonexistence of a DS RRset at the zone cut.
|
||||
$DIG $DIGOPTS @10.53.0.2 cname.wildcard-nsec.example A +norec +dnssec > dig.out.2.$n 2>&1 || ret=1
|
||||
# Ensure that the AUTHORITY section contains an NS RRset without an associated
|
||||
# DS RRset.
|
||||
exactly_one_record_exists_for "delegation.wildcard-nsec.example." NS dig.out.2.$n || ret=1
|
||||
no_records_exist_for "delegation.wildcard-nsec.example." DS dig.out.2.$n || ret=1
|
||||
# Check NSEC records in the AUTHORITY section.
|
||||
no_records_exist_for "wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
no_records_exist_for "*.wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
no_records_exist_for "cname.wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "delegation.wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
# Ensure the NSEC record for the zone cut does not have the DS bit set in the
|
||||
# type bit map.
|
||||
ensure_no_ds_in_bitmap "delegation.wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking insecure delegation prepared using wildcard expansion + CNAME chaining, NSEC, QNAME #1 ($n)"
|
||||
ret=0
|
||||
# QNAME does not exist, so the AUTHORITY section should contain an NS RRset and
|
||||
# NSEC records proving nonexistence of both QNAME and a DS RRset at the zone
|
||||
# cut. In this test case, these two NSEC records are different.
|
||||
$DIG $DIGOPTS @10.53.0.2 a-nonexistent-name.wildcard-nsec.example A +norec +dnssec > dig.out.2.$n 2>&1 || ret=1
|
||||
# Ensure that the AUTHORITY section contains an NS RRset without an associated
|
||||
# DS RRset.
|
||||
exactly_one_record_exists_for "delegation.wildcard-nsec.example." NS dig.out.2.$n || ret=1
|
||||
no_records_exist_for "delegation.wildcard-nsec.example." DS dig.out.2.$n || ret=1
|
||||
# Check NSEC records in the AUTHORITY section.
|
||||
no_records_exist_for "wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "*.wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
no_records_exist_for "cname.wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "delegation.wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
# Ensure the NSEC record for the zone cut does not have the DS bit set in the
|
||||
# type bit map.
|
||||
ensure_no_ds_in_bitmap "delegation.wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking insecure delegation prepared using wildcard expansion + CNAME chaining, NSEC, QNAME #2 ($n)"
|
||||
ret=0
|
||||
# QNAME does not exist, so the AUTHORITY section should contain an NS RRset and
|
||||
# NSEC records proving nonexistence of both QNAME and a DS RRset at the zone
|
||||
# cut. In this test case, the same NSEC record proves nonexistence of both the
|
||||
# QNAME and the DS RRset at the zone cut.
|
||||
$DIG $DIGOPTS @10.53.0.2 z-nonexistent-name.wildcard-nsec.example A +norec +dnssec > dig.out.2.$n 2>&1 || ret=1
|
||||
# Ensure that the AUTHORITY section contains an NS RRset without an associated
|
||||
# DS RRset.
|
||||
exactly_one_record_exists_for "delegation.wildcard-nsec.example." NS dig.out.2.$n || ret=1
|
||||
no_records_exist_for "delegation.wildcard-nsec.example." DS dig.out.2.$n || ret=1
|
||||
# Check NSEC records in the AUTHORITY section.
|
||||
no_records_exist_for "wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
no_records_exist_for "*.wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
no_records_exist_for "cname.wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "delegation.wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
# Ensure the NSEC record for the zone cut does not have the DS bit set in the
|
||||
# type bit map.
|
||||
ensure_no_ds_in_bitmap "delegation.wildcard-nsec.example." NSEC dig.out.2.$n || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
# Relevant NSEC3 hashes:
|
||||
#
|
||||
# - existing names:
|
||||
#
|
||||
# $ nsec3hash - 1 0 wildcard-nsec3.example.
|
||||
# 38IVP9CN0LBISO6H3V5REQCKMTHLI5AN (salt=-, hash=1, iterations=0)
|
||||
# $ nsec3hash - 1 0 cname.wildcard-nsec3.example.
|
||||
# 3DV6GNNVR0O8LA4DC4CHL2JTVNHT8Q1D (salt=-, hash=1, iterations=0)
|
||||
# $ nsec3hash - 1 0 delegation.wildcard-nsec3.example.
|
||||
# AVKOGGGVJHFSLQA68TILKFKJ94AV4MNC (salt=-, hash=1, iterations=0)
|
||||
# $ nsec3hash - 1 0 *.wildcard-nsec3.example.
|
||||
# Q64D8L8HLSB3L98S59PM8OSSMI7SMQA2 (salt=-, hash=1, iterations=0)
|
||||
#
|
||||
# - nonexistent names:
|
||||
#
|
||||
# $ nsec3hash - 1 0 a-nonexistent-name.wildcard-nsec3.example.
|
||||
# PST9IH6M0DG3M139CO3G12NUP4ER88SH (salt=-, hash=1, iterations=0)
|
||||
# $ nsec3hash - 1 0 z-nonexistent-name.wildcard-nsec3.example.
|
||||
# SG2DEHEAOGCKP7FTNQAUVC3I3TIPJH0J (salt=-, hash=1, iterations=0)
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking insecure delegation prepared using CNAME chaining, NSEC3 ($n)"
|
||||
ret=0
|
||||
# QNAME exists, so the AUTHORITY section should only contain an NS RRset and a
|
||||
# single NSEC3 record proving nonexistence of a DS RRset at the zone cut.
|
||||
$DIG $DIGOPTS @10.53.0.2 cname.wildcard-nsec3.example A +norec +dnssec > dig.out.2.$n 2>&1 || ret=1
|
||||
# Ensure that the AUTHORITY section contains an NS RRset without an associated
|
||||
# DS RRset.
|
||||
exactly_one_record_exists_for "delegation.wildcard-nsec3.example." NS dig.out.2.$n || ret=1
|
||||
no_records_exist_for "delegation.wildcard-nsec3.example." DS dig.out.2.$n || ret=1
|
||||
# Check NSEC3 records in the AUTHORITY section.
|
||||
no_records_exist_for "38IVP9CN0LBISO6H3V5REQCKMTHLI5AN.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
no_records_exist_for "3DV6GNNVR0O8LA4DC4CHL2JTVNHT8Q1D.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "AVKOGGGVJHFSLQA68TILKFKJ94AV4MNC.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
no_records_exist_for "Q64D8L8HLSB3L98S59PM8OSSMI7SMQA2.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
# Ensure the NSEC3 record matching the zone cut does not have the DS bit set in
|
||||
# the type bit map.
|
||||
ensure_no_ds_in_bitmap "AVKOGGGVJHFSLQA68TILKFKJ94AV4MNC.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking insecure delegation prepared using wildcard expansion + CNAME chaining, NSEC3, QNAME #1 ($n)"
|
||||
ret=0
|
||||
# QNAME does not exist, so the AUTHORITY section should contain an NS RRset and
|
||||
# NSEC3 records proving nonexistence of both QNAME and a DS RRset at the zone
|
||||
# cut. In this test case, these two NSEC3 records are different.
|
||||
$DIG $DIGOPTS @10.53.0.2 z-nonexistent-name.wildcard-nsec3.example A +norec +dnssec > dig.out.2.$n 2>&1 || ret=1
|
||||
# Ensure that the AUTHORITY section contains an NS RRset without an associated
|
||||
# DS RRset.
|
||||
exactly_one_record_exists_for "delegation.wildcard-nsec3.example." NS dig.out.2.$n || ret=1
|
||||
no_records_exist_for "delegation.wildcard-nsec3.example." DS dig.out.2.$n || ret=1
|
||||
# Check NSEC3 records in the AUTHORITY section.
|
||||
no_records_exist_for "38IVP9CN0LBISO6H3V5REQCKMTHLI5AN.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
no_records_exist_for "3DV6GNNVR0O8LA4DC4CHL2JTVNHT8Q1D.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "AVKOGGGVJHFSLQA68TILKFKJ94AV4MNC.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "Q64D8L8HLSB3L98S59PM8OSSMI7SMQA2.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
# Ensure the NSEC3 record matching the zone cut does not have the DS bit set in
|
||||
# the type bit map.
|
||||
ensure_no_ds_in_bitmap "AVKOGGGVJHFSLQA68TILKFKJ94AV4MNC.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking insecure delegation prepared using wildcard expansion + CNAME chaining, NSEC3, QNAME #2 ($n)"
|
||||
ret=0
|
||||
# QNAME does not exist, so the AUTHORITY section should contain an NS RRset and
|
||||
# NSEC3 records proving nonexistence of both QNAME and a DS RRset at the zone
|
||||
# cut. In this test case, the same NSEC3 record proves nonexistence of both the
|
||||
# QNAME and the DS RRset at the zone cut.
|
||||
$DIG $DIGOPTS @10.53.0.2 a-nonexistent-name.wildcard-nsec3.example A +norec +dnssec > dig.out.2.$n 2>&1 || ret=1
|
||||
# Ensure that the AUTHORITY section contains an NS RRset without an associated
|
||||
# DS RRset.
|
||||
exactly_one_record_exists_for "delegation.wildcard-nsec3.example." NS dig.out.2.$n || ret=1
|
||||
no_records_exist_for "delegation.wildcard-nsec3.example." DS dig.out.2.$n || ret=1
|
||||
# Check NSEC3 records in the AUTHORITY section.
|
||||
no_records_exist_for "38IVP9CN0LBISO6H3V5REQCKMTHLI5AN.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
no_records_exist_for "3DV6GNNVR0O8LA4DC4CHL2JTVNHT8Q1D.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "AVKOGGGVJHFSLQA68TILKFKJ94AV4MNC.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
no_records_exist_for "Q64D8L8HLSB3L98S59PM8OSSMI7SMQA2.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
# Ensure the NSEC3 record matching the zone cut does not have the DS bit set in
|
||||
# the type bit map.
|
||||
ensure_no_ds_in_bitmap "AVKOGGGVJHFSLQA68TILKFKJ94AV4MNC.wildcard-nsec3.example." NSEC3 dig.out.2.$n || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
# Relevant NSEC3 hashes:
|
||||
#
|
||||
# - existing names with corresponding NSEC3 records:
|
||||
#
|
||||
# $ nsec3hash - 1 0 *.wildcard-nsec3-optout.example.
|
||||
# 2JGSPT59VJ7R9SQB5B9P6HPM5JBATOOO (salt=-, hash=1, iterations=0)
|
||||
# $ nsec3hash - 1 0 cname.wildcard-nsec3-optout.example.
|
||||
# OKRFKC9SS1O60E8U2980UD62MUSMKGUG (salt=-, hash=1, iterations=0)
|
||||
# $ nsec3hash - 1 0 wildcard-nsec3-optout.example.
|
||||
# SS5M1RUBSGMANEQ1VLRDDEC6SOAT7HNI (salt=-, hash=1, iterations=0)
|
||||
#
|
||||
# - existing name with no corresponding NSEC3 record due to opt-out:
|
||||
#
|
||||
# $ nsec3hash - 1 0 delegation.wildcard-nsec3-optout.example.
|
||||
# UFP8PVECFTD57HU5PUD2HE0ES37QEOAP (salt=-, hash=1, iterations=0)
|
||||
#
|
||||
# - nonexistent names:
|
||||
#
|
||||
# $ nsec3hash - 1 0 b-nonexistent-name.wildcard-nsec3-optout.example.
|
||||
# 3J38JE2OU0O7B4CE2ADMBBKJ5HT994S5 (salt=-, hash=1, iterations=0)
|
||||
# $ nsec3hash - 1 0 z-nonexistent-name.wildcard-nsec3-optout.example.
|
||||
# V7OTS4791T9SU0HKVL93EVNAJ9JH2CH3 (salt=-, hash=1, iterations=0)
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking insecure delegation prepared using CNAME chaining, NSEC3 with opt-out ($n)"
|
||||
ret=0
|
||||
# QNAME exists, so the AUTHORITY section should only contain an NS RRset and a
|
||||
# single NSEC3 record proving nonexistence of a DS RRset at the zone cut.
|
||||
$DIG $DIGOPTS @10.53.0.2 cname.wildcard-nsec3-optout.example A +norec +dnssec > dig.out.2.$n 2>&1 || ret=1
|
||||
# Ensure that the AUTHORITY section contains an NS RRset without an associated
|
||||
# DS RRset.
|
||||
exactly_one_record_exists_for "delegation.wildcard-nsec3-optout.example." NS dig.out.2.$n || ret=1
|
||||
no_records_exist_for "delegation.wildcard-nsec3-optout.example." DS dig.out.2.$n || ret=1
|
||||
# Check NSEC3 records in the AUTHORITY section.
|
||||
no_records_exist_for "2JGSPT59VJ7R9SQB5B9P6HPM5JBATOOO.wildcard-nsec3-optout.example." NSEC3 dig.out.2.$n || ret=1
|
||||
no_records_exist_for "OKRFKC9SS1O60E8U2980UD62MUSMKGUG.wildcard-nsec3-optout.example." NSEC3 dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "SS5M1RUBSGMANEQ1VLRDDEC6SOAT7HNI.wildcard-nsec3-optout.example." NSEC3 dig.out.2.$n || ret=1
|
||||
# Ensure the NSEC3 record covering the zone cut does not have the DS bit set in
|
||||
# the type bit map.
|
||||
ensure_no_ds_in_bitmap "SS5M1RUBSGMANEQ1VLRDDEC6SOAT7HNI.wildcard-nsec3-optout.example." NSEC3 dig.out.2.$n || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking insecure delegation prepared using wildcard expansion + CNAME chaining, NSEC3 with opt-out, QNAME #1 ($n)"
|
||||
ret=0
|
||||
# QNAME does not exist, so the AUTHORITY section should contain an NS RRset and
|
||||
# NSEC3 records proving nonexistence of both QNAME and a DS RRset at the zone
|
||||
# cut. In this test case, these two NSEC3 records are different.
|
||||
$DIG $DIGOPTS @10.53.0.2 b-nonexistent-name.wildcard-nsec3-optout.example A +norec +dnssec > dig.out.2.$n 2>&1 || ret=1
|
||||
# Ensure that the AUTHORITY section contains an NS RRset without an associated
|
||||
# DS RRset.
|
||||
exactly_one_record_exists_for "delegation.wildcard-nsec3-optout.example." NS dig.out.2.$n || ret=1
|
||||
no_records_exist_for "delegation.wildcard-nsec3-optout.example." DS dig.out.2.$n || ret=1
|
||||
# Check NSEC3 records in the AUTHORITY section.
|
||||
exactly_one_record_exists_for "2JGSPT59VJ7R9SQB5B9P6HPM5JBATOOO.wildcard-nsec3-optout.example." NSEC3 dig.out.2.$n || ret=1
|
||||
no_records_exist_for "OKRFKC9SS1O60E8U2980UD62MUSMKGUG.wildcard-nsec3-optout.example." NSEC3 dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "SS5M1RUBSGMANEQ1VLRDDEC6SOAT7HNI.wildcard-nsec3-optout.example." NSEC3 dig.out.2.$n || ret=1
|
||||
# Ensure the NSEC3 record covering the zone cut does not have the DS bit set in
|
||||
# the type bit map.
|
||||
ensure_no_ds_in_bitmap "SS5M1RUBSGMANEQ1VLRDDEC6SOAT7HNI.wildcard-nsec3-optout.example." NSEC3 dig.out.2.$n || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking insecure delegation prepared using wildcard expansion + CNAME chaining, NSEC3 with opt-out, QNAME #2 ($n)"
|
||||
ret=0
|
||||
# QNAME does not exist, so the AUTHORITY section should contain an NS RRset and
|
||||
# NSEC3 records proving nonexistence of both QNAME and a DS RRset at the zone
|
||||
# cut. In this test case, the same NSEC3 record proves nonexistence of both the
|
||||
# QNAME and the DS RRset at the zone cut.
|
||||
$DIG $DIGOPTS @10.53.0.2 z-nonexistent-name.wildcard-nsec3-optout.example A +norec +dnssec > dig.out.2.$n 2>&1 || ret=1
|
||||
# Ensure that the AUTHORITY section contains an NS RRset without an associated
|
||||
# DS RRset.
|
||||
exactly_one_record_exists_for "delegation.wildcard-nsec3-optout.example." NS dig.out.2.$n || ret=1
|
||||
no_records_exist_for "delegation.wildcard-nsec3-optout.example." DS dig.out.2.$n || ret=1
|
||||
# Check NSEC3 records in the AUTHORITY section.
|
||||
no_records_exist_for "2JGSPT59VJ7R9SQB5B9P6HPM5JBATOOO.wildcard-nsec3-optout.example." NSEC3 dig.out.2.$n || ret=1
|
||||
no_records_exist_for "OKRFKC9SS1O60E8U2980UD62MUSMKGUG.wildcard-nsec3-optout.example." NSEC3 dig.out.2.$n || ret=1
|
||||
exactly_one_record_exists_for "SS5M1RUBSGMANEQ1VLRDDEC6SOAT7HNI.wildcard-nsec3-optout.example." NSEC3 dig.out.2.$n || ret=1
|
||||
# Ensure the NSEC3 record covering the zone cut does not have the DS bit set in
|
||||
# the type bit map.
|
||||
ensure_no_ds_in_bitmap "SS5M1RUBSGMANEQ1VLRDDEC6SOAT7HNI.wildcard-nsec3-optout.example." NSEC3 dig.out.2.$n || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking CNAME to DNAME from authoritative ($n)"
|
||||
ret=0
|
||||
|
@ -292,5 +599,23 @@ grep 'status: NOERROR' dig.out.7.$n > /dev/null 2>&1 || ret=1
|
|||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
# Regression test for CVE-2021-25215 (authoritative server).
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking DNAME resolution via itself (authoritative) ($n)"
|
||||
ret=0
|
||||
$DIG $DIGOPTS @10.53.0.2 DNAME self.domain0.self.domain0.nil. > dig.out.2.$n 2>&1
|
||||
grep 'status: NOERROR' dig.out.2.$n > /dev/null 2>&1 || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
# Regression test for CVE-2021-25215 (recursive resolver).
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking DNAME resolution via itself (recursive) ($n)"
|
||||
ret=0
|
||||
$DIG $DIGOPTS @10.53.0.7 DNAME self.example.self.example.dname. > dig.out.7.$n 2>&1
|
||||
grep 'status: NOERROR' dig.out.7.$n > /dev/null 2>&1 || ret=1
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo_i "exit status: $status"
|
||||
[ $status -eq 0 ] || exit 1
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/*
|
||||
* inline-signing not allowed at options level.
|
||||
*/
|
||||
options {
|
||||
inline-signing yes;
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type primary;
|
||||
file "root.db";
|
||||
};
|
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/*
|
||||
* inline-signing not allowed at view level.
|
||||
*/
|
||||
view "a" {
|
||||
inline-signing yes;
|
||||
|
||||
zone "." {
|
||||
type primary;
|
||||
file "root.db.signed";
|
||||
};
|
||||
};
|
||||
|
||||
view "b" {
|
||||
zone "." {
|
||||
type primary;
|
||||
file "root.db";
|
||||
};
|
||||
};
|
21
external/mpl/bind/dist/bin/tests/system/checkconf/bad-kasp-define-default.conf
vendored
Normal file
21
external/mpl/bind/dist/bin/tests/system/checkconf/bad-kasp-define-default.conf
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// 'default' is a built-in policy, redefinition not allowed.
|
||||
dnssec-policy "default" {
|
||||
signatures-refresh P5D;
|
||||
};
|
||||
|
||||
zone "example.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "default";
|
||||
};
|
21
external/mpl/bind/dist/bin/tests/system/checkconf/bad-kasp-define-insecure.conf
vendored
Normal file
21
external/mpl/bind/dist/bin/tests/system/checkconf/bad-kasp-define-insecure.conf
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// 'insecure' is a built-in policy, redefinition not allowed.
|
||||
dnssec-policy "insecure" {
|
||||
signatures-refresh P5D;
|
||||
};
|
||||
|
||||
zone "example.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "insecure";
|
||||
};
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// 'none' is a built-in policy, redefinition not allowed.
|
||||
dnssec-policy "none" {
|
||||
signatures-refresh P5D;
|
||||
};
|
||||
|
||||
zone "example.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "none";
|
||||
};
|
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/*
|
||||
* The same zone in different views is using different DNSSEC policies, so it
|
||||
* may not have the same key-directory.
|
||||
*/
|
||||
|
||||
|
||||
key "keyforview1" {
|
||||
algorithm "hmac-sha1";
|
||||
secret "YPfMoAk6h+3iN8MDRQC004iSNHY=";
|
||||
};
|
||||
|
||||
key "keyforview2" {
|
||||
algorithm "hmac-sha1";
|
||||
secret "4xILSZQnuO1UKubXHkYUsvBRPu8=";
|
||||
};
|
||||
|
||||
view "example1" {
|
||||
match-clients { key "keyforview1"; };
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
dnssec-policy "default";
|
||||
key-directory ".";
|
||||
file "example1.db";
|
||||
};
|
||||
};
|
||||
|
||||
view "example2" {
|
||||
match-clients { key "keyforview2"; };
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
dnssec-policy "insecure";
|
||||
key-directory ".";
|
||||
file "example2.db";
|
||||
};
|
||||
};
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/*
|
||||
* No key-directory is set, so the default is used.
|
||||
* Should fail because the same zone in different views is using different
|
||||
* DNSSEC policies.
|
||||
*/
|
||||
|
||||
key "keyforview1" {
|
||||
algorithm "hmac-sha1";
|
||||
secret "YPfMoAk6h+3iN8MDRQC004iSNHY=";
|
||||
};
|
||||
|
||||
key "keyforview2" {
|
||||
algorithm "hmac-sha1";
|
||||
secret "4xILSZQnuO1UKubXHkYUsvBRPu8=";
|
||||
};
|
||||
|
||||
view "example1" {
|
||||
match-clients { key "keyforview1"; };
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
dnssec-policy "default";
|
||||
file "example1.db";
|
||||
};
|
||||
};
|
||||
|
||||
view "example2" {
|
||||
match-clients { key "keyforview2"; };
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
dnssec-policy "insecure";
|
||||
file "example2.db";
|
||||
};
|
||||
};
|
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/*
|
||||
* The zone in view "example1" inherits the key directory value from "options",
|
||||
* but in view "example2" sets the key directory to the same value. This should
|
||||
* be detected as an error because the zone is using different DNSSEC policies
|
||||
* and should thus use different key directories.
|
||||
*/
|
||||
|
||||
key "keyforview1" {
|
||||
algorithm "hmac-sha1";
|
||||
secret "YPfMoAk6h+3iN8MDRQC004iSNHY=";
|
||||
};
|
||||
|
||||
key "keyforview2" {
|
||||
algorithm "hmac-sha1";
|
||||
secret "4xILSZQnuO1UKubXHkYUsvBRPu8=";
|
||||
};
|
||||
|
||||
options {
|
||||
key-directory "keys";
|
||||
};
|
||||
|
||||
view "example1" {
|
||||
match-clients { key "keyforview1"; };
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
/* key-directory inherited from options. */
|
||||
dnssec-policy "default";
|
||||
file "example1.db";
|
||||
};
|
||||
};
|
||||
|
||||
view "example2" {
|
||||
match-clients { key "keyforview2"; };
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
dnssec-policy "insecure";
|
||||
key-directory "keys";
|
||||
file "example2.db";
|
||||
};
|
||||
};
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/*
|
||||
* The zone inherits the key-directory from the "view" level. Both views use the
|
||||
* same key-directory, but the zone uses a different DNSSEC policy per view.
|
||||
* This is a configuration error.
|
||||
*/
|
||||
|
||||
key "keyforview1" {
|
||||
algorithm "hmac-sha1";
|
||||
secret "YPfMoAk6h+3iN8MDRQC004iSNHY=";
|
||||
};
|
||||
|
||||
key "keyforview2" {
|
||||
algorithm "hmac-sha1";
|
||||
secret "4xILSZQnuO1UKubXHkYUsvBRPu8=";
|
||||
};
|
||||
|
||||
view "example1" {
|
||||
match-clients { key "keyforview1"; };
|
||||
|
||||
key-directory "keys";
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
dnssec-policy "default";
|
||||
file "example1.db";
|
||||
};
|
||||
};
|
||||
|
||||
view "example2" {
|
||||
match-clients { key "keyforview2"; };
|
||||
|
||||
key-directory "keys";
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
dnssec-policy "insecure";
|
||||
file "example2.db";
|
||||
};
|
||||
};
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/*
|
||||
* In one view, the zone inherits the key-directory from the "view" level, while
|
||||
* in the other it is set explicitly at the "zone" level. In both cases, the
|
||||
* same key-directory is used, but the zone uses a different DNSSEC policy per
|
||||
* view. This is a configuration error.
|
||||
*/
|
||||
|
||||
key "keyforview1" {
|
||||
algorithm "hmac-sha1";
|
||||
secret "YPfMoAk6h+3iN8MDRQC004iSNHY=";
|
||||
};
|
||||
|
||||
key "keyforview2" {
|
||||
algorithm "hmac-sha1";
|
||||
secret "4xILSZQnuO1UKubXHkYUsvBRPu8=";
|
||||
};
|
||||
|
||||
view "example1" {
|
||||
match-clients { key "keyforview1"; };
|
||||
|
||||
key-directory "keys";
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
dnssec-policy "default";
|
||||
file "example1.db";
|
||||
};
|
||||
};
|
||||
|
||||
view "example2" {
|
||||
match-clients { key "keyforview2"; };
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
dnssec-policy "insecure";
|
||||
key-directory "keys";
|
||||
file "example2.db";
|
||||
};
|
||||
};
|
23
external/mpl/bind/dist/bin/tests/system/checkconf/bad-kasp-policy-undefined-inherited-view.conf
vendored
Normal file
23
external/mpl/bind/dist/bin/tests/system/checkconf/bad-kasp-policy-undefined-inherited-view.conf
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/*
|
||||
* The dnssec-policy is not defined. Should also be caught if it is inherited.
|
||||
*/
|
||||
|
||||
view "test" {
|
||||
dnssec-policy "notdefined";
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
file "example.db";
|
||||
};
|
||||
};
|
23
external/mpl/bind/dist/bin/tests/system/checkconf/bad-kasp-policy-undefined-inherited.conf
vendored
Normal file
23
external/mpl/bind/dist/bin/tests/system/checkconf/bad-kasp-policy-undefined-inherited.conf
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
/*
|
||||
* The dnssec-policy is not defined. Should also be caught if it is inherited.
|
||||
*/
|
||||
|
||||
options {
|
||||
dnssec-policy "notdefined";
|
||||
};
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
file "example.db";
|
||||
};
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// One zone with dnssec-policy 'none', one zone with dnssec-policy 'insecure',
|
||||
// both using the same zone file.
|
||||
|
||||
zone "example1.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "none";
|
||||
};
|
||||
|
||||
zone "example2.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "insecure";
|
||||
};
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// One zone with a dnssec-policy, the other with allow-update,
|
||||
// with the same zone file.
|
||||
|
||||
zone "example1.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "default";
|
||||
};
|
||||
|
||||
zone "example2.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
allow-update { any; };
|
||||
};
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// One zone with a dnssec-policy, the other with update-policy,
|
||||
// with the same zone file.
|
||||
|
||||
zone "example1.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "default";
|
||||
};
|
||||
|
||||
zone "example2.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
update-policy {
|
||||
grant * self * TXT;
|
||||
};
|
||||
};
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// One zone transitioning to insecure, the other with allow-update,
|
||||
// with the same zone file.
|
||||
|
||||
zone "example1.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "insecure";
|
||||
};
|
||||
|
||||
zone "example2.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
allow-update { any; };
|
||||
};
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// Two zones with dnssec-policy with the same zone file.
|
||||
|
||||
zone "example1.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "default";
|
||||
};
|
||||
|
||||
zone "example2.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "default";
|
||||
};
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// Two zones with dnssec-policy 'insecure' (transitioning to insecure)
|
||||
// with the same zone file.
|
||||
|
||||
zone "example1.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "insecure";
|
||||
};
|
||||
|
||||
zone "example2.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "insecure";
|
||||
};
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// One zone with dnssec-policy, the other zone has 'dnssec-policy none',
|
||||
// both with the same zone file.
|
||||
|
||||
zone "example1.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "default";
|
||||
};
|
||||
|
||||
zone "example2.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "none";
|
||||
};
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// One zone with dnssec-policy, the other zone has 'dnssec-policy insecure'
|
||||
// (transitioning to inseure), both with the same zone file.
|
||||
|
||||
zone "example1.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "default";
|
||||
};
|
||||
|
||||
zone "example2.net" {
|
||||
type master;
|
||||
file "example.db";
|
||||
dnssec-policy "insecure";
|
||||
};
|
||||
|
19
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-def-options.conf
vendored
Normal file
19
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-def-options.conf
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
options {
|
||||
parental-agents { 192.168.1.2; };
|
||||
};
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
file "example.net.db";
|
||||
};
|
18
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-def-view.conf
vendored
Normal file
18
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-def-view.conf
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
view "test" {
|
||||
parental-agents { 192.168.1.2; };
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
file "example.net.db";
|
||||
};
|
||||
};
|
20
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-def-view2.conf
vendored
Normal file
20
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-def-view2.conf
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
view "test" {
|
||||
parental-agents "net" {
|
||||
192.168.1.2;
|
||||
};
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
file "example.net.db";
|
||||
};
|
||||
};
|
16
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-def-zone.conf
vendored
Normal file
16
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-def-zone.conf
vendored
Normal file
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
file "example.net.db";
|
||||
parental-agents "net" { 192.168.1.1; };
|
||||
};
|
17
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-dup.conf
vendored
Normal file
17
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-dup.conf
vendored
Normal file
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
file "example.net.db";
|
||||
parental-agents { 192.168.1.1; };
|
||||
parental-agents { 192.168.1.1; };
|
||||
};
|
24
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-dupdef.conf
vendored
Normal file
24
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-dupdef.conf
vendored
Normal file
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
parental-agents "net" {
|
||||
192.168.1.1;
|
||||
};
|
||||
|
||||
parental-agents "net" {
|
||||
192.168.1.2;
|
||||
};
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
file "example.net.db";
|
||||
parental-agents { "net"; };
|
||||
};
|
18
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-empty.conf
vendored
Normal file
18
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-empty.conf
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
parental-agents "net" { };
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
file "example.net.db";
|
||||
parental-agents { "net"; };
|
||||
};
|
16
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-empty2.conf
vendored
Normal file
16
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-empty2.conf
vendored
Normal file
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
file "example.net.db";
|
||||
parental-agents { };
|
||||
};
|
16
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-mirror.conf
vendored
Normal file
16
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-mirror.conf
vendored
Normal file
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
zone "." {
|
||||
type mirror;
|
||||
file "root.mirror";
|
||||
parental-agents { 192.168.1.1; };
|
||||
};
|
20
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-notfound.conf
vendored
Normal file
20
external/mpl/bind/dist/bin/tests/system/checkconf/bad-parental-agents-notfound.conf
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
parental-agents "com" {
|
||||
192.168.1.2;
|
||||
};
|
||||
|
||||
zone "example.net" {
|
||||
type primary;
|
||||
file "example.net.db";
|
||||
parental-agents { "net"; };
|
||||
};
|
19
external/mpl/bind/dist/bin/tests/system/checkconf/bad-primaries-notfound.conf
vendored
Normal file
19
external/mpl/bind/dist/bin/tests/system/checkconf/bad-primaries-notfound.conf
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
primaries "net" {
|
||||
192.168.1.2;
|
||||
};
|
||||
|
||||
zone "example.net" {
|
||||
type secondary;
|
||||
primaries { "foo"; };
|
||||
};
|
|
@ -49,8 +49,13 @@ zone "example3" {
|
|||
file "example3.db";
|
||||
dnssec-policy "default";
|
||||
};
|
||||
zone "example4" {
|
||||
zone "dnssec-policy-none-shared-zonefile1" {
|
||||
type master;
|
||||
file "example4.db";
|
||||
file "shared.db";
|
||||
dnssec-policy "none";
|
||||
};
|
||||
zone "dnssec-policy-none-shared-zonefile2" {
|
||||
type master;
|
||||
file "shared.db";
|
||||
dnssec-policy "none";
|
||||
};
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
dnssec-policy "internet" {
|
||||
keys {
|
||||
ksk key-directory lifetime unlimited algorithm ecdsa256;
|
||||
zsk key-directory lifetime P90D algorithm ecdsa256;
|
||||
};
|
||||
|
||||
nsec3param iterations 15 optout no salt-length 8;
|
||||
};
|
||||
|
||||
dnssec-policy "intranet" {
|
||||
keys {
|
||||
ksk key-directory lifetime unlimited algorithm ecdsa256;
|
||||
zsk key-directory lifetime P30D algorithm ecdsa256;
|
||||
};
|
||||
nsec3param iterations 15 optout no salt-length 8;
|
||||
};
|
||||
|
||||
dnssec-policy "localhost" {
|
||||
keys {
|
||||
ksk key-directory lifetime unlimited algorithm ecdsa256;
|
||||
zsk key-directory lifetime P30D algorithm ecdsa256;
|
||||
};
|
||||
nsec3param iterations 15 optout no salt-length 8;
|
||||
};
|
||||
|
||||
options {
|
||||
key-directory "global/keys";
|
||||
};
|
||||
|
||||
view "localhost" {
|
||||
match-clients { 127.0.0.1; ::1; };
|
||||
zone "example.com" IN {
|
||||
type primary;
|
||||
file "localhost/example.com.zone";
|
||||
dnssec-policy "localhost";
|
||||
};
|
||||
};
|
||||
|
||||
view "external" {
|
||||
match-clients { 0/0; };
|
||||
key-directory "external/keys";
|
||||
zone "example.com" IN {
|
||||
type primary;
|
||||
file "external/example.com.zone";
|
||||
dnssec-policy "internet";
|
||||
};
|
||||
};
|
||||
|
||||
view "internal" {
|
||||
match-clients { ::/0; };
|
||||
key-directory "internal/keys";
|
||||
zone "example.com" IN {
|
||||
type primary;
|
||||
file "internal/example.com.zone";
|
||||
dnssec-policy "intranet";
|
||||
};
|
||||
};
|
|
@ -86,6 +86,10 @@ options {
|
|||
transfer-source 0.0.0.0 dscp 63;
|
||||
zone-statistics none;
|
||||
};
|
||||
parental-agents "parents" {
|
||||
10.10.10.11;
|
||||
10.10.10.12;
|
||||
};
|
||||
view "first" {
|
||||
match-clients {
|
||||
"none";
|
||||
|
@ -158,7 +162,7 @@ view "third" {
|
|||
allow-update {
|
||||
"any";
|
||||
};
|
||||
auto-dnssec maintain;
|
||||
dnssec-policy "default";
|
||||
};
|
||||
zone "p" {
|
||||
type primary;
|
||||
|
@ -176,11 +180,19 @@ view "fourth" {
|
|||
zone "dnssec-test" {
|
||||
type master;
|
||||
file "dnssec-test.db";
|
||||
parental-agents {
|
||||
1.2.3.4;
|
||||
1.2.3.5;
|
||||
};
|
||||
dnssec-policy "test";
|
||||
parental-source 10.10.10.10 port 53 dscp 55;
|
||||
};
|
||||
zone "dnssec-default" {
|
||||
type master;
|
||||
file "dnssec-default.db";
|
||||
parental-agents {
|
||||
"parents";
|
||||
};
|
||||
dnssec-policy "default";
|
||||
};
|
||||
zone "dnssec-inherit" {
|
||||
|
@ -192,7 +204,53 @@ view "fourth" {
|
|||
file "dnssec-none.db";
|
||||
dnssec-policy "none";
|
||||
};
|
||||
zone "dnssec-view1" {
|
||||
type master;
|
||||
file "dnssec-view41.db";
|
||||
dnssec-policy "test";
|
||||
};
|
||||
zone "dnssec-view2" {
|
||||
type master;
|
||||
file "dnssec-view42.db";
|
||||
};
|
||||
zone "dnssec-view3" {
|
||||
type master;
|
||||
file "dnssec-view43.db";
|
||||
dnssec-policy "none";
|
||||
key-directory "keys";
|
||||
};
|
||||
zone "dnssec-view4" {
|
||||
type master;
|
||||
file "dnssec-view44.db";
|
||||
dnssec-policy "none";
|
||||
};
|
||||
dnssec-policy "default";
|
||||
key-directory ".";
|
||||
};
|
||||
view "fifth" {
|
||||
zone "dnssec-view1" {
|
||||
type master;
|
||||
file "dnssec-view51.db";
|
||||
dnssec-policy "test";
|
||||
};
|
||||
zone "dnssec-view2" {
|
||||
type master;
|
||||
file "dnssec-view52.db";
|
||||
dnssec-policy "test";
|
||||
key-directory "keys";
|
||||
};
|
||||
zone "dnssec-view3" {
|
||||
type master;
|
||||
file "dnssec-view53.db";
|
||||
dnssec-policy "default";
|
||||
key-directory "keys";
|
||||
};
|
||||
zone "dnssec-view4" {
|
||||
type master;
|
||||
file "dnssec-view54.db";
|
||||
dnssec-policy "none";
|
||||
};
|
||||
key-directory ".";
|
||||
};
|
||||
view "chaos" chaos {
|
||||
zone "hostname.bind" chaos {
|
||||
|
|
|
@ -13,4 +13,12 @@ dnssec-test IN fourth master
|
|||
dnssec-default IN fourth master
|
||||
dnssec-inherit IN fourth master
|
||||
dnssec-none IN fourth master
|
||||
dnssec-view1 IN fourth master
|
||||
dnssec-view2 IN fourth master
|
||||
dnssec-view3 IN fourth master
|
||||
dnssec-view4 IN fourth master
|
||||
dnssec-view1 IN fifth master
|
||||
dnssec-view2 IN fifth master
|
||||
dnssec-view3 IN fifth master
|
||||
dnssec-view4 IN fifth master
|
||||
hostname.bind chaos chaos master
|
||||
|
|
|
@ -27,28 +27,28 @@ dnssec-policy "rsasha256" {
|
|||
keys {
|
||||
csk lifetime P10Y algorithm rsasha256 2048;
|
||||
};
|
||||
nsec3param iterations 500;
|
||||
nsec3param iterations 150;
|
||||
};
|
||||
|
||||
dnssec-policy "rsasha256-bad" {
|
||||
keys {
|
||||
csk lifetime P10Y algorithm rsasha256 2048;
|
||||
};
|
||||
nsec3param iterations 501;
|
||||
nsec3param iterations 151;
|
||||
};
|
||||
|
||||
dnssec-policy "rsasha512" {
|
||||
keys {
|
||||
csk lifetime P10Y algorithm rsasha512 4096;
|
||||
};
|
||||
nsec3param iterations 2500;
|
||||
nsec3param iterations 150;
|
||||
};
|
||||
|
||||
dnssec-policy "rsasha512-bad" {
|
||||
keys {
|
||||
csk lifetime P10Y algorithm rsasha512 4096;
|
||||
};
|
||||
nsec3param iterations 2501;
|
||||
nsec3param iterations 151;
|
||||
};
|
||||
|
||||
zone "example.net" {
|
||||
|
|
|
@ -13,6 +13,8 @@ SYSTEMTESTTOP=..
|
|||
status=0
|
||||
n=0
|
||||
|
||||
mkdir keys
|
||||
|
||||
n=`expr $n + 1`
|
||||
echo_i "checking that named-checkconf handles a known good config ($n)"
|
||||
ret=0
|
||||
|
@ -514,8 +516,6 @@ echo_i "checking named-checkconf kasp nsec3 iterations errors ($n)"
|
|||
ret=0
|
||||
$CHECKCONF kasp-bad-nsec3-iter.conf > checkconf.out$n 2>&1 && ret=1
|
||||
grep "dnssec-policy: nsec3 iterations value 151 out of range" < checkconf.out$n > /dev/null || ret=1
|
||||
grep "dnssec-policy: nsec3 iterations value 501 out of range" < checkconf.out$n > /dev/null || ret=1
|
||||
grep "dnssec-policy: nsec3 iterations value 2501 out of range" < checkconf.out$n > /dev/null || ret=1
|
||||
lines=$(wc -l < "checkconf.out$n")
|
||||
if [ $lines != 3 ]; then ret=1; fi
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
|
@ -570,5 +570,7 @@ grep "exceeds 100%" < checkconf.out$n > /dev/null || ret=1
|
|||
if [ $ret != 0 ]; then echo_i "failed"; ret=1; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
rmdir keys
|
||||
|
||||
echo_i "exit status: $status"
|
||||
[ $status -eq 0 ] || exit 1
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
|
||||
See COPYRIGHT in the source root or https://isc.org/copyright.html for terms.
|
||||
|
||||
The test setup for the checkds tests.
|
||||
|
||||
These servers are parent servers:
|
||||
- ns2 is a primary authoritative server that serves the parent zone for zones
|
||||
configured in ns9.
|
||||
- ns4 is the secondary server for ns2.
|
||||
- ns5 is a primary authoritative server that serves the parent zone for zones
|
||||
configured in ns9, but this one does not publish DS records (to test cases
|
||||
where the DS is missing).
|
||||
- ns6 is an authoritative server for a different zone, to test badly configured
|
||||
parental agents.
|
||||
- ns7 is the secondary server for ns5.
|
||||
|
||||
Finally, ns9 is the authoritative server for the various DNSSEC enabled test
|
||||
domains.
|
|
@ -9,5 +9,17 @@
|
|||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
rm -f checkds.*
|
||||
rm -f ns*/named.lock
|
||||
set -e
|
||||
|
||||
rm -f dig.out*
|
||||
rm -f ns*/named.conf ns*/named.memstats ns*/named.run*
|
||||
rm -f ns*/*.jnl ns*/*.jbk
|
||||
rm -f ns*/K*.private ns*/K*.key ns*/K*.state
|
||||
rm -f ns*/dsset-*
|
||||
rm -f ns*/*.db ns*/*.jnl ns*/*.jbk ns*/*.db.signed ns*/*.db.infile
|
||||
rm -f ns*/keygen.out.* ns*/settime.out.* ns*/signer.out.*
|
||||
rm -f ns*/managed-keys.bind*
|
||||
rm -f ns*/*.mkeys
|
||||
rm -f ns*/zones
|
||||
rm -f tests-checkds.py.status
|
||||
rm -f *.checkds.out
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
############################################################################
|
||||
# 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.
|
||||
############################################################################
|
||||
|
||||
import os
|
||||
import pytest
|
||||
|
||||
|
||||
def pytest_configure(config):
|
||||
config.addinivalue_line(
|
||||
"markers", "dnspython: mark tests that need dnspython to function"
|
||||
)
|
||||
config.addinivalue_line(
|
||||
"markers", "dnspython2: mark tests that need dnspython >= 2.0.0"
|
||||
)
|
||||
|
||||
|
||||
def pytest_collection_modifyitems(config, items):
|
||||
# pylint: disable=unused-argument,unused-import,too-many-branches
|
||||
# pylint: disable=import-outside-toplevel
|
||||
|
||||
# Test for dnspython module
|
||||
skip_dnspython = pytest.mark.skip(
|
||||
reason="need dnspython module to run")
|
||||
try:
|
||||
import dns.query # noqa: F401
|
||||
except ModuleNotFoundError:
|
||||
for item in items:
|
||||
if "dnspython" in item.keywords:
|
||||
item.add_marker(skip_dnspython)
|
||||
|
||||
# Test for dnspython >= 2.0.0 module
|
||||
skip_dnspython2 = pytest.mark.skip(
|
||||
reason="need dnspython >= 2.0.0 module to run")
|
||||
try:
|
||||
from dns.query import udp_with_fallback # noqa: F401
|
||||
except ImportError:
|
||||
for item in items:
|
||||
if "dnspython2" in item.keywords:
|
||||
item.add_marker(skip_dnspython2)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def named_port(request):
|
||||
# pylint: disable=unused-argument
|
||||
port = os.getenv("PORT")
|
||||
if port is None:
|
||||
port = 5301
|
||||
else:
|
||||
port = int(port)
|
||||
|
||||
return port
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def control_port(request):
|
||||
# pylint: disable=unused-argument
|
||||
port = os.getenv("CONTROLPORT")
|
||||
if port is None:
|
||||
port = 5301
|
||||
else:
|
||||
port = int(port)
|
||||
|
||||
return port
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// NS2
|
||||
|
||||
options {
|
||||
query-source address 10.53.0.2;
|
||||
notify-source 10.53.0.2;
|
||||
transfer-source 10.53.0.2;
|
||||
port @PORT@;
|
||||
pid-file "named.pid";
|
||||
listen-on { 10.53.0.2; };
|
||||
listen-on-v6 { none; };
|
||||
allow-transfer { any; };
|
||||
recursion no;
|
||||
};
|
||||
|
||||
key rndc_key {
|
||||
secret "1234abcd8765";
|
||||
algorithm hmac-sha256;
|
||||
};
|
||||
|
||||
controls {
|
||||
inet 10.53.0.2 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type hint;
|
||||
file "../../common/root.hint";
|
||||
};
|
||||
|
||||
zone "checkds" {
|
||||
type primary;
|
||||
file "checkds.db";
|
||||
};
|
|
@ -0,0 +1,32 @@
|
|||
#!/bin/sh -e
|
||||
#
|
||||
# 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.
|
||||
|
||||
# shellcheck source=conf.sh
|
||||
. ../../conf.sh
|
||||
|
||||
echo_i "ns2/setup.sh"
|
||||
|
||||
for subdomain in dspublished reference missing-dspublished bad-dspublished \
|
||||
multiple-dspublished incomplete-dspublished bad2-dspublished \
|
||||
dswithdrawn missing-dswithdrawn bad-dswithdrawn \
|
||||
multiple-dswithdrawn incomplete-dswithdrawn bad2-dswithdrawn
|
||||
do
|
||||
cp "../ns9/dsset-$subdomain.checkds$TP" .
|
||||
done
|
||||
|
||||
zone="checkds"
|
||||
infile="checkds.db.infile"
|
||||
zonefile="checkds.db"
|
||||
|
||||
CSK=$($KEYGEN -k default $zone 2> keygen.out.$zone)
|
||||
cat template.db.in "${CSK}.key" > "$infile"
|
||||
private_type_record $zone $DEFAULT_ALGORITHM_NUMBER "$CSK" >> "$infile"
|
||||
$SIGNER -S -g -z -x -s now-1h -e now+30d -o $zone -O full -f $zonefile $infile > signer.out.$zone 2>&1
|
|
@ -0,0 +1,36 @@
|
|||
; 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 http://mozilla.org/MPL/2.0/.
|
||||
;
|
||||
; See the COPYRIGHT file distributed with this work for additional
|
||||
; information regarding copyright ownership.
|
||||
|
||||
$TTL 300
|
||||
@ IN SOA secondary.example. hostmaster.example. (
|
||||
1 ; serial
|
||||
20 ; refresh (20 seconds)
|
||||
20 ; retry (20 seconds)
|
||||
1814400 ; expire (3 weeks)
|
||||
3600 ; minimum (1 hour)
|
||||
)
|
||||
|
||||
NS ns2
|
||||
ns2 A 10.53.0.2
|
||||
|
||||
dspublished NS ns9.dspublished
|
||||
reference NS ns9.reference
|
||||
missing-dspublished NS ns9.missing-dspublished
|
||||
bad-dspublished NS ns9.bad-dspublished
|
||||
multiple-dspublished NS ns9.multiple-dspublished
|
||||
incomplete-dspublished NS ns9.incomplete-dspublished
|
||||
bad2-dspublished NS ns9.bad2-dspublished
|
||||
|
||||
dswithdrawn NS ns9.dswithdrawn
|
||||
missing-dswithdrawn NS ns9.missing-dswithdrawn
|
||||
bad-dswithdrawn NS ns9.bad-dswithdrawn
|
||||
multiple-dswithdrawn NS ns9.multiple-dswithdrawn
|
||||
incomplete-dswithdrawn NS ns9.incomplete-dswithdrawn
|
||||
bad2-dswithdrawn NS ns9.bad2-dswithdrawn
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// NS4
|
||||
|
||||
options {
|
||||
query-source address 10.53.0.4;
|
||||
notify-source 10.53.0.4;
|
||||
transfer-source 10.53.0.4;
|
||||
port @PORT@;
|
||||
pid-file "named.pid";
|
||||
listen-on { 10.53.0.4; };
|
||||
listen-on-v6 { none; };
|
||||
allow-transfer { any; };
|
||||
recursion no;
|
||||
};
|
||||
|
||||
key rndc_key {
|
||||
secret "1234abcd8765";
|
||||
algorithm hmac-sha256;
|
||||
};
|
||||
|
||||
controls {
|
||||
inet 10.53.0.4 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
zone "checkds" {
|
||||
type secondary;
|
||||
file "checkds.db";
|
||||
primaries { 10.53.0.2 port @PORT@; };
|
||||
};
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// NS5
|
||||
|
||||
options {
|
||||
query-source address 10.53.0.5;
|
||||
notify-source 10.53.0.5;
|
||||
transfer-source 10.53.0.5;
|
||||
port @PORT@;
|
||||
pid-file "named.pid";
|
||||
listen-on { 10.53.0.5; };
|
||||
listen-on-v6 { none; };
|
||||
allow-transfer { any; };
|
||||
recursion no;
|
||||
};
|
||||
|
||||
key rndc_key {
|
||||
secret "1234abcd8765";
|
||||
algorithm hmac-sha256;
|
||||
};
|
||||
|
||||
controls {
|
||||
inet 10.53.0.5 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type hint;
|
||||
file "../../common/root.hint";
|
||||
};
|
||||
|
||||
zone "checkds" {
|
||||
type primary;
|
||||
file "checkds.db";
|
||||
};
|
|
@ -0,0 +1,24 @@
|
|||
#!/bin/sh -e
|
||||
#
|
||||
# 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.
|
||||
|
||||
# shellcheck source=conf.sh
|
||||
. ../../conf.sh
|
||||
|
||||
echo_i "ns5/setup.sh"
|
||||
|
||||
zone="checkds"
|
||||
infile="checkds.db.infile"
|
||||
zonefile="checkds.db"
|
||||
|
||||
CSK=$($KEYGEN -k default $zone 2> keygen.out.$zone)
|
||||
cat template.db.in "${CSK}.key" > "$infile"
|
||||
private_type_record $zone $DEFAULT_ALGORITHM_NUMBER "$CSK" >> "$infile"
|
||||
$SIGNER -S -g -z -x -s now-1h -e now+30d -o $zone -O full -f $zonefile $infile > signer.out.$zone 2>&1
|
|
@ -0,0 +1,36 @@
|
|||
; 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 http://mozilla.org/MPL/2.0/.
|
||||
;
|
||||
; See the COPYRIGHT file distributed with this work for additional
|
||||
; information regarding copyright ownership.
|
||||
|
||||
$TTL 300
|
||||
@ IN SOA secondary.example. hostmaster.example. (
|
||||
1 ; serial
|
||||
20 ; refresh (20 seconds)
|
||||
20 ; retry (20 seconds)
|
||||
1814400 ; expire (3 weeks)
|
||||
3600 ; minimum (1 hour)
|
||||
)
|
||||
|
||||
NS ns5
|
||||
ns5 A 10.53.0.5
|
||||
|
||||
dspublished NS ns9.dspublished
|
||||
reference NS ns9.reference
|
||||
missing-dspublished NS ns9.missing-dspublished
|
||||
bad-dspublished NS ns9.bad-dspublished
|
||||
multiple-dspublished NS ns9.multiple-dspublished
|
||||
incomplete-dspublished NS ns9.incomplete-dspublished
|
||||
bad2-dspublished NS ns9.bad2-dspublished
|
||||
|
||||
dswithdrawn NS ns9.dswithdrawn
|
||||
missing-dswithdrawn NS ns9.missing-dswithdrawn
|
||||
bad-dswithdrawn NS ns9.bad-dswithdrawn
|
||||
multiple-dswithdrawn NS ns9.multiple-dswithdrawn
|
||||
incomplete-dswithdrawn NS ns9.incomplete-dswithdrawn
|
||||
bad2-dswithdrawn NS ns9.bad2-dswithdrawn
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// NS2
|
||||
|
||||
options {
|
||||
query-source address 10.53.0.6;
|
||||
notify-source 10.53.0.6;
|
||||
transfer-source 10.53.0.6;
|
||||
port @PORT@;
|
||||
pid-file "named.pid";
|
||||
listen-on { 10.53.0.6; };
|
||||
listen-on-v6 { none; };
|
||||
allow-transfer { any; };
|
||||
recursion no;
|
||||
};
|
||||
|
||||
key rndc_key {
|
||||
secret "1234abcd8765";
|
||||
algorithm hmac-sha256;
|
||||
};
|
||||
|
||||
controls {
|
||||
inet 10.53.0.6 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type hint;
|
||||
file "../../common/root.hint";
|
||||
};
|
||||
|
||||
zone "foo" {
|
||||
type primary;
|
||||
file "foo.db";
|
||||
};
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* 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 http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* See the COPYRIGHT file distributed with this work for additional
|
||||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
// NS7
|
||||
|
||||
options {
|
||||
query-source address 10.53.0.7;
|
||||
notify-source 10.53.0.7;
|
||||
transfer-source 10.53.0.7;
|
||||
port @PORT@;
|
||||
pid-file "named.pid";
|
||||
listen-on { 10.53.0.7; };
|
||||
listen-on-v6 { none; };
|
||||
allow-transfer { any; };
|
||||
recursion no;
|
||||
};
|
||||
|
||||
key rndc_key {
|
||||
secret "1234abcd8765";
|
||||
algorithm hmac-sha256;
|
||||
};
|
||||
|
||||
controls {
|
||||
inet 10.53.0.7 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type hint;
|
||||
file "../../common/root.hint";
|
||||
};
|
||||
|
||||
zone "checkds" {
|
||||
type secondary;
|
||||
file "checkds.db";
|
||||
primaries { 10.53.0.5 port @PORT@; };
|
||||
};
|
|
@ -0,0 +1,193 @@
|
|||
|
||||
// NS9
|
||||
|
||||
options {
|
||||
query-source address 10.53.0.9;
|
||||
notify-source 10.53.0.9;
|
||||
transfer-source 10.53.0.9;
|
||||
port @PORT@;
|
||||
pid-file "named.pid";
|
||||
listen-on { 10.53.0.9; };
|
||||
listen-on-v6 { none; };
|
||||
allow-transfer { any; };
|
||||
recursion no;
|
||||
};
|
||||
|
||||
key rndc_key {
|
||||
secret "1234abcd8765";
|
||||
algorithm hmac-sha256;
|
||||
};
|
||||
|
||||
controls {
|
||||
inet 10.53.0.9 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
|
||||
};
|
||||
|
||||
parental-agents "ns2" port @PORT@ {
|
||||
10.53.0.2;
|
||||
};
|
||||
|
||||
zone "." {
|
||||
type hint;
|
||||
file "../../common/root.hint";
|
||||
};
|
||||
|
||||
/*
|
||||
* Zone with parental agent configured, due for DS checking.
|
||||
*/
|
||||
zone "dspublished.checkds" {
|
||||
type primary;
|
||||
file "dspublished.checkds.db";
|
||||
dnssec-policy "default";
|
||||
parental-agents { 10.53.0.2 port @PORT@; };
|
||||
};
|
||||
|
||||
/*
|
||||
* Zone with parental agent configured, due for DS checking.
|
||||
* Same as above, but now with a reference to parental-agents.
|
||||
*/
|
||||
zone "reference.checkds" {
|
||||
type primary;
|
||||
file "reference.checkds.db";
|
||||
dnssec-policy "default";
|
||||
parental-agents { "ns2"; };
|
||||
};
|
||||
|
||||
/*
|
||||
* Zone with parental agent configured, due for DS checking.
|
||||
* The parental agent does not have the DS yet.
|
||||
*/
|
||||
zone "missing-dspublished.checkds" {
|
||||
type primary;
|
||||
file "missing-dspublished.checkds.db";
|
||||
dnssec-policy "default";
|
||||
parental-agents {
|
||||
10.53.0.5 port @PORT@; // missing
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Zone with parental agent configured, due for DS checking.
|
||||
* This case, the server is badly configured.
|
||||
*/
|
||||
zone "bad-dspublished.checkds" {
|
||||
type primary;
|
||||
file "bad-dspublished.checkds.db";
|
||||
dnssec-policy "default";
|
||||
parental-agents {
|
||||
10.53.0.6 port @PORT@; // bad
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Zone with multiple parental agents configured, due for DS checking.
|
||||
* All need to have the DS before the rollover may continue.
|
||||
*/
|
||||
zone "multiple-dspublished.checkds" {
|
||||
type primary;
|
||||
file "multiple-dspublished.checkds.db";
|
||||
dnssec-policy "default";
|
||||
parental-agents {
|
||||
10.53.0.2 port @PORT@;
|
||||
10.53.0.4 port @PORT@;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Zone with multiple parental agents configured, due for DS checking.
|
||||
* All need to have the DS before the rollover may continue.
|
||||
* This case, one server is still missing the DS.
|
||||
*/
|
||||
zone "incomplete-dspublished.checkds" {
|
||||
type primary;
|
||||
file "incomplete-dspublished.checkds.db";
|
||||
dnssec-policy "default";
|
||||
parental-agents {
|
||||
10.53.0.2 port @PORT@;
|
||||
10.53.0.4 port @PORT@;
|
||||
10.53.0.5 port @PORT@; // missing
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Zone with multiple parental agents configured, due for DS checking.
|
||||
* All need to have the DS before the rollover may continue.
|
||||
* This case, one server is badly configured.
|
||||
*/
|
||||
zone "bad2-dspublished.checkds" {
|
||||
type primary;
|
||||
file "bad2-dspublished.checkds.db";
|
||||
dnssec-policy "default";
|
||||
parental-agents {
|
||||
10.53.0.2 port @PORT@;
|
||||
10.53.0.4 port @PORT@;
|
||||
10.53.0.6 port @PORT@; // bad
|
||||
};
|
||||
};
|
||||
|
||||
// TODO: Other test cases:
|
||||
// - Test with bogus response
|
||||
// - check with TSIG
|
||||
// - check with TLS
|
||||
|
||||
|
||||
/*
|
||||
* Zones that are going insecure (test DS withdrawn polling).
|
||||
*/
|
||||
zone "dswithdrawn.checkds" {
|
||||
type primary;
|
||||
file "dswithdrawn.checkds.db";
|
||||
dnssec-policy "insecure";
|
||||
parental-agents { 10.53.0.5 port @PORT@; };
|
||||
};
|
||||
|
||||
zone "missing-dswithdrawn.checkds" {
|
||||
type primary;
|
||||
file "missing-dswithdrawn.checkds.db";
|
||||
dnssec-policy "insecure";
|
||||
parental-agents {
|
||||
10.53.0.2 port @PORT@; // still published
|
||||
};
|
||||
};
|
||||
|
||||
zone "bad-dswithdrawn.checkds" {
|
||||
type primary;
|
||||
file "bad-dswithdrawn.checkds.db";
|
||||
dnssec-policy "insecure";
|
||||
parental-agents {
|
||||
10.53.0.6 port @PORT@; // bad
|
||||
};
|
||||
};
|
||||
|
||||
zone "multiple-dswithdrawn.checkds" {
|
||||
type primary;
|
||||
file "multiple-dswithdrawn.checkds.db";
|
||||
dnssec-policy "insecure";
|
||||
parental-agents {
|
||||
10.53.0.5 port @PORT@;
|
||||
10.53.0.7 port @PORT@;
|
||||
};
|
||||
};
|
||||
|
||||
zone "incomplete-dswithdrawn.checkds" {
|
||||
type primary;
|
||||
file "incomplete-dswithdrawn.checkds.db";
|
||||
dnssec-policy "insecure";
|
||||
parental-agents {
|
||||
10.53.0.2 port @PORT@; // still published
|
||||
10.53.0.5 port @PORT@;
|
||||
10.53.0.7 port @PORT@;
|
||||
};
|
||||
};
|
||||
|
||||
zone "bad2-dswithdrawn.checkds" {
|
||||
type primary;
|
||||
file "bad2-dswithdrawn.checkds.db";
|
||||
dnssec-policy "insecure";
|
||||
parental-agents {
|
||||
10.53.0.5 port @PORT@;
|
||||
10.53.0.7 port @PORT@;
|
||||
10.53.0.6 port @PORT@; // bad
|
||||
};
|
||||
};
|
|
@ -0,0 +1,59 @@
|
|||
#!/bin/sh -e
|
||||
#
|
||||
# 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.
|
||||
|
||||
# shellcheck source=conf.sh
|
||||
. ../../conf.sh
|
||||
|
||||
echo_i "ns9/setup.sh"
|
||||
|
||||
setup() {
|
||||
zone="$1"
|
||||
echo_i "setting up zone: $zone"
|
||||
zonefile="${zone}.db"
|
||||
infile="${zone}.db.infile"
|
||||
echo "$zone" >> zones
|
||||
}
|
||||
|
||||
# Short environment variable names for key states and times.
|
||||
H="HIDDEN"
|
||||
R="RUMOURED"
|
||||
O="OMNIPRESENT"
|
||||
U="UNRETENTIVE"
|
||||
T="now-30d"
|
||||
Y="now-1y"
|
||||
|
||||
# DS Publication.
|
||||
for zn in dspublished reference missing-dspublished bad-dspublished \
|
||||
multiple-dspublished incomplete-dspublished bad2-dspublished
|
||||
do
|
||||
setup "${zn}.checkds"
|
||||
cp template.db.in "$zonefile"
|
||||
keytimes="-P $T -P sync $T -A $T"
|
||||
CSK=$($KEYGEN -k default $keytimes $zone 2> keygen.out.$zone)
|
||||
$SETTIME -s -g $O -k $O $T -r $O $T -z $O $T -d $R $T "$CSK" > settime.out.$zone 2>&1
|
||||
cat template.db.in "${CSK}.key" > "$infile"
|
||||
private_type_record $zone $DEFAULT_ALGORITHM_NUMBER "$CSK" >> "$infile"
|
||||
$SIGNER -S -z -x -s now-1h -e now+30d -o $zone -O full -f $zonefile $infile > signer.out.$zone.1 2>&1
|
||||
done
|
||||
|
||||
# DS Withdrawal.
|
||||
for zn in dswithdrawn missing-dswithdrawn bad-dswithdrawn multiple-dswithdrawn \
|
||||
incomplete-dswithdrawn bad2-dswithdrawn
|
||||
do
|
||||
setup "${zn}.checkds"
|
||||
cp template.db.in "$zonefile"
|
||||
keytimes="-P $Y -P sync $Y -A $Y"
|
||||
CSK=$($KEYGEN -k default $keytimes $zone 2> keygen.out.$zone)
|
||||
$SETTIME -s -g $H -k $O $T -r $O $T -z $O $T -d $U $T "$CSK" > settime.out.$zone 2>&1
|
||||
cat template.db.in "${CSK}.key" > "$infile"
|
||||
private_type_record $zone $DEFAULT_ALGORITHM_NUMBER "$CSK" >> "$infile"
|
||||
$SIGNER -S -z -x -s now-1h -e now+30d -o $zone -O full -f $zonefile $infile > signer.out.$zone.1 2>&1
|
||||
done
|
|
@ -0,0 +1,25 @@
|
|||
; 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 http://mozilla.org/MPL/2.0/.
|
||||
;
|
||||
; See the COPYRIGHT file distributed with this work for additional
|
||||
; information regarding copyright ownership.
|
||||
|
||||
$TTL 300
|
||||
@ IN SOA mname1. . (
|
||||
1 ; serial
|
||||
20 ; refresh (20 seconds)
|
||||
20 ; retry (20 seconds)
|
||||
1814400 ; expire (3 weeks)
|
||||
3600 ; minimum (1 hour)
|
||||
)
|
||||
|
||||
NS ns9
|
||||
ns9 A 10.53.0.9
|
||||
|
||||
a A 10.0.0.1
|
||||
b A 10.0.0.2
|
||||
c A 10.0.0.3
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# 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.
|
||||
|
||||
SYSTEMTESTTOP=..
|
||||
. $SYSTEMTESTTOP/conf.sh
|
||||
|
||||
if test -n "$PYTHON"
|
||||
then
|
||||
if $PYTHON -c "from dns.query import send_tcp" 2> /dev/null
|
||||
then
|
||||
:
|
||||
else
|
||||
echo_i "This test requires the dnspython >= 2.0.0 module." >&2
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo_i "This test requires Python and the dnspython module." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,374 @@
|
|||
#!/usr/bin/python3
|
||||
############################################################################
|
||||
# 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.
|
||||
############################################################################
|
||||
|
||||
import mmap
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
|
||||
import dns.resolver
|
||||
import pytest
|
||||
|
||||
|
||||
def has_signed_apex_nsec(zone, response):
|
||||
has_nsec = False
|
||||
has_rrsig = False
|
||||
|
||||
ttl = 300
|
||||
nextname = "a."
|
||||
types = "NS SOA RRSIG NSEC DNSKEY CDS CDNSKEY"
|
||||
match = "{0} {1} IN NSEC {2}{0} {3}".format(zone, ttl, nextname, types)
|
||||
sig = "{0} {1} IN RRSIG NSEC 13 2 300".format(zone, ttl)
|
||||
|
||||
for rr in response.answer:
|
||||
if match in rr.to_text():
|
||||
has_nsec = True
|
||||
if sig in rr.to_text():
|
||||
has_rrsig = True
|
||||
|
||||
if not has_nsec:
|
||||
print("error: missing apex NSEC record in response")
|
||||
if not has_rrsig:
|
||||
print("error: missing NSEC signature in response")
|
||||
|
||||
return has_nsec and has_rrsig
|
||||
|
||||
|
||||
def do_query(server, qname, qtype, tcp=False):
|
||||
query = dns.message.make_query(qname, qtype, use_edns=True,
|
||||
want_dnssec=True)
|
||||
try:
|
||||
if tcp:
|
||||
response = dns.query.tcp(query, server.nameservers[0], timeout=3,
|
||||
port=server.port)
|
||||
else:
|
||||
response = dns.query.udp(query, server.nameservers[0], timeout=3,
|
||||
port=server.port)
|
||||
except dns.exception.Timeout:
|
||||
print("error: query timeout for query {} {} to {}".format(
|
||||
qname, qtype, server.nameservers[0]))
|
||||
return None
|
||||
|
||||
return response
|
||||
|
||||
|
||||
def verify_zone(zone, transfer):
|
||||
verify = os.getenv("VERIFY")
|
||||
assert verify is not None
|
||||
|
||||
filename = "{}out".format(zone)
|
||||
with open(filename, 'w') as file:
|
||||
for rr in transfer.answer:
|
||||
file.write(rr.to_text())
|
||||
file.write('\n')
|
||||
|
||||
# dnssec-verify command with default arguments.
|
||||
verify_cmd = [verify, "-z", "-o", zone, filename]
|
||||
|
||||
verifier = subprocess.run(verify_cmd, capture_output=True, check=True)
|
||||
|
||||
if verifier.returncode != 0:
|
||||
print("error: dnssec-verify {} failed".format(zone))
|
||||
sys.stderr.buffer.write(verifier.stderr)
|
||||
|
||||
return verifier.returncode == 0
|
||||
|
||||
|
||||
def read_statefile(server, zone):
|
||||
addr = server.nameservers[0]
|
||||
count = 0
|
||||
keyid = 0
|
||||
state = {}
|
||||
|
||||
response = do_query(server, zone, "DS", tcp=True)
|
||||
if not isinstance(response, dns.message.Message):
|
||||
print("error: no response for {} DS from {}".format(zone, addr))
|
||||
return {}
|
||||
|
||||
if response.rcode() == dns.rcode.NOERROR:
|
||||
# fetch key id from response.
|
||||
for rr in response.answer:
|
||||
if rr.match(dns.name.from_text(zone), dns.rdataclass.IN,
|
||||
dns.rdatatype.DS, dns.rdatatype.NONE):
|
||||
if count == 0:
|
||||
keyid = list(dict(rr.items).items())[0][0].key_tag
|
||||
count += 1
|
||||
|
||||
if count != 1:
|
||||
print("error: expected a single DS in response for {} from {},"
|
||||
"got {}".format(zone, addr, count))
|
||||
return {}
|
||||
else:
|
||||
print("error: {} response for {} DNSKEY from {}".format(
|
||||
dns.rcode.to_text(response.rcode()), zone, addr))
|
||||
return {}
|
||||
|
||||
filename = "ns9/K{}+013+{:05d}.state".format(zone, keyid)
|
||||
print("read state file {}".format(filename))
|
||||
|
||||
try:
|
||||
with open(filename, 'r') as file:
|
||||
for line in file:
|
||||
if line.startswith(';'):
|
||||
continue
|
||||
key, val = line.strip().split(':', 1)
|
||||
state[key.strip()] = val.strip()
|
||||
|
||||
except FileNotFoundError:
|
||||
# file may not be written just yet.
|
||||
return {}
|
||||
|
||||
return state
|
||||
|
||||
|
||||
def zone_check(server, zone):
|
||||
addr = server.nameservers[0]
|
||||
|
||||
# wait until zone is fully signed.
|
||||
signed = False
|
||||
for _ in range(10):
|
||||
response = do_query(server, zone, 'NSEC')
|
||||
if not isinstance(response, dns.message.Message):
|
||||
print("error: no response for {} NSEC from {}".format(zone, addr))
|
||||
elif response.rcode() == dns.rcode.NOERROR:
|
||||
signed = has_signed_apex_nsec(zone, response)
|
||||
else:
|
||||
print("error: {} response for {} NSEC from {}".format(
|
||||
dns.rcode.to_text(response.rcode()), zone, addr))
|
||||
|
||||
if signed:
|
||||
break
|
||||
|
||||
time.sleep(1)
|
||||
|
||||
assert signed
|
||||
|
||||
# check if zone if DNSSEC valid.
|
||||
verified = False
|
||||
transfer = do_query(server, zone, 'AXFR', tcp=True)
|
||||
if not isinstance(transfer, dns.message.Message):
|
||||
print("error: no response for {} AXFR from {}".format(zone, addr))
|
||||
elif transfer.rcode() == dns.rcode.NOERROR:
|
||||
verified = verify_zone(zone, transfer)
|
||||
else:
|
||||
print("error: {} response for {} AXFR from {}".format(
|
||||
dns.rcode.to_text(transfer.rcode()), zone, addr))
|
||||
|
||||
assert verified
|
||||
|
||||
|
||||
def keystate_check(server, zone, key):
|
||||
val = 0
|
||||
deny = False
|
||||
|
||||
search = key
|
||||
if key.startswith('!'):
|
||||
deny = True
|
||||
search = key[1:]
|
||||
|
||||
for _ in range(10):
|
||||
state = read_statefile(server, zone)
|
||||
try:
|
||||
val = state[search]
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
if not deny and val != 0:
|
||||
break
|
||||
if deny and val == 0:
|
||||
break
|
||||
|
||||
time.sleep(1)
|
||||
|
||||
if deny:
|
||||
assert val == 0
|
||||
else:
|
||||
assert val != 0
|
||||
|
||||
|
||||
def wait_for_log(filename, log):
|
||||
found = False
|
||||
|
||||
for _ in range(10):
|
||||
print("read log file {}".format(filename))
|
||||
|
||||
try:
|
||||
with open(filename, 'r') as file:
|
||||
s = mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ)
|
||||
if s.find(bytes(log, "ascii")) != -1:
|
||||
found = True
|
||||
except FileNotFoundError:
|
||||
print("file not found {}".format(filename))
|
||||
|
||||
if found:
|
||||
break
|
||||
|
||||
print("sleep")
|
||||
time.sleep(1)
|
||||
|
||||
assert found
|
||||
|
||||
|
||||
@pytest.mark.dnspython
|
||||
@pytest.mark.dnspython2
|
||||
def test_checkds_dspublished(named_port):
|
||||
# We create resolver instances that will be used to send queries.
|
||||
server = dns.resolver.Resolver()
|
||||
server.nameservers = ["10.53.0.9"]
|
||||
server.port = named_port
|
||||
|
||||
parent = dns.resolver.Resolver()
|
||||
parent.nameservers = ["10.53.0.2"]
|
||||
parent.port = named_port
|
||||
|
||||
# DS correctly published in parent.
|
||||
zone_check(server, "dspublished.checkds.")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone dspublished.checkds/IN (signed): checkds: "
|
||||
"DS response from 10.53.0.2")
|
||||
keystate_check(parent, "dspublished.checkds.", "DSPublish")
|
||||
|
||||
# DS correctly published in parent (reference to parental-agent).
|
||||
zone_check(server, "reference.checkds.")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone reference.checkds/IN (signed): checkds: "
|
||||
"DS response from 10.53.0.2")
|
||||
keystate_check(parent, "reference.checkds.", "DSPublish")
|
||||
|
||||
# DS not published in parent.
|
||||
zone_check(server, "missing-dspublished.checkds.")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone missing-dspublished.checkds/IN (signed): checkds: "
|
||||
"empty DS response from 10.53.0.5")
|
||||
keystate_check(parent, "missing-dspublished.checkds.", "!DSPublish")
|
||||
|
||||
# Badly configured parent.
|
||||
zone_check(server, "bad-dspublished.checkds.")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone bad-dspublished.checkds/IN (signed): checkds: "
|
||||
"bad DS response from 10.53.0.6")
|
||||
keystate_check(parent, "bad-dspublished.checkds.", "!DSPublish")
|
||||
|
||||
# TBD: DS published in parent, but bogus signature.
|
||||
|
||||
# DS correctly published in all parents.
|
||||
zone_check(server, "multiple-dspublished.checkds.")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone multiple-dspublished.checkds/IN (signed): checkds: "
|
||||
"DS response from 10.53.0.2")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone multiple-dspublished.checkds/IN (signed): checkds: "
|
||||
"DS response from 10.53.0.4")
|
||||
keystate_check(parent, "multiple-dspublished.checkds.", "DSPublish")
|
||||
|
||||
# DS published in only one of multiple parents.
|
||||
zone_check(server, "incomplete-dspublished.checkds.")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone incomplete-dspublished.checkds/IN (signed): checkds: "
|
||||
"DS response from 10.53.0.2")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone incomplete-dspublished.checkds/IN (signed): checkds: "
|
||||
"DS response from 10.53.0.4")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone incomplete-dspublished.checkds/IN (signed): checkds: "
|
||||
"empty DS response from 10.53.0.5")
|
||||
keystate_check(parent, "incomplete-dspublished.checkds.", "!DSPublish")
|
||||
|
||||
# One of the parents is badly configured.
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone bad2-dspublished.checkds/IN (signed): checkds: "
|
||||
"DS response from 10.53.0.2")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone bad2-dspublished.checkds/IN (signed): checkds: "
|
||||
"DS response from 10.53.0.4")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone bad2-dspublished.checkds/IN (signed): checkds: "
|
||||
"bad DS response from 10.53.0.6")
|
||||
keystate_check(parent, "bad2-dspublished.checkds.", "!DSPublish")
|
||||
|
||||
# TBD: DS published in all parents, but one has bogus signature.
|
||||
|
||||
# TBD: Check with TSIG
|
||||
|
||||
|
||||
@pytest.mark.dnspython
|
||||
@pytest.mark.dnspython2
|
||||
def test_checkds_dswithdrawn(named_port):
|
||||
# We create resolver instances that will be used to send queries.
|
||||
server = dns.resolver.Resolver()
|
||||
server.nameservers = ["10.53.0.9"]
|
||||
server.port = named_port
|
||||
|
||||
parent = dns.resolver.Resolver()
|
||||
parent.nameservers = ["10.53.0.2"]
|
||||
parent.port = named_port
|
||||
|
||||
# DS correctly published in single parent.
|
||||
zone_check(server, "dswithdrawn.checkds.")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone dswithdrawn.checkds/IN (signed): checkds: "
|
||||
"empty DS response from 10.53.0.5")
|
||||
keystate_check(parent, "dswithdrawn.checkds.", "DSRemoved")
|
||||
|
||||
# DS not withdrawn from parent.
|
||||
zone_check(server, "missing-dswithdrawn.checkds.")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone missing-dswithdrawn.checkds/IN (signed): checkds: "
|
||||
"DS response from 10.53.0.2")
|
||||
keystate_check(parent, "missing-dswithdrawn.checkds.", "!DSRemoved")
|
||||
|
||||
# Badly configured parent.
|
||||
zone_check(server, "bad-dswithdrawn.checkds.")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone bad-dswithdrawn.checkds/IN (signed): checkds: "
|
||||
"bad DS response from 10.53.0.6")
|
||||
keystate_check(parent, "bad-dswithdrawn.checkds.", "!DSRemoved")
|
||||
|
||||
# TBD: DS published in parent, but bogus signature.
|
||||
|
||||
# DS correctly withdrawn from all parents.
|
||||
zone_check(server, "multiple-dswithdrawn.checkds.")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone multiple-dswithdrawn.checkds/IN (signed): checkds: "
|
||||
"empty DS response from 10.53.0.5")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone multiple-dswithdrawn.checkds/IN (signed): checkds: "
|
||||
"empty DS response from 10.53.0.7")
|
||||
keystate_check(parent, "multiple-dswithdrawn.checkds.", "DSRemoved")
|
||||
|
||||
# DS withdrawn from only one of multiple parents.
|
||||
zone_check(server, "incomplete-dswithdrawn.checkds.")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone incomplete-dswithdrawn.checkds/IN (signed): checkds: "
|
||||
"DS response from 10.53.0.2")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone incomplete-dswithdrawn.checkds/IN (signed): checkds: "
|
||||
"empty DS response from 10.53.0.5")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone incomplete-dswithdrawn.checkds/IN (signed): checkds: "
|
||||
"empty DS response from 10.53.0.7")
|
||||
keystate_check(parent, "incomplete-dswithdrawn.checkds.", "!DSRemoved")
|
||||
|
||||
# One of the parents is badly configured.
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone bad2-dswithdrawn.checkds/IN (signed): checkds: "
|
||||
"empty DS response from 10.53.0.5")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone bad2-dswithdrawn.checkds/IN (signed): checkds: "
|
||||
"empty DS response from 10.53.0.7")
|
||||
wait_for_log("ns9/named.run",
|
||||
"zone bad2-dswithdrawn.checkds/IN (signed): checkds: "
|
||||
"bad DS response from 10.53.0.6")
|
||||
keystate_check(parent, "bad2-dswithdrawn.checkds.", "!DSRemoved")
|
||||
|
||||
# TBD: DS withdrawn from all parents, but one has bogus signature.
|
|
@ -0,0 +1,13 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# 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.
|
||||
|
||||
rm -f checkds.*
|
||||
rm -f ns*/named.lock
|
|
@ -0,0 +1,32 @@
|
|||
@echo off
|
||||
set ext=
|
||||
set file=
|
||||
|
||||
:loop
|
||||
@set arg=%1
|
||||
if "%arg%" == "" goto end
|
||||
if "%arg:~0,1%" == "+" goto next
|
||||
if "%arg%" == "-t" goto next
|
||||
if "%arg%" == "ds" goto ds
|
||||
if "%arg%" == "DS" goto ds
|
||||
if "%arg%" == "dnskey" goto dnskey
|
||||
if "%arg%" == "DNSKEY" goto dnskey
|
||||
set file=%arg%
|
||||
goto next
|
||||
|
||||
:ds
|
||||
set ext=ds
|
||||
goto next
|
||||
|
||||
:dnskey
|
||||
set ext=dnskey
|
||||
goto next
|
||||
|
||||
:next
|
||||
shift
|
||||
goto loop
|
||||
|
||||
:end
|
||||
|
||||
set name=%file%.%ext%.db
|
||||
type %name%
|
|
@ -0,0 +1,39 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# 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.
|
||||
|
||||
my $arg;
|
||||
my $ext;
|
||||
my $file;
|
||||
|
||||
foreach $arg (@ARGV) {
|
||||
if ($arg =~ /^\+/) {
|
||||
next;
|
||||
}
|
||||
if ($arg =~ /^-t/) {
|
||||
next;
|
||||
}
|
||||
if ($arg =~ /^ds$/i) {
|
||||
$ext = "ds";
|
||||
next;
|
||||
}
|
||||
if ($arg =~ /^dnskey$/i) {
|
||||
$ext = "dnskey";
|
||||
next;
|
||||
}
|
||||
$file = $arg;
|
||||
next;
|
||||
}
|
||||
|
||||
open F, $file . "." . $ext . ".db" || die $!;
|
||||
while (<F>) {
|
||||
print;
|
||||
}
|
||||
close F;
|
|
@ -0,0 +1,22 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# 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.
|
||||
|
||||
while [ "$#" != 0 ]; do
|
||||
case $1 in
|
||||
+*) shift ;;
|
||||
-t) shift ;;
|
||||
DS|ds) ext=ds ; shift ;;
|
||||
DNSKEY|dnskey) ext=dnskey ; shift ;;
|
||||
*) file=$1 ; shift ;;
|
||||
esac
|
||||
done
|
||||
|
||||
cat ${file}.${ext}.db
|
3
external/mpl/bind/dist/bin/tests/system/checkdstool/missing.example.dnskey.db
vendored
Normal file
3
external/mpl/bind/dist/bin/tests/system/checkdstool/missing.example.dnskey.db
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
missing.example. 3600 IN DNSKEY 257 3 5 AwEAAc6Cz10GXEh5lxA9ujTY/QarTajcUOBwwBYIeldjRsgoouK/UioY FYgxEFL0O5JK6YCRUoGzl3EgLr5GvNyhIp1PZpOpHf7o/4MVOZTGJzm/ sHWP5B+KcYjQOxJiDb433iCmRM4DpHPUUoxw0QbZglzAzl5MfKBoyZud lH59DdT/50bkBg8iVu35EzuW0SYt31k70hxHBSb2wAGWeqxEPKJ1nQiI UcrWNDeem7byrqjPN9wyZhq0XkQ9qbcYxAkRNd8Y7P0FyR1YKJMc6SWZ Ru7muvxqTHgCtJVgxVz4qndCFKdYidiDeKe2/X/z5gf7pyYl3549O8JR tWdNKqutppk=
|
||||
missing.example. 3600 IN DNSKEY 257 3 5 BEAAAAOhHQDBrhQbtphgq2wQUpEQ5t4DtUHxoMVFu2hWLDMvoOMRXjG rhhCeFvAZih7yJHf8ZGfW6hd38hXG/xylYCO6Krpbdojwx8YMXLA5/kA +u50WIL8ZR1R6KTbsYVMf/Qx5RiNbPClw+vT+U8eXEJmO20jIS1ULgqy 347cBB1zMnnz/4LJpA0da9CbKj3A254T515sNIMcwsB8/2+2E63/zZrQ zBkj0BrN/9Bexjpiks3jRhZatEsXn3dTy47R09Uix5WcJt+xzqZ7+ysy LKOOedS39Z7SDmsn2eA0FKtQpwA6LXeG2w+jxmw3oA8lVUgEf/rzeC/b ByBNsO70aEFTd
|
||||
missing.example. 3600 IN DNSKEY 256 3 5 BQEAAAAB2F1v2HWzCCE9vNsKfk0K8vd4EBwizNT9KO6WYXj0oxEL4eOJ aXbax/BzPFx+3qO8B8pu8E/JjkWH0oaYz4guUyTVmT5Eelg44Vb1kssy q8W27oQ+9qNiP8Jv6zdOj0uCB/N0fxfVL3371xbednFqoECfSFDZa6Hw jU1qzveSsW0=
|
|
@ -0,0 +1,2 @@
|
|||
missing.example. 3600 IN DS 12892 5 2 EF59E5C70BC4153B7DB4C11F9C36B729577DA71474E0A5C9B8875173 6E583200
|
||||
missing.example. 3600 IN DS 12892 5 1 9D4CD60491D372207FA584D2EE460CC51D7FF8A7
|
|
@ -0,0 +1,3 @@
|
|||
none.example. 3600 IN DNSKEY 257 3 5 AwEAAc6Cz10GXEh5lxA9ujTY/QarTajcUOBwwBYIeldjRsgoouK/UioY FYgxEFL0O5JK6YCRUoGzl3EgLr5GvNyhIp1PZpOpHf7o/4MVOZTGJzm/ sHWP5B+KcYjQOxJiDb433iCmRM4DpHPUUoxw0QbZglzAzl5MfKBoyZud lH59DdT/50bkBg8iVu35EzuW0SYt31k70hxHBSb2wAGWeqxEPKJ1nQiI UcrWNDeem7byrqjPN9wyZhq0XkQ9qbcYxAkRNd8Y7P0FyR1YKJMc6SWZ Ru7muvxqTHgCtJVgxVz4qndCFKdYidiDeKe2/X/z5gf7pyYl3549O8JR tWdNKqutppk=
|
||||
none.example. 3600 IN DNSKEY 257 3 5 BEAAAAOhHQDBrhQbtphgq2wQUpEQ5t4DtUHxoMVFu2hWLDMvoOMRXjG rhhCeFvAZih7yJHf8ZGfW6hd38hXG/xylYCO6Krpbdojwx8YMXLA5/kA +u50WIL8ZR1R6KTbsYVMf/Qx5RiNbPClw+vT+U8eXEJmO20jIS1ULgqy 347cBB1zMnnz/4LJpA0da9CbKj3A254T515sNIMcwsB8/2+2E63/zZrQ zBkj0BrN/9Bexjpiks3jRhZatEsXn3dTy47R09Uix5WcJt+xzqZ7+ysy LKOOedS39Z7SDmsn2eA0FKtQpwA6LXeG2w+jxmw3oA8lVUgEf/rzeC/b ByBNsO70aEFTd
|
||||
none.example. 3600 IN DNSKEY 256 3 5 BQEAAAAB2F1v2HWzCCE9vNsKfk0K8vd4EBwizNT9KO6WYXj0oxEL4eOJ aXbax/BzPFx+3qO8B8pu8E/JjkWH0oaYz4guUyTVmT5Eelg44Vb1kssy q8W27oQ+9qNiP8Jv6zdOj0uCB/N0fxfVL3371xbednFqoECfSFDZa6Hw jU1qzveSsW0=
|
|
@ -0,0 +1,2 @@
|
|||
ok.example. 625 IN DNSKEY 257 3 5 BEAAAAOhHQDBrhQbtphgq2wQUpEQ5t4DtUHxoMVFu2hWLDMvoOMRXjGr hhCeFvAZih7yJHf8ZGfW6hd38hXG/xylYCO6Krpbdojwx8YMXLA5/kA+ u50WIL8ZR1R6KTbsYVMf/Qx5RiNbPClw+vT+U8eXEJmO20jIS1ULgqy3 47cBB1zMnnz/4LJpA0da9CbKj3A254T515sNIMcwsB8/2+2E63/zZrQz Bkj0BrN/9Bexjpiks3jRhZatEsXn3dTy47R09Uix5WcJt+xzqZ7+ysyL KOOedS39Z7SDmsn2eA0FKtQpwA6LXeG2w+jxmw3oA8lVUgEf/rzeC/bB yBNsO70aEFTd
|
||||
ok.example. 625 IN DNSKEY 256 3 5 BQEAAAAB2F1v2HWzCCE9vNsKfk0K8vd4EBwizNT9KO6WYXj0oxEL4eOJ aXbax/BzPFx+3qO8B8pu8E/JjkWH0oaYz4guUyTVmT5Eelg44Vb1kssy q8W27oQ+9qNiP8Jv6zdOj0uCB/N0fxfVL3371xbednFqoECfSFDZa6Hw jU1qzveSsW0=
|
|
@ -0,0 +1,2 @@
|
|||
ok.example. 3600 IN DS 12892 5 2 26584835CA80C81C91999F31CFAF2A0E89D4FF1C8FAFD0DDB31A85C7 19277C13
|
||||
ok.example. 3600 IN DS 12892 5 1 7AA4A3F416C2F2391FB7AB0D434F762CD62D1390
|
|
@ -0,0 +1,121 @@
|
|||
; File written on Thu Oct 5 23:44:34 2017
|
||||
; dnssec_signzone version 9.12.0a1
|
||||
prep.example. 300 IN SOA ns1.prep.example. hostmaster.prep.example. (
|
||||
1 ; serial
|
||||
2000 ; refresh (33 minutes 20 seconds)
|
||||
2000 ; retry (33 minutes 20 seconds)
|
||||
1814400 ; expire (3 weeks)
|
||||
3600 ; minimum (1 hour)
|
||||
)
|
||||
300 RRSIG SOA 8 2 300 (
|
||||
20171105054434 20171006054434 19260 prep.example.
|
||||
1fX0z7Swu4gMPews/ZE8bzNg+JXNedFBDGIH
|
||||
PTSfVQtVLIvRWpME+PylX7MdVMZE/PST+x4/
|
||||
mWyveyjetEOo7/7aQL236FfI0y6TxQFy7HwC
|
||||
FMieqoQCUluuKOvToxg4vUp4GOdlUGbqC63h
|
||||
DbX5Z37VptJXLkt4niF4Kl2iD+U9/bk7HAEU
|
||||
4zDiKroYnusGKfVB9xAWddzoHdLxhVuPi7ut
|
||||
328suPdgX0bfs7uB+y4cikhGzAmPpNMlGHju
|
||||
qYG74NcFGQNutLB7ayx/m87t7mTty7jbNKm3
|
||||
QWJSPf5IR8/kmzAi8HMnapY5vUmm+hX8JOfU
|
||||
UtH7i0iEsUqRbEwu5A== )
|
||||
300 NS ns1.prep.example.
|
||||
300 RRSIG NS 8 2 300 (
|
||||
20171105054434 20171006054434 19260 prep.example.
|
||||
u5sU2cfqNqIyCLw18ZNnFw28/GyRt0EOiPYS
|
||||
dygmpfMDrvDaxjiiai8zWYjnl/E3qzVH9Zku
|
||||
07lEDORZdVb0uCDe1NynjAyw4AHps85cAwVc
|
||||
8HTSbzdVZsQTELpunYFJffh24PDr9unw7KOY
|
||||
jzTP6qNedJ1uM54TOr177zfmBh7N2fkAoGyV
|
||||
NjvTKrlgDYGNIn8/YMgHb4sNgyfe54MYY00f
|
||||
kehVxfKnRCgDsbJ0Pk6jhBMCQWvOh8jG8WyV
|
||||
ElAa/eMqlxUC1idF8ydWefjsI/7lPcjSalw9
|
||||
qZw4CDCLHHZy0TOSmCYRRZuIeVXzBfDPJyi4
|
||||
2A3iLntKFJ4AOLFMJg== )
|
||||
3600 NSEC ns1.prep.example. NS SOA RRSIG NSEC DNSKEY
|
||||
3600 RRSIG NSEC 8 2 3600 (
|
||||
20171105054434 20171006054434 19260 prep.example.
|
||||
Aed99/jdG82YAkKVWjoKOsAGtB3JnyKkCaAq
|
||||
zgMrYkXU41y3KDCAmGzooGPQY7NN+WxX7FJ2
|
||||
1nXkgljma/azgpsbi9ssneFtv7PPFClVmN+u
|
||||
j+mM4MK/ZR7eJOsMqETg4PAO5VAh6c/GVmyA
|
||||
RD/m6EhJVZEjPfLWbDoC4hVAgem7DP/NMjyI
|
||||
GfztpDjMmyLQyv6tL+UEXSJHGp3ZEa5Z5i7X
|
||||
Nl/bRTUlZs7L4rTgoqHv6LEmsXKAf9rZYq4b
|
||||
eP6GF9I1Ry41MfHLc7lPUmtR38ErEsM5uGzw
|
||||
trCQYEFhuRWUBxZ8OSL2EZK9rUBXZX+cwK/8
|
||||
ZP7mIfDfljkXPQcmow== )
|
||||
3600 DNSKEY 256 3 8 (
|
||||
AwEAAfMzj6aZIgZDVcpH1pKOtq998E85+nEY
|
||||
YJa0lLS8+QTCC1Efke8GLwsXT0IPTuwnOuXM
|
||||
RjySirab0NuEr69T8KP/43YxcRdmCg89mjjN
|
||||
szoVPPstC9xBKVOc0pRMDF7sfsTrSye3RY7+
|
||||
Z6uZEH5FOAkz2hNbJJHOn4HpNUhLPJGRauhf
|
||||
0evamwUmQ/mlhkVW5q4WmqPCDMNY3K6XtkEm
|
||||
cvm8n9ZCXC9Z5AX6KpynujzLdKyxpdGqUk6r
|
||||
lavp9ILPpRKoTZDX+2q1pDgP5cDndwtgNSvU
|
||||
DBQZoD0psS2cyB3PHo+dPwwpEyM//ZSKsH9m
|
||||
e85Ti0413TOWFyFd/jUOUA8=
|
||||
) ; ZSK; alg = RSASHA256 ; key id = 19260
|
||||
3600 DNSKEY 257 3 8 (
|
||||
AwEAAbV8X06Qvk350aZ6eZ1d7WbT1H/Y0Sv7
|
||||
qAdbk5fbYIKpMvZ8D9xqoTHgD0z0uCgWWIcm
|
||||
/xyKBfmax76oLwMBpR/kdtuJz0irgFITnJCH
|
||||
pEfR9AJ/Mfm7NyMglq+/39I03E1/LXvpXQLG
|
||||
tg+Mo/2CUE5sbG31jmPNK/2J8RMESkIi87fW
|
||||
azZU/oyUEtECE5PGbdyw+4PacAsXNjnwl30T
|
||||
aatL277wX4pt+IUPdE6EIph3t+dxXJ7OpHgW
|
||||
8g+YSHLlCImLVapdg3oD/cs6ncaBq9z7la5Y
|
||||
dHNw2QAIAvQ11EsonrkonPqO6zNVZAVdT2VB
|
||||
X5YzGAoCFUvbCvlnl2a7SxM=
|
||||
) ; KSK; alg = RSASHA256 ; key id = 65482
|
||||
3600 RRSIG DNSKEY 8 2 3600 (
|
||||
20171105054434 20171006054434 19260 prep.example.
|
||||
pPw81pJ3PeF+tqEswTul9N8Qsl9JKgK4v8SV
|
||||
lPfP0pnlMBMbtMFFkx5ZmhQg3Z3U8SdE64Bt
|
||||
C5St3qItyyKdTQ0Rbm9mfV6twxDB8lVry8F7
|
||||
Pv7gJmmcWzBcbLGcrXIrVNSZhigkemQXTElj
|
||||
P8y1j7kaNFWBWbDMn7KesiZ9BiC6sqvuKa3R
|
||||
wSofjwXTESspWZP0NtXr5ymaBIMR9UtNj5Wh
|
||||
jm1+tg6BxNBKxhCHlSC0ltPS/qq9J1ZUmtJz
|
||||
sj/EAFfPVJVuEveebMvi1oDWPTgajO9+EHl4
|
||||
ELrgnQHCgaybMzbpd/A5+Tr1hQkv48I8Mb0/
|
||||
8LJ2/6xrvJm64yRteg== )
|
||||
3600 RRSIG DNSKEY 8 2 3600 (
|
||||
20171105054434 20171006054434 65482 prep.example.
|
||||
WeIWiC9SnBe2+UocVjpap62O8Rz+iljwJiu9
|
||||
VlGUwct3Vydq4/4FVAKdPklXV5cYbBLhO2MB
|
||||
3R4toX8RNU/0Ny8DnugQzLKvVfg0xoyU/UAJ
|
||||
k4aWa/vPivSLGouLQPiNp71bdXN4LB/2xmzu
|
||||
cPYXzS9ePpwCOp/9JLoNjBSMQkfjfWAcaNtj
|
||||
1DKDmHHL1sPMizninxSJLQOAKb+JwUAjAkOM
|
||||
O1JqwkB12/IZuzxN5hly+uNsbFFxPzQkcnJ4
|
||||
5bhzxuh5D/JRXW0nF5aO4aR+9X+lSUpDJQZ1
|
||||
5fOt1cybZCn/ag68RA92zrnisdbrggJGS003
|
||||
wn/VKbLVfFj3eQrfNA== )
|
||||
ns1.prep.example. 300 IN A 1.1.1.1
|
||||
300 RRSIG A 8 3 300 (
|
||||
20171105054434 20171006054434 19260 prep.example.
|
||||
QUyDyJVk3JGEq+VTZtY3firzsRqOA0LUm3Tf
|
||||
/fnemQBeOlMda2ErA7DqYVriIGfM8jph416E
|
||||
YX8SKAZXGEAlsEbC9cWBVyc5TYH6tZ43sV51
|
||||
55kGTiUY92NnrH10Q+m2SLAEEaKCA/cgBwOR
|
||||
tN2Wb1meHgiLbGYN2LbANfDQzoEk4AYAgT6r
|
||||
wDKVVg/V9Ed7JnCnBQc9MN9+LQ3h4NBGUiEY
|
||||
mr7HX2w+yzqcGFNLI1aFPe2IwFt120QPLyyl
|
||||
cZgc6FUBX4YCnWoCb0aFyyOT76AQkKF5YBRn
|
||||
gAv6S8q1pZ/0B5w4gjaLEGlts3LG0bxZ1GJd
|
||||
gCQMEhgYgyXUchTtZA== )
|
||||
3600 NSEC prep.example. A RRSIG NSEC
|
||||
3600 RRSIG NSEC 8 3 3600 (
|
||||
20171105054434 20171006054434 19260 prep.example.
|
||||
rDWN40u1a3DSzWOrS+4YR2XOxaem0BAQ/glN
|
||||
QkXNDew1WsZo3fe0IHIhDKlJ/5MJAfAHq8Xs
|
||||
A5UGUw2efoNAN/0LuWsI/9IPm4dwQOXiTCly
|
||||
uxugXf5islPYyvn1Z14ay/7/2P3W6HZknXzo
|
||||
lZFpwqfFZQCxz7c/1aH+2ntAMeqx8LHuewSr
|
||||
Rz/sLsSiCcZQ6NMWnZdoC5SGy4CTcIIPPS8z
|
||||
9dQ6QYTC5iq4MKRfyJUyvODyU9be4e6jbo5b
|
||||
mjRcov4ttbImhD5jrLAZIfjO6DSazGNVFf/x
|
||||
6rjxjrc8SISPkt2xYwcOlYch9OZuoH86wcZu
|
||||
3Don6yAnLDYDrZylAA== )
|
|
@ -0,0 +1,2 @@
|
|||
prep.example. IN DS 65482 8 1 F3673708FBADDEC3EB55933E2E393ACE85EAC2BB
|
||||
prep.example. IN DS 65482 8 2 51A7C97AAC42803DA515D1CAFEE28031A5018F6345F12F4B6C1B6D20 02B59820
|
|
@ -0,0 +1,115 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# 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.
|
||||
|
||||
SYSTEMTESTTOP=..
|
||||
. $SYSTEMTESTTOP/conf.sh
|
||||
|
||||
if [ "$CYGWIN" ]; then
|
||||
DIG=".\dig.bat"
|
||||
WINDSFROMKEY=`cygpath -w $DSFROMKEY`
|
||||
CHECKDS="$CHECKDS -a sha1 -a sha256 -d $DIG -D $WINDSFROMKEY"
|
||||
else
|
||||
DIG="./dig.sh"
|
||||
CHECKDS="$CHECKDS -a sha1 -a sha256 -d $DIG -D $DSFROMKEY"
|
||||
fi
|
||||
chmod +x $DIG
|
||||
|
||||
status=0
|
||||
n=1
|
||||
|
||||
echo_i "checking for correct DS, looking up key via 'dig' ($n)"
|
||||
ret=0
|
||||
$CHECKDS ok.example > checkds.out.$n 2>&1 || ret=1
|
||||
grep 'SHA-1' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
grep 'SHA-256' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking for correct DS, obtaining key from file ($n)"
|
||||
ret=0
|
||||
$CHECKDS -f ok.example.dnskey.db ok.example > checkds.out.$n 2>&1 || ret=1
|
||||
grep 'SHA-1' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
grep 'SHA-256' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking for incorrect DS, looking up key via 'dig' ($n)"
|
||||
ret=0
|
||||
$CHECKDS wrong.example > checkds.out.$n 2>&1 || ret=1
|
||||
grep 'SHA-1' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
grep 'SHA-256' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking for incorrect DS, obtaining key from file ($n)"
|
||||
ret=0
|
||||
$CHECKDS -f wrong.example.dnskey.db wrong.example > checkds.out.$n 2>&1 || ret=1
|
||||
grep 'SHA-1' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
grep 'SHA-256' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking for partially missing DS, looking up key via 'dig' ($n)"
|
||||
ret=0
|
||||
$CHECKDS missing.example > checkds.out.$n 2>&1 && ret=1
|
||||
grep 'SHA-1.*found' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
grep 'SHA-256.*found' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
grep 'SHA-1.*missing' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
grep 'SHA-256.*missing' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking for partially missing DS, obtaining key from file ($n)"
|
||||
ret=0
|
||||
$CHECKDS -f missing.example.dnskey.db missing.example > checkds.out.$n 2>&1 && ret=1
|
||||
grep 'SHA-1.*found' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
grep 'SHA-256.*found' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
grep 'SHA-1.*missing' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
grep 'SHA-256.*missing' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking for entirely missing DS, looking up key via 'dig' ($n)"
|
||||
ret=0
|
||||
$CHECKDS none.example > checkds.out.$n 2>&1 && ret=1
|
||||
grep 'SHA-1.*found' checkds.out.$n > /dev/null 2>&1 && ret=1
|
||||
grep 'SHA-256.*found' checkds.out.$n > /dev/null 2>&1 && ret=1
|
||||
n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking for entirely missing DS, obtaining key from file ($n)"
|
||||
ret=0
|
||||
$CHECKDS -f none.example.dnskey.db none.example > checkds.out.$n 2>&1 && ret=1
|
||||
grep 'SHA-1.*found' checkds.out.$n > /dev/null 2>&1 && ret=1
|
||||
grep 'SHA-256.*found' checkds.out.$n > /dev/null 2>&1 && ret=1
|
||||
n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
echo_i "checking with prepared dsset file ($n)"
|
||||
ret=0
|
||||
$CHECKDS -f prep.example.db -s prep.example.ds.db prep.example > checkds.out.$n 2>&1 || ret=1
|
||||
grep 'SHA-1.*found' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
grep 'SHA-256.*found' checkds.out.$n > /dev/null 2>&1 || ret=1
|
||||
n=`expr $n + 1`
|
||||
if [ $ret != 0 ]; then echo_i "failed"; fi
|
||||
status=`expr $status + $ret`
|
||||
|
||||
if [ $status = 0 ]; then $SHELL clean.sh; fi
|
||||
echo_i "exit status: $status"
|
||||
[ $status -eq 0 ] || exit 1
|
|
@ -0,0 +1,2 @@
|
|||
wrong.example. 3600 IN DNSKEY 257 3 5 AwEAAc6Cz10GXEh5lxA9ujTY/QarTajcUOBwwBYIeldjRsgoouK/UioY FYgxEFL0O5JK6YCRUoGzl3EgLr5GvNyhIp1PZpOpHf7o/4MVOZTGJzm/ sHWP5B+KcYjQOxJiDb433iCmRM4DpHPUUoxw0QbZglzAzl5MfKBoyZud lH59DdT/50bkBg8iVu35EzuW0SYt31k70hxHBSb2wAGWeqxEPKJ1nQiI UcrWNDeem7byrqjPN9wyZhq0XkQ9qbcYxAkRNd8Y7P0FyR1YKJMc6SWZ Ru7muvxqTHgCtJVgxVz4qndCFKdYidiDeKe2/X/z5gf7pyYl3549O8JR tWdNKqutppk=
|
||||
wrong.example. 3600 IN DNSKEY 256 3 5 BQEAAAAB2F1v2HWzCCE9vNsKfk0K8vd4EBwizNT9KO6WYXj0oxEL4eOJ aXbax/BzPFx+3qO8B8pu8E/JjkWH0oaYz4guUyTVmT5Eelg44Vb1kssy q8W27oQ+9qNiP8Jv6zdOj0uCB/N0fxfVL3371xbednFqoECfSFDZa6Hw jU1qzveSsW0=
|
|
@ -0,0 +1,2 @@
|
|||
wrong.example. 3600 IN DS 1192 5 1 684BB5119673C9272A0A7582AF8576561B5D80EC
|
||||
wrong.example. 3600 IN DS 1192 5 2 14E4A873360E512CD2E8C2C331C4472F5EDAB0736669901F4D42E976 3D7B1F5C
|
|
@ -1,4 +1,4 @@
|
|||
example. 0 SOA . . 0 0 0 0 0
|
||||
example. 0 NS .
|
||||
example. 0 DNSKEY 257 3 10 AwEAAbqjg7xdvnU2Q/gtLw5LOfr5cDeTRjYuEbkzGrUiVSOSoxcTxuao WS/AFPQHuD8OSLiE/CeZ087JowREXl058rRfae8KMrveY17V0wmKs9N1 F1wf/hRDpXiThlRHWlskp8eSEEIqYrrHgWTesy/xDGIEOFM1gwRo0w8j KdRRJeL2hseTMa+m3rTzrYudUsI0BHLW8PiDUCbG5xgdee8/5YR4847i AAqHIiPJ1Z/IT53OIjMmtv5BUykZ8RYjlJxxX+C+dpRKiK73SQaR3hCB XAYOL9WsDp2/fpmEZpewavkMkdC+j2CX+z27MCS3ASO0AeKK0lcNXwND kgreE+Kr7gc=
|
||||
example. 0 CDNSKEY 257 3 10 AwEAAbqjg7xdvnU2Q/gtLw5LOfr5cDeTRjYuEbkzGrUiVSOSoxcTXXXX WS/AFPQHuD8OSLiE/CeZ087JowREXl058rRfae8KMrveY17V0wmKs9N1 F1wf/hRDpXiThlRHWlskp8eSEEIqYrrHgWTesy/xDGIEOFM1gwRo0w8j KdRRJeL2hseTMa+m3rTzrYudUsI0BHLW8PiDUCbG5xgdee8/5YR4847i AAqHIiPJ1Z/IT53OIjMmtv5BUykZ8RYjlJxxX+C+dpRKiK73SQaR3hCB XAYOL9WsDp2/fpmEZpewavkMkdC+j2CX+z27MCS3ASO0AeKK0lcNXwND kgreE+Kr7gc=
|
||||
example. 0 CDNSKEY 257 3 14 AwEAAbqjg7xdvnU2Q/gtLw5LOfr5cDeTRjYuEbkzGrUiVSOSoxcTXXXX WS/AFPQHuD8OSLiE/CeZ087JowREXl058rRfae8KMrveY17V0wmKs9N1 F1wf/hRDpXiThlRHWlskp8eSEEIqYrrHgWTesy/xDGIEOFM1gwRo0w8j KdRRJeL2hseTMa+m3rTzrYudUsI0BHLW8PiDUCbG5xgdee8/5YR4847i AAqHIiPJ1Z/IT53OIjMmtv5BUykZ8RYjlJxxX+C+dpRKiK73SQaR3hCB XAYOL9WsDp2/fpmEZpewavkMkdC+j2CX+z27MCS3ASO0AeKK0lcNXwND kgreE+Kr7gc=
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
example. 0 SOA . . 0 0 0 0 0
|
||||
example. 0 NS .
|
||||
example. 0 DNSKEY 257 3 10 AwEAAbqjg7xdvnU2Q/gtLw5LOfr5cDeTRjYuEbkzGrUiVSOSoxcTxuao WS/AFPQHuD8OSLiE/CeZ087JowREXl058rRfae8KMrveY17V0wmKs9N1 F1wf/hRDpXiThlRHWlskp8eSEEIqYrrHgWTesy/xDGIEOFM1gwRo0w8j KdRRJeL2hseTMa+m3rTzrYudUsI0BHLW8PiDUCbG5xgdee8/5YR4847i AAqHIiPJ1Z/IT53OIjMmtv5BUykZ8RYjlJxxX+C+dpRKiK73SQaR3hCB XAYOL9WsDp2/fpmEZpewavkMkdC+j2CX+z27MCS3ASO0AeKK0lcNXwND kgreE+Kr7gc=
|
||||
; Actual CDS
|
||||
; example. 0 CDS 14364 10 2 FD03B2312C8F0FE72C1751EFA1007D743C94EC91594FF0047C23C37CE119BA0C
|
||||
example. 0 CDS 14364 10 2 FD03B2312C8F0FE72C1751EFA1007D743C94EC91594FF0047C23C37CE119BA0B
|
||||
example. 0 CDS 14364 14 2 FD03B2312C8F0FE72C1751EFA1007D743C94EC91594FF0047C23C37CE119BA0B
|
||||
|
|
|
@ -66,6 +66,7 @@ catz \
|
|||
cds \
|
||||
chain \
|
||||
checkconf \
|
||||
checkds \
|
||||
checknames \
|
||||
checkzone \
|
||||
database \
|
||||
|
@ -409,6 +410,22 @@ keyfile_to_key_id() {
|
|||
echo "$1" | sed "s/.*+0\{0,4\}//"
|
||||
}
|
||||
|
||||
# private_type_record: write a private type record recording the state of the
|
||||
# signing process
|
||||
#
|
||||
# For a given zone ($1), algorithm number ($2) and key file ($3), print the
|
||||
# private type record with default type value of 65534, indicating that the
|
||||
# signing process for this key is completed.
|
||||
private_type_record() {
|
||||
_zone=$1
|
||||
_algorithm=$2
|
||||
_keyfile=$3
|
||||
|
||||
_id=$(keyfile_to_key_id "$_keyfile")
|
||||
|
||||
printf "%s. 0 IN TYPE65534 %s 5 %02x%04x0000\n" "$_zone" "\\#" "$_algorithm" "$_id"
|
||||
}
|
||||
|
||||
# nextpart*() - functions for reading files incrementally
|
||||
#
|
||||
# These functions aim to facilitate looking for (or waiting for)
|
||||
|
@ -573,7 +590,7 @@ _repeat() (
|
|||
)
|
||||
|
||||
rndc_reload() {
|
||||
echo_i "`$RNDC -c ../common/rndc.conf -s $2 -p ${CONTROLPORT} reload $3 2>&1 | sed 's/^/'$1' /'`"
|
||||
$RNDC -c ../common/rndc.conf -s $2 -p ${CONTROLPORT} reload $3 2>&1 | sed 's/^/'"I:$SYSTESTDIR:$1"' /'
|
||||
# reloading single zone is synchronous, if we're reloading whole server
|
||||
# we need to wait for reload to finish
|
||||
if [ -z "$3" ]; then
|
||||
|
@ -585,7 +602,7 @@ rndc_reload() {
|
|||
}
|
||||
|
||||
rndc_reconfig() {
|
||||
echo_i "`$RNDC -c ../common/rndc.conf -s $2 -p ${CONTROLPORT} reconfig 2>&1 | sed 's/^/'$1' /'`"
|
||||
$RNDC -c ../common/rndc.conf -s $2 -p ${CONTROLPORT} reconfig 2>&1 | sed 's/^/'"I:$SYSTESTDIR:$1"' /'
|
||||
for __try in 0 1 2 3 4 5 6 7 8 9; do
|
||||
$RNDC -c ../common/rndc.conf -s $2 -p ${CONTROLPORT} status | grep "reload/reconfig in progress" > /dev/null || break
|
||||
sleep 1
|
||||
|
@ -720,6 +737,7 @@ export KEYGEN
|
|||
export KEYSETTOOL
|
||||
export KEYSIGNER
|
||||
export KRB5_CONFIG
|
||||
export KRB5_KTNAME
|
||||
export MAKEJOURNAL
|
||||
export MDIG
|
||||
export NAMED
|
||||
|
@ -737,9 +755,9 @@ export PYTHON
|
|||
export RESOLVE
|
||||
export RNDC
|
||||
export RRCHECKER
|
||||
export SAMPLEUPDATE
|
||||
export SIGNER
|
||||
export SUBDIRS
|
||||
export TMPDIR
|
||||
export TSIGKEYGEN
|
||||
export VERIFY
|
||||
export WIRETEST
|
||||
|
|
|
@ -55,7 +55,7 @@ NZD2NZF=$TOP/bin/tools/named-nzd2nzf
|
|||
PK11DEL="$TOP/bin/pkcs11/pkcs11-destroy -s ${SLOT:-0} -p ${HSMPIN:-1234} -w 0"
|
||||
PK11GEN="$TOP/bin/pkcs11/pkcs11-keygen -q -s ${SLOT:-0} -p ${HSMPIN:-1234}"
|
||||
PK11LIST="$TOP/bin/pkcs11/pkcs11-list -s ${SLOT:-0} -p ${HSMPIN:-1234}"
|
||||
RESOLVE=$TOP/lib/samples/resolve
|
||||
RESOLVE=$TOP/bin/tests/system/resolve
|
||||
REVOKE=$TOP/bin/dnssec/dnssec-revoke
|
||||
RNDC=$TOP/bin/rndc/rndc
|
||||
RNDCCONFGEN=$TOP/bin/confgen/rndc-confgen
|
||||
|
@ -72,10 +72,11 @@ KEYCREATE=$TOP/bin/tests/system/tkey/keycreate
|
|||
KEYDELETE=$TOP/bin/tests/system/tkey/keydelete
|
||||
MAKEJOURNAL=$TOP/bin/tests/makejournal
|
||||
PIPEQUERIES=$TOP/bin/tests/system/pipelined/pipequeries
|
||||
SAMPLEUPDATE=$TOP/lib/samples/sample-update
|
||||
|
||||
# we don't want a KRB5_CONFIG setting breaking the tests
|
||||
KRB5_CONFIG=/dev/null
|
||||
# use local keytab instead of default /etc/krb5.keytab
|
||||
KRB5_KTNAME=dns.keytab
|
||||
|
||||
#
|
||||
# Construct the lists of tests to run
|
||||
|
@ -83,7 +84,7 @@ KRB5_CONFIG=/dev/null
|
|||
SEQUENTIAL_UNIX="@PKCS11_TEST@"
|
||||
SEQUENTIALDIRS="$SEQUENTIAL_COMMON $SEQUENTIAL_UNIX"
|
||||
|
||||
PARALLEL_UNIX="@CHECKDS@ @COVERAGE@ @DNSTAP@ @KEYMGR@ cookie cpu logfileconfig"
|
||||
PARALLEL_UNIX="@CHECKDS@ @COVERAGE@ @DNSTAP@ @KEYMGR@ cookie logfileconfig"
|
||||
PARALLELDIRS="$PARALLEL_COMMON $PARALLEL_UNIX"
|
||||
|
||||
SUBDIRS="$SEQUENTIALDIRS $PARALLELDIRS"
|
||||
|
|
|
@ -58,12 +58,10 @@ NZD2NZF=$TOP/Build/$VSCONF/named-nzd2nzf@EXEEXT@
|
|||
PK11DEL="$TOP/Build/$VSCONF/pkcs11-destroy@EXEEXT@ -s ${SLOT:-0} -p ${HSMPIN:-1234} -w 0"
|
||||
PK11GEN="$TOP/Build/$VSCONF/pkcs11-keygen@EXEEXT@ -q -s ${SLOT:-0} -p ${HSMPIN:-1234}"
|
||||
PK11LIST="$TOP/Build/$VSCONF/pkcs11-list@EXEEXT@ -s ${SLOT:-0} -p ${HSMPIN:-1234}"
|
||||
RESOLVE=$TOP/lib/samples/resolve
|
||||
REVOKE=$TOP/Build/$VSCONF/dnssec-revoke@EXEEXT@
|
||||
RNDC=$TOP/Build/$VSCONF/rndc@EXEEXT@
|
||||
RNDCCONFGEN=$TOP/Build/$VSCONF/rndc-confgen@EXEEXT@
|
||||
RRCHECKER=$TOP/Build/$VSCONF/named-rrchecker@EXEEXT@
|
||||
SAMPLEUPDATE=$TOP/Build/$VSCONF/update@EXEEXT@
|
||||
SETTIME=$TOP/Build/$VSCONF/dnssec-settime@EXEEXT@
|
||||
SIGNER=$TOP/Build/$VSCONF/dnssec-signzone@EXEEXT@
|
||||
TSIGKEYGEN=$TOP/Build/$VSCONF/tsig-keygen@EXEEXT@
|
||||
|
@ -78,7 +76,7 @@ KEYCREATE=$TOP/Build/$VSCONF/keycreate@EXEEXT@
|
|||
KEYDELETE=$TOP/Build/$VSCONF/keydelete@EXEEXT@
|
||||
MAKEJOURNAL=$TOP/Build/$VSCONF/makejournal@EXEEXT@
|
||||
PIPEQUERIES=$TOP/Build/$VSCONF/pipequeries@EXEEXT@
|
||||
# to port SAMPLEUPDATE=$TOP/lib/samples/sample-update
|
||||
RESOLVE=$TOP/Build/$VSCONF/resolve@EXEEXT@
|
||||
|
||||
# we don't want a KRB5_CONFIG setting breaking the tests
|
||||
KRB5_CONFIG=NUL
|
||||
|
|
|
@ -28,3 +28,4 @@ rm -f ./ns2/dsset-example.
|
|||
rm -f ./ns2/example.db ./ns2/K* ./ns2/keyid ./ns2/keydata
|
||||
rm -f ./nslookup.out.test*
|
||||
rm -f ./yamlget.out.*
|
||||
rm -f ./nsupdate.out.test*
|
||||
|
|
|
@ -102,6 +102,24 @@ if [ -x "$HOST" -a $checkupdate -eq 1 ] ; then
|
|||
|
||||
fi
|
||||
|
||||
if [ -x "$NSUPDATE" -a $checkupdate -eq 1 ] ; then
|
||||
|
||||
n=$((n+1))
|
||||
echo_i "check nsupdate handles UPDATE response to QUERY ($n)"
|
||||
ret=0
|
||||
res=0
|
||||
$NSUPDATE << EOF > nsupdate.out.test$n 2>&1 || res=$?
|
||||
server 10.53.0.7 ${PORT}
|
||||
add x.example.com 300 in a 1.2.3.4
|
||||
send
|
||||
EOF
|
||||
test $res -eq 1 || ret=1
|
||||
grep "invalid OPCODE in response to SOA query" nsupdate.out.test$n > /dev/null || ret=1
|
||||
if [ $ret -ne 0 ]; then echo_i "failed"; fi
|
||||
status=$((status+ret))
|
||||
|
||||
fi
|
||||
|
||||
if [ -x "$DIG" ] ; then
|
||||
|
||||
if [ $checkupdate -eq 1 ] ; then
|
||||
|
@ -975,7 +993,8 @@ if [ -x "$DIG" ] ; then
|
|||
echo_i "check that dig +bufsize=0 +edns sends EDNS with bufsize of 0 ($n)"
|
||||
ret=0
|
||||
dig_with_opts @10.53.0.3 a.example +bufsize=0 +edns +qr > dig.out.test$n 2>&1 || ret=1
|
||||
grep -E 'EDNS:.* udp: 0\r{0,1}$' dig.out.test$n > /dev/null|| ret=1
|
||||
pat='EDNS:.* udp: 0$'
|
||||
tr -d '\r' < dig.out.test$n | grep -E "$pat" > /dev/null || ret=1
|
||||
if [ $ret -ne 0 ]; then echo_i "failed"; fi
|
||||
status=$((status+ret))
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ rm -f ./canonical?.*
|
|||
rm -f ./delv.out*
|
||||
rm -f ./delve.out*
|
||||
rm -f ./dig.out.*
|
||||
rm -f ./ns2/too-many-iterations.db
|
||||
rm -f ./dnssectools.out*
|
||||
rm -f ./dsfromkey.out.*
|
||||
rm -f ./keygen.err
|
||||
|
|
|
@ -31,3 +31,5 @@ ns6.optout-tld. A 10.53.0.6
|
|||
in-addr.arpa. NS ns2.example.
|
||||
inprogress. NS ns10.inprogress.
|
||||
ns10.inprogress. A 10.53.0.10
|
||||
too-many-iterations. NS ns2.too-many-iterations.
|
||||
ns2.too-many-iterations. A 10.53.0.2
|
||||
|
|
|
@ -26,6 +26,7 @@ echo_i "ns1/sign.sh"
|
|||
|
||||
cp "../ns2/dsset-example$TP" .
|
||||
cp "../ns2/dsset-in-addr.arpa$TP" .
|
||||
cp "../ns2/dsset-too-many-iterations$TP" .
|
||||
|
||||
grep "$DEFAULT_ALGORITHM_NUMBER [12] " "../ns2/dsset-algroll$TP" > "dsset-algroll$TP"
|
||||
cp "../ns6/dsset-optout-tld$TP" .
|
||||
|
|
|
@ -191,4 +191,9 @@ zone "hours-vs-days" {
|
|||
allow-update { any; };
|
||||
};
|
||||
|
||||
zone "too-many-iterations" {
|
||||
type master;
|
||||
file "too-many-iterations.db.signed";
|
||||
};
|
||||
|
||||
include "trusted.conf";
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue