Add system test for dual-stack-servers with possible DNAME response

Create a zone that triggers DNAME owner name checks in a zone that
is only reachable using a dual stack server.  The answer contains
a name that is higher in the tree than the query name.

e.g.
	foo.v4only.net.	CNAME	v4only.net.
	v4only.net.	A	10.0.0.1

ns4 is serving the test zone (ipv4-only)
ns6 is the root server for this test (dual stacked)
ns7 is acting as the dual stack server (dual stacked)
ns9 is the server under test (ipv6-only)

(cherry picked from commit f946133ec9)
This commit is contained in:
Mark Andrews 2022-10-19 16:53:11 +11:00
parent c77af4be6f
commit 726aa21913
12 changed files with 103 additions and 3 deletions

View file

@ -57,6 +57,11 @@ zone "sourcens" {
file "sourcens.db";
};
zone "v4only.net" {
type primary;
file "v4only.net.db";
};
key rndc_key {
secret "1234abcd8765";
algorithm @DEFAULT_HMAC@;

View file

@ -0,0 +1,22 @@
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
;
; SPDX-License-Identifier: MPL-2.0
;
; This Source Code Form is subject to the terms of the Mozilla Public
; License, v. 2.0. If a copy of the MPL was not distributed with this
; file, you can obtain one at https://mozilla.org/MPL/2.0/.
;
; See the COPYRIGHT file distributed with this work for additional
; information regarding copyright ownership.
$TTL 300
@ IN SOA marka.isc.org. ns.server. (
2010 ; serial
600 ; refresh
600 ; retry
1200 ; expire
600 ; minimum
)
@ NS v4.nameserver.
A 10.0.0.1
* CNAME @

View file

@ -20,7 +20,7 @@ options {
port @PORT@;
pid-file "named.pid";
listen-on { 10.53.0.6; };
listen-on-v6 { none; };
listen-on-v6 { fd92:7065:b8e:ffff::6; };
recursion no;
dnssec-validation no;
querylog yes;

View file

@ -19,6 +19,7 @@ $TTL 300
)
. NS a.root-servers.nil.
a.root-servers.nil. A 10.53.0.6
a.root-servers.nil. AAAA fd92:7065:b8e:ffff::6
moves. NS ns.server.
server. NS ns7.server.
ns7.server. A 10.53.0.7
@ -31,3 +32,5 @@ no-edns-version.tld. NS ns.no-edns-version.tld.
ns.no-edns-version.tld. A 10.53.0.6
edns-version.tld. NS ns.edns-version.tld.
ns.edns-version.tld. A 10.53.0.7
v4only.net. NS v4.nameserver.
v4.nameserver. A 10.53.0.4

View file

@ -20,7 +20,7 @@ options {
port @PORT@;
pid-file "named.pid";
listen-on { 10.53.0.7; };
listen-on-v6 { none; };
listen-on-v6 { fd92:7065:b8e:ffff::7; };
recursion yes;
dnssec-validation yes;
empty-zones-enable yes;

View file

@ -20,7 +20,7 @@ options {
port @PORT@;
pid-file "named.pid";
listen-on { 10.53.0.7; };
listen-on-v6 { none; };
listen-on-v6 { fd92:7065:b8e:ffff::7; };
recursion yes;
dnssec-validation yes;
empty-zones-enable yes;

View file

@ -0,0 +1,2 @@
# this server is IPv6 only
-6 -m record -c named.conf -d 99 -D resolver-ns9 -X named.lock -g -T maxcachesize=2097152

View file

@ -0,0 +1,39 @@
/*
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
*
* SPDX-License-Identifier: MPL-2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
*
* See the COPYRIGHT file distributed with this work for additional
* information regarding copyright ownership.
*/
// NS9
options {
port @PORT@;
pid-file "named.pid";
listen-on { none; };
listen-on-v6 { fd92:7065:b8e:ffff::9; };
recursion yes;
dnssec-validation yes;
dual-stack-servers { fd92:7065:b8e:ffff::7; };
qname-minimization off;
};
key rndc_key {
secret "1234abcd8765";
algorithm @DEFAULT_HMAC@;
};
controls {
inet fd92:7065:b8e:ffff::9 port @CONTROLPORT@ allow { any; } keys { rndc_key; };
};
zone "." {
type hint;
file "root.hint";
};

View file

@ -0,0 +1,15 @@
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
;
; SPDX-License-Identifier: MPL-2.0
;
; This Source Code Form is subject to the terms of the Mozilla Public
; License, v. 2.0. If a copy of the MPL was not distributed with this
; file, you can obtain one at https://mozilla.org/MPL/2.0/.
;
; See the COPYRIGHT file distributed with this work for additional
; information regarding copyright ownership.
$TTL 999999
. IN NS a.root-servers.nil.
a.root-servers.nil. IN A 10.53.0.6
a.root-servers.nil. IN AAAA fd92:7065:b8e:ffff::6;

View file

@ -23,5 +23,6 @@ copy_setports ns4/named.conf.in ns4/named.conf
copy_setports ns5/named.conf.in ns5/named.conf
copy_setports ns6/named.conf.in ns6/named.conf
copy_setports ns7/named1.conf.in ns7/named.conf
copy_setports ns9/named.conf.in ns9/named.conf
(cd ns6 && $SHELL keygen.sh)

View file

@ -972,5 +972,18 @@ grep "IN.*TXT.*baz" dig.out.ns1.test${n} > /dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=$((status + ret))
n=$((n+1))
echo_i "check that correct namespace is chosen for dual-stack-servers ($n)"
ret=0
#
# The two priming queries are needed until we fix dual-stack-servers fully
#
dig_with_opts @fd92:7065:b8e:ffff::9 v4.nameserver A > dig.out.prime1.${n} || ret=1
dig_with_opts @fd92:7065:b8e:ffff::9 v4.nameserver AAAA > dig.out.prime2.${n} || ret=1
dig_with_opts @fd92:7065:b8e:ffff::9 foo.v4only.net A > dig.out.ns9.${n} || ret=1
grep "status: NOERROR" dig.out.ns9.${n} > /dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
status=$((status + ret))
echo_i "exit status: $status"
[ $status -eq 0 ] || exit 1