- Clone all 5 Zonemaster component repos (LDNS, Engine, CLI, Backend, GUI) - Dockerfile.backend: 8-stage multi-stage build LDNS→Engine→CLI→Backend - Dockerfile.gui: Astro static build served via nginx - docker-compose.yml: backend (internal) + frontend (port 5353) - nginx.conf: root redirects to /es/, /api/ proxied to backend - zonemaster-gui/config.ts: defaultLanguage set to 'es' (Spanish) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
696 lines
28 KiB
Markdown
696 lines
28 KiB
Markdown
# Specification of test scenarios for MethodsV2
|
||
|
||
|
||
## Table of contents
|
||
|
||
* [Background](#background)
|
||
* [Test scenarios](#test-scenarios)
|
||
* [Public methods](#public-methods)
|
||
* [Test zone names](#test-zone-names)
|
||
* [Test scenarios and setup of test zones]
|
||
|
||
|
||
## Background
|
||
|
||
See the [test zone README file] which is for test case base test zones. Since
|
||
this document specifies test zones for a [MethodsV2] Method, it is not fully
|
||
applicable.
|
||
|
||
## Test scenarios
|
||
|
||
The purpose of the test scenarios is to cover all reasonable contexts for the
|
||
Methods. See [the implementation of the scenarios] for the latest version of the
|
||
implementation of the MethodsV2 scenarios.
|
||
|
||
|
||
## Public methods
|
||
|
||
[MethodsV2] provides the following public methods:
|
||
|
||
* For parent zone:
|
||
* Get parent NS names and IP addresses
|
||
* Get parent NS IP addresses
|
||
* For delegation:
|
||
* Get delegation NS names and IP addresses
|
||
* Get delegation NS IP addresses
|
||
* Get delegation NS names
|
||
* For zone information:
|
||
* Get zone NS names and IP addresses
|
||
* Get zone NS names
|
||
* Get zone NS IP addresses
|
||
|
||
### Data type
|
||
|
||
All methods can return one of the following data types:
|
||
* Empty set
|
||
* Non-empty set
|
||
* Undefined set
|
||
|
||
The non-empty set from the following methods consists of unique IP addresses,
|
||
IPv4, IPv6 or both (e.g "127.40.4.21" and "fda1:b2:c3::21" are valid):
|
||
* Get parent NS IP addresses
|
||
* Get delegation NS IP addresses
|
||
* Get zone NS IP addresses
|
||
|
||
The non-empty set from the following methods consists of unique name server
|
||
names (e.g. "ns1.example.xa" and "ns2.example.xb" are valid):
|
||
* Get delegation NS names
|
||
* Get zone NS names
|
||
|
||
The non-empty set from the following methods consists of unique pairs of name
|
||
server name and its IP address (IPv4 or IPv6). The IP address cannot be blank
|
||
(e.g. "ns1.example.xa/127.40.4.21" and "ns1.example.xa/fda1:b2:c3::21" are
|
||
valid but "ns1.example.xa" is not):
|
||
* Get parent NS names and IP addresses
|
||
|
||
The non-empty set from the following methods consists of unique pairs of name
|
||
server name and its IP address (IPv4 or IPv6). The IP address can be left blank
|
||
(e.g. "ns1.example.xa/127.40.4.21", "ns1.example.xa/fda1:b2:c3::21" and
|
||
"ns1.example.xa" are valid):
|
||
* Get delegation NS names and IP addresses
|
||
* Get zone NS names and IP addresses
|
||
|
||
### Data defined for the scenarios
|
||
|
||
Both *Get delegation NS IP addresses* and *Get delegation NS names* can be
|
||
derived from *Get delegation NS names and IP addresses*.
|
||
|
||
Both *Get zone NS IP addresses* and *Get zone NS names* can be derived from
|
||
*Get zone NS names and IP addresses*.
|
||
|
||
*Get parent NS IP addresses* can be derived from *Get parent NS names and IP
|
||
addresses*.
|
||
|
||
Consequently, for the scenarios defined in this document the expected data is only
|
||
defined for the following three methods:
|
||
* Get parent NS names and IP addresses
|
||
* Get delegation NS names and IP addresses
|
||
* Get zone NS names and IP addresses
|
||
|
||
|
||
## Test zone names
|
||
|
||
The test zone for each test scenario in this document is a subdomain delegated
|
||
from the base name (`methodsv2.xa`) and that subdomain having the same name as
|
||
the specific scenario. The names of those zones are given in section
|
||
"[Test scenarios and setup of test zones]" below.
|
||
|
||
|
||
## Test scenarios and setup of test zones
|
||
|
||
### Default zone configuration
|
||
|
||
Assumptions for the scenario specifications unless otherwise specified for
|
||
the specific scenario:
|
||
|
||
* The child zone is `child.parent.SCENARIO.methodsv2.xa`.
|
||
* It is served by two IB (in-bailiwick) NS (ns1 and ns2).
|
||
* ns1 and ns2 have the same zone content.
|
||
* ns1 and ns2 have both IPv4 and IPv6 glue.
|
||
* The records matching glue in the zone are complete.
|
||
* The delegation from the parent has the same NS with complete glue.
|
||
* The parent zone is `parent.SCENARIO.methodsv2.xa`.
|
||
* It is served by two IB NS (ns1 and ns2).
|
||
* ns1 and ns2 have the same zone content.
|
||
* ns1 and ns2 have both IPv4 and IPv6 glue.
|
||
* The records matching glue in the zone are complete.
|
||
* The delegation from the grandparent has the same NS with complete glue.
|
||
* The grandparent zone is `SCENARIO.methodsv2.xa`.
|
||
* It is served by two IB NS (ns1 and ns2).
|
||
* ns1 and ns2 have the same zone content.
|
||
* ns1 and ns2 have both IPv4 and IPv6 glue.
|
||
* The records matching glue in the zone are complete.
|
||
* The delegation from the SCENARIO zoen has the same NS with complete glue.
|
||
* Responds with a A record for the zone on query for A.
|
||
* Responds with a AAAA record for the zone on query for AAAA.
|
||
* All responses are authoritative with [RCODE Name] "NoError".
|
||
* EDNS, version 0, is included in all responses on queries with EDNS.
|
||
* EDNS is not included in responses on queries without EDNS.
|
||
* Standard root is used.
|
||
* In all cases, delegation and zone are consistent.
|
||
* Same NS
|
||
* Any required glue matches address records in zone. No extra address
|
||
records.
|
||
|
||
### GOOD-1
|
||
A "happy path". Everything is fine.
|
||
|
||
* Zone: child.parent.good-1.methodsv2.xa
|
||
* Just defaults
|
||
|
||
### GOOD-2
|
||
A "happy path". Everything is fine. Child has out-of-bailiwick name servers
|
||
only.
|
||
|
||
* Zone: child.parent.good-2.methodsv2.xa
|
||
* Child NS are out-of-bailiwick but not shared with grandparent zone.
|
||
* ns5.good-2.methodsv2.xa
|
||
* ns6.good-2.methodsv2.xa
|
||
* No glue
|
||
|
||
### GOOD-3
|
||
A "happy path". Everything is fine. Child has both in-bailiwick and
|
||
out-of-bailiwick name servers.
|
||
|
||
* Zone: child.parent.good-3.methodsv2.xa
|
||
* Child NS:
|
||
* ns1.child.parent.good-3.methodsv2.xa
|
||
* ns3.parent.good-3.methodsv2.xa
|
||
* ns5.good-3.methodsv2.xa (not shared with grandparent zone).
|
||
* Glue:
|
||
* Address records (A and AAAA) for
|
||
* ns1.child.parent.good-3.methodsv2.xa
|
||
* ns3.parent.good-3.methodsv2.xa (optional)
|
||
|
||
### GOOD-4
|
||
A "happy path". Everything is fine. Parent zone is also hosted on grandparent
|
||
server.
|
||
|
||
* Zone: child.parent.good-4.methodsv2.xa
|
||
* Parent NS:
|
||
* ns1.parent.good-4.methodsv2.xa
|
||
* ns2.parent.good-4.methodsv2.xa
|
||
* ns1.good-4.methodsv2.xa (shared with grandparent zone).
|
||
* Glue for parent:
|
||
* Address records (A and AAAA) for
|
||
* ns1.parent.good-4.methodsv2.xa
|
||
* ns2.parent.good-4.methodsv2.xa
|
||
* ns1.good-4.methodsv2.xa (optional)
|
||
|
||
### GOOD-5
|
||
A "happy path". Everything is fine. Child zone is hosted also on grandparent
|
||
server and parent server.
|
||
|
||
* Zone: child.parent.good-5.methodsv2.xa
|
||
* Child NS:
|
||
* ns1.child.parent.good-5.methodsv2.xa
|
||
* ns2.child.parent.good-5.methodsv2.xa
|
||
* ns1.good-5.methodsv2.xa (shared with grandparent zone).
|
||
* ns1.parent.good-5.methodsv2.xa (shared with parent zone).
|
||
* Glue:
|
||
* Address records (A and AAAA) for
|
||
* ns1.child.parent.good-5.methodsv2.xa
|
||
* ns2.child.parent.good-5.methodsv2.xa
|
||
* ns1.parent.good-5.methodsv2.xa (optional)
|
||
|
||
### GOOD-6
|
||
A "happy path". Everything is fine. Child zone is only hosted on grandparent
|
||
servers.
|
||
|
||
* Zone: child.parent.good-6.methodsv2.xa
|
||
* Child NS (both shared with grandparent zone):
|
||
* ns1.good-6.methodsv2.xa
|
||
* ns2.good-6.methodsv2.xa
|
||
* No glue.
|
||
|
||
### GOOD-7
|
||
A "happy path". Everything is fine. Child zone is only hosted on parent
|
||
servers.
|
||
|
||
* Zone: child.parent.good-7.methodsv2.xa
|
||
* Child NS (both shared with parent zone):
|
||
* ns1.parent.good-7.methodsv2.xa
|
||
* ns2.parent.good-7.methodsv2.xa
|
||
* Glue:
|
||
* Address records (A and AAAA) for
|
||
* ns1.parent.good-7.methodsv2.xa (optional)
|
||
* ns2.parent.good-7.methodsv2.xa (optional)
|
||
|
||
|
||
### GOOD-UNDEL-1
|
||
A "happy path". Everything is fine. Child has both in-bailiwick and
|
||
out-of-bailiwick name servers. Child is delegated but is tested
|
||
undelegated.
|
||
|
||
* Zone: child.parent.good-undel-1.methodsv2.xa
|
||
* Delegation:
|
||
* Child NS:
|
||
* ns1-2.child.parent.good-undel-1.methodsv2.xa
|
||
* ns3.parent.good-undel-1.methodsv2.xa (not shared with parent zone)
|
||
* ns5.good-undel-1.methodsv2.xa (not shared with grandparent zone)
|
||
* Glue:
|
||
* Adress records (A and AAAA) for
|
||
* ns1-2.child.parent.good-undel-1.methodsv2.xa
|
||
* ns3.parent.good-undel-1.methodsv2.xa (optional)
|
||
* There is an undelegated version of the zone matching undelegated data.
|
||
* `ns1-2` have different IP addresses for delegation and delegated zone, on one
|
||
hand, and undelegated data and undelegated version of the zone, on the other.
|
||
* `ns3.parent.good-undel-1.methodsv2.xa` is shared between delegated zone and
|
||
undelegated version of zone, but holding the data of the undelegated version.
|
||
* Undelegated data:
|
||
* ns1-2.child.parent.good-undel-1.methodsv2.xa/IPv4
|
||
* ns1-2.child.parent.good-undel-1.methodsv2.xa/IPv6
|
||
* ns3.parent.good-undel-1.methodsv2.xa/IPv4
|
||
* ns3.parent.good-undel-1.methodsv2.xa/IPv6
|
||
* ns6.good-undel-1.methodsv2.xa
|
||
|
||
### GOOD-UNDEL-2
|
||
A "happy path". Everything is fine. Child has both in-bailiwick and
|
||
out-of-bailiwick name servers. Child is not delegated but is tested
|
||
undelegated.
|
||
|
||
* Zone: child.parent.good-undel-2.methodsv2.xa
|
||
* No delegation from parent.
|
||
* To be tested with undelegated data:
|
||
* There is an undelegated version of the zone matching undelegated data.
|
||
* Undelegated data:
|
||
* ns1.child.parent.good-undel-2.methodsv2.xa/IPv4
|
||
* ns1.child.parent.good-undel-2.methodsv2.xa/IPv6
|
||
* ns3.parent.good-undel-2.methodsv2.xa/IPv4
|
||
* ns3.parent.good-undel-2.methodsv2.xa/IPv6
|
||
* ns6.good-undel-2.methodsv2.xa
|
||
|
||
### DIFF-NS-1
|
||
No match in name server names between delegation and zone. Same name server IP.
|
||
|
||
* Zone: child.parent.diff-ns-1.methodsv2.xa
|
||
* Delegation to ns1 and ns2.
|
||
* NS in zone ns1-2 and ns2-2.
|
||
* ns1-2 and ns2-2 in zone, ns1 and ns2 not in zone.
|
||
|
||
### DIFF-NS-2
|
||
No match in name server names between delegation and zone. Same name server IP on
|
||
one server. Different on the other. No zone on servers from delegation except
|
||
ns1.
|
||
|
||
* Zone: child.parent.diff-ns-2.methodsv2.xa
|
||
* Delegation to ns1 and ns2.
|
||
* NS in zone ns1-2, ns3.
|
||
* ns1-2 and ns3 in zone, ns1 and ns2 not in zone.
|
||
* No zone on ns2.
|
||
* ns1 and ns1-2 have the same IP.
|
||
|
||
### IB-NOT-IN-ZONE-1
|
||
Delegation has in-bailiwick NS, but the names are not defined in the zone.
|
||
|
||
* Zone: child.parent.ib-not-in-zone-1.methodsv2.xa
|
||
* ns1 and ns2 not defined in zone.
|
||
|
||
### CHILD-NO-ZONE-1
|
||
* Zone: child.parent.child-no-zone-1.methodsv2.xa
|
||
* No child zone on ns1 and ns2.
|
||
* Response SERVFAIL.
|
||
|
||
### CHILD-NO-ZONE-2
|
||
* Zone: child.parent.child-no-zone-2.methodsv2.xa
|
||
* No response from ns1 and ns2 of the child.
|
||
|
||
### GOOD-MIXED-UNDEL-1
|
||
The child zone is delegated, but there is also an undelegated version which is
|
||
the one tested. One grandparent server, in the delegated tree, also serves
|
||
parent zone.
|
||
|
||
* Zone: child.parent.good-mixed-undel-1.methodsv2.xa
|
||
* Grandparent zone `good-mixed-undel-1.methodsv2.xa` is served on `ns1` and
|
||
`ns4`.
|
||
* Parent zone `parent.good-mixed-undel-1.methodsv2.xa` is served by `ns1`,
|
||
`ns2` and `ns4.good-mixed-undel-1.methodsv2.xa`.
|
||
* Child zone is delegated, but there is also an undelegated version where
|
||
the zone has the same data as the delegation.
|
||
* Undelegated data:
|
||
* ns3.child.parent.good-mixed-undel-1.methodsv2.xa/IPv4
|
||
* ns3.child.parent.good-mixed-undel-1.methodsv2.xa/IPv6
|
||
* ns4.child.parent.good-mixed-undel-1.methodsv2.xa/IPv4
|
||
* ns4.child.parent.good-mixed-undel-1.methodsv2.xa/IPv6
|
||
|
||
### GOOD-MIXED-UNDEL-2
|
||
The child zone is delegated, but there is also an undelegated version. One parent
|
||
server also serves the delegated child zone.
|
||
|
||
* Zone: child.parent.good-mixed-undel-2.methodsv2.xa
|
||
* Parent zone `parent.good-mixed-undel-2.methodsv2.xa` is served by `ns1` and
|
||
`ns2`.
|
||
* Child zone is served by `ns1`, `ns2` and
|
||
`ns2.parent.good-mixed-undel-2.methodsv2.xa`.
|
||
* Child zone is delegated, but there is also an undelegated version where the
|
||
zone has the same data as the delegation.
|
||
* Undelegated data:
|
||
* ns3.child.parent.good-mixed-undel-2.methodsv2.xa/IPv4
|
||
* ns3.child.parent.good-mixed-undel-2.methodsv2.xa/IPv6
|
||
* ns4.child.parent.good-mixed-undel-2.methodsv2.xa/IPv4
|
||
* ns4.child.parent.good-mixed-undel-2.methodsv2.xa/IPv6
|
||
|
||
### NO-DEL-MIXED-UNDEL-1
|
||
The child zone is not delegated, but there is an undelegated version that is
|
||
tested. One grandparent server also serves the parent zone.
|
||
|
||
* Zone: child.parent.no-del-mixed-undel-1.methodsv2.xa
|
||
* Parent zone `parent.no-del-mixed-undel-1.methodsv2.xa` is served by `ns1`,
|
||
`ns2` and on `ns2.no-del-mixed-undel-1.methodsv2.xa`.
|
||
* Child zone is not delegated, but there is an undelegated version.
|
||
* Undelegated data:
|
||
* ns1.child.parent.no-del-mixed-undel-1.methodsv2.xa/IPv4
|
||
* ns1.child.parent.no-del-mixed-undel-1.methodsv2.xa/IPv6
|
||
* ns2.child.parent.no-del-mixed-undel-1.methodsv2.xa/IPv4
|
||
* ns2.child.parent.no-del-mixed-undel-1.methodsv2.xa/IPv6
|
||
|
||
### NO-CHILD-1
|
||
The child zone is not delegated. Parent zone returns NXDOMAIN.
|
||
|
||
* Zone: child.parent.no-child-1.methodsv2.xa
|
||
* Child zone does not exist and is not served by any NS.
|
||
|
||
### NO-CHILD-2
|
||
The child zone is not delegated. Parent zone returns NODATA.
|
||
|
||
* Zone: child.parent.no-child-2.methodsv2.xa
|
||
* Child zone does not exist is not served by any NS.
|
||
* The name child.parent.no-child-2.methodsv2.xa exists as a TXT record.
|
||
|
||
### NO-CHLD-PAR-UNDETER-1
|
||
The child zone is not delegated. One grandparent NS lacks delegation of parent
|
||
and return NXDOMAIN of child. The parent zone lacks delegation of child.
|
||
|
||
* Zone: child.parent.no-chld-par-undeter-1.methodsv2.xa
|
||
* Child zone does not exist is not served by any NS.
|
||
* Grandparent `ns1` lacks delegation of parent.
|
||
* Grandparent `ns2` has delegation of parent (to both parent NS).
|
||
* Parent zone lacks delegation of child.
|
||
|
||
### CHLD-FOUND-PAR-UNDET-1
|
||
The child zone is delegated from one grandparent NS and from the parent zone.
|
||
|
||
* Zone: child.parent.chld-found-par-undet-1.methodsv2.xa
|
||
* Grandparent `ns1` has delegation of child but lacks delegation of parent.
|
||
* Grandparent `ns2` has delegation of parent (to both parent NS).
|
||
* Parent zone has delegation of child.
|
||
|
||
### CHLD-FOUND-INCONSIST-1
|
||
The child is delegated from one parent NS. On the other there is an NXDOMAIN
|
||
response.
|
||
|
||
* Zone: child.parent.chld-found-inconsist-1.methodsv2.xa
|
||
* Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
|
||
* Parent `ns2` lacks delegation of child (NXDOMAIN).
|
||
|
||
### CHLD-FOUND-INCONSIST-2
|
||
The child is delegated from one parent NS. On the other there is an CNAME
|
||
response.
|
||
|
||
* Zone: child.parent.chld-found-inconsist-2.methodsv2.xa
|
||
* Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
|
||
* Parent `ns2` lacks delegation of child, and has a CNAME on that name,
|
||
pointing at `no-child.parent.chld-found-inconsist-2.methodsv2.xa`, which has
|
||
two address records (A and AAAA) with the IP addresses of child `ns2`.
|
||
|
||
### CHLD-FOUND-INCONSIST-3
|
||
The child is delegated from one parent NS. On the other there is a CNAME
|
||
to another name, and that other name is delegated.
|
||
|
||
* Zone: child.parent.chld-found-inconsist-3.methodsv2.xa
|
||
* Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
|
||
* Parent `ns2` lacks delegation of child, and has a CNAME on the name,
|
||
pointing at `sister.parent.chld-found-inconsist-3.methodsv2.xa`, which is
|
||
delegated to `ns6-delegated-child.methodsv2.xa` and
|
||
`ns7-delegated-child.methodsv2.xa`.
|
||
* Zone `sister` does not exist.
|
||
|
||
### CHLD-FOUND-INCONSIST-4
|
||
The child is delegated from one parent NS. On the other there is a DNAME to
|
||
another name.
|
||
|
||
* Zone: child.parent.chld-found-inconsist-4.methodsv2.xa
|
||
* Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
|
||
* Parent `ns2` has a DNAME on `child` pointing at
|
||
`sister.parent.chld-found-inconsist-4.methodsv2.xa` which is delegated to
|
||
`ns6-delegated-child.methodsv2.xa` and `ns7-delegated-child.methodsv2.xa`.
|
||
* Zone `sister` does not exist.
|
||
|
||
### CHLD-FOUND-INCONSIST-5
|
||
The child is delegated from one parent NS. On the other there is a NODATA
|
||
response.
|
||
|
||
* Zone: child.parent.chld-found-inconsist-5.methodsv2.xa
|
||
* Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
|
||
* Parent `ns2` lacks delegation of child, instead `child` has two address
|
||
records (A and AAAA) with the IP addresses of child `ns2`.
|
||
|
||
### CHLD-FOUND-INCONSIST-6
|
||
The child is delegated from one parent NS, which is also NS for the child.
|
||
On the other there is an NXDOMAIN response.
|
||
|
||
* Zone: child.parent.chld-found-inconsist-6.methodsv2.xa
|
||
* Parent `ns1` has normal delegation of child to the two child NS.
|
||
* Parent `ns2` lacks delegation of child (NXDOMAIN).
|
||
* Child shares `ns1.parent.chld-found-inconsist-6.methodsv2.xa` with parent.
|
||
* Child also uses child `ns1` and `ns2`.
|
||
* Child exists with a zone.
|
||
|
||
### CHLD-FOUND-INCONSIST-7
|
||
The child is delegated from one parent NS, which is also NS for the child. On the
|
||
other there is an CNAME response.
|
||
|
||
* Zone: child.parent.chld-found-inconsist-7.methodsv2.xa
|
||
* Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
|
||
* Parent `ns2` lacks delegation of child, and has a CNAME on that name,
|
||
pointing at `no-child.parent.chld-found-inconsist-7.methodsv2.xa`, which has
|
||
two address records (A and AAAA) with the IP addresses of child `ns2`.
|
||
* Child shares `ns1.parent.chld-found-inconsist-7.methodsv2.xa` with parent.
|
||
* Child also uses `ns2`.
|
||
* Child exists with a zone.
|
||
|
||
### CHLD-FOUND-INCONSIST-8
|
||
The child is delegated from one parent NS, which is also NS for the child. On
|
||
the other there is a CNAME to another name, and that other name is delegated.
|
||
|
||
* Zone: child.parent.chld-found-inconsist-8.methodsv2.xa
|
||
* Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
|
||
* Parent `ns2` lacks delegation of child, and has a CNAME on the name,
|
||
pointing at `sister.parent.chld-found-inconsist-8.methodsv2.xa`, which is
|
||
`ns6-delegated-child.methodsv2.xa` and `ns7-delegated-child.methodsv2.xa`.
|
||
* Zone `sister` does not exist.
|
||
* Child shares `ns1.parent.chld-found-inconsist-8.methodsv2.xa` with parent.
|
||
* Child also uses `ns2`.
|
||
* Child exists with a zone.
|
||
|
||
### CHLD-FOUND-INCONSIST-9
|
||
The child is delegated from one parent NS, which is also NS for the child. On
|
||
the other there is a DNAME to another name.
|
||
|
||
* Zone: child.parent.chld-found-inconsist-9.methodsv2.xa
|
||
* Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
|
||
* Parent `ns2` has a DNAME on `child` pointing at
|
||
`sister.parent.chld-found-inconsist-9.methodsv2.xa` which is delegated to
|
||
`ns6-delegated-child.methodsv2.xa` and `ns7-delegated-child.methodsv2.xa`.
|
||
* Zone `sister` does not exist.
|
||
* Child shares `ns1.parent.chld-found-inconsist-9.methodsv2.xa` with parent.
|
||
* Child also uses `ns2`.
|
||
* Child exists with a zone.
|
||
|
||
### CHLD-FOUND-INCONSIST-10
|
||
The child is delegated from one parent NS, which is also NS for the child. On the
|
||
other there is a NODATA response.
|
||
|
||
* Zone: child.parent.chld-found-inconsist-10.methodsv2.xa
|
||
* Parent `ns1` has normal delegation of child to two child NS, `ns1` and `ns2`.
|
||
* Parent `ns2` lacks delegation of child, instead `child` has two address
|
||
records (A and AAAA) with the IP addresses of child `ns2`.
|
||
* Child shares `ns1.parent.chld-found-inconsist-10.methodsv2.xa` with parent.
|
||
* Child also uses `ns2`.
|
||
* Child exists with a zone.
|
||
|
||
### NO-DEL-UNDEL-NO-PAR-1
|
||
The child is not delegated, but there is undelegated data to test. Both
|
||
grandparent NS return SERVFAIL.
|
||
|
||
* Zone: child.parent.no-del-undel-no-par-1.methodsv2.xa
|
||
* Grandparent `ns1` and `ns2` both return SERVFAIL.
|
||
* No need of parent zone.
|
||
* Child zone is not delegated, but there is an undelegated version.
|
||
* Undelegated data:
|
||
* ns1.child.parent.no-del-undel-no-par-1.methodsv2.xa/IPv4
|
||
* ns1.child.parent.no-del-undel-no-par-1.methodsv2.xa/IPv6
|
||
* ns2.child.parent.no-del-undel-no-par-1.methodsv2.xa/IPv4
|
||
* ns2.child.parent.no-del-undel-no-par-1.methodsv2.xa/IPv6
|
||
|
||
### NO-DEL-UNDEL-PAR-UND-1
|
||
The child is not delegated, but there is an undelegated data to test. One
|
||
grandparent NS lacks delegation of parent and return NXDOMAIN of child. The
|
||
parent zone lacks delegation of child.
|
||
|
||
* Zone: child.parent.no-del-undel-par-und-1.methodsv2.xa
|
||
* Child zone does not exist is not served by any NS.
|
||
* Grandparent `ns1` has delegation of parent (to both parent NS).
|
||
* Grandparent `ns2` lacks delegation of parent.
|
||
* Parent zone lacks delegation of child.
|
||
* Child zone is not delegated, but there is an undelegated version.
|
||
* Undelegated data:
|
||
* ns1.child.no-del-undel-par-und-1.methodsv2.xa/IPv4
|
||
* ns1.child.no-del-undel-par-und-1.methodsv2.xa/IPv6
|
||
* ns2.child.no-del-undel-par-und-1.methodsv2.xa/IPv4
|
||
* ns2.child.no-del-undel-par-und-1.methodsv2.xa/IPv6
|
||
|
||
### NO-CHLD-NO-PAR-1
|
||
The child is not delegated. Both grandparent NS return SERVFAIL.
|
||
|
||
* Zone: child.parent.no-chld-no-par-1.methodsv2.xa
|
||
* Grandparent `ns1` and `ns2` both return SERVFAIL.
|
||
* No need of parent zone.
|
||
* Child zone is not delegated, and there is no undelegated data.
|
||
* No need of child zone.
|
||
|
||
### CHILD-ALIAS-1
|
||
The child zone does not exist, instead there is a DNAME in the parent zone.
|
||
|
||
* Zone: child.parent.child-alias-1.methodsv2.xa
|
||
* Parent has a DNAME on `child` pointing at
|
||
`sister.parent.child-alias-1.methodsv2.xa` which is delegated to
|
||
`ns6-delegated-child.methodsv2.xa` and `ns7-delegated-child.methodsv2.xa`.
|
||
* Zone `sister` does not exist.
|
||
|
||
### ZONE-ERR-GRANDPARENT-1
|
||
Grandparent `ns2` responds with AA bit unset on queries for grandparent zone.
|
||
|
||
* Zone: child.parent.zone-err-grandparent-1.methodsv2.xa
|
||
* Normal response on grandparent `ns1`.
|
||
* Grandparent `ns2` responds with AA bit unset on queries for the
|
||
grandparent zone.
|
||
|
||
### ZONE-ERR-GRANDPARENT-2
|
||
Grandparent `ns2` responds with NODATA on NS query for grandparent zone.
|
||
|
||
* Zone: child.parent.zone-err-grandparent-2.methodsv2.xa
|
||
* Normal response on grandparent `ns1`.
|
||
* Grandparent `ns2` responds with NODATA on NS query for the
|
||
grandparent zone.
|
||
|
||
### ZONE-ERR-GRANDPARENT-3
|
||
Grandparent `ns2` responds with wrong owner name on NS
|
||
on query for grandparent zone NS.
|
||
|
||
* Zone: child.parent.zone-err-grandparent-3.methodsv2.xa
|
||
* Normal response on grandparent `ns1`.
|
||
* Grandparent `ns2` responds with other owner name on NS query for
|
||
`zone-err-grandparent-3.methodsv2.xa`:
|
||
* Owner name `oncle.zone-err-grandparent-3.methodsv2.xa` instead.
|
||
|
||
### DELEG-OOB-W-ERROR-1
|
||
Zone is delegated to two OOB NS, of which one has no IP (NODATA).
|
||
|
||
* Zone: child.parent.deleg-oob-w-error-1.methodsv2.xa
|
||
* Zone is delegated to `ns3.deleg-oob-w-error-1.methodsv2.xa` and
|
||
`ns4-nodata.deleg-oob-w-error-1.methodsv2.xa`.
|
||
* `ns3` is fully functional with the zone which matches the
|
||
delegation.
|
||
* `ns4-nodata` cannot be resolved (NODATA).
|
||
|
||
### DELEG-OOB-W-ERROR-2
|
||
Zone is delegated to two OOB NS, of which one has no IP (NXDOMAIN).
|
||
|
||
* Zone: child.parent.deleg-oob-w-error-2.methodsv2.xa
|
||
* Zone is delegated to `ns3.deleg-oob-w-error-2.methodsv2.xa` and
|
||
`ns4-nxdomain.deleg-oob-w-error-2.methodsv2.xa`.
|
||
* `ns3` is fully functional with the zone which matches the
|
||
delegation.
|
||
* `ns4-nxdomain` cannot be resolved (NXDOMAIN).
|
||
|
||
### DELEG-OOB-W-ERROR-3
|
||
Zone is delegated to two OOB NS, where both have no IP (NODATA).
|
||
|
||
* Zone: child.parent.deleg-oob-w-error-3.methodsv2.xa
|
||
* Zone is delegated to `ns3-nodata.deleg-oob-w-error-3.methodsv2.xa` and
|
||
`ns4-nodata.deleg-oob-w-error-3.methodsv2.xa`.
|
||
* `ns3-nodata` and `ns4-nodata` cannot be resolved (NODATA).
|
||
* There is no child zone.
|
||
|
||
### DELEG-OOB-W-ERROR-4
|
||
Zone is delegated to two OOB NS, where both have no IP (NXDOMAIN).
|
||
|
||
* Zone: child.parent.deleg-oob-w-error-4.methodsv2.xa
|
||
* Zone is delegated to `ns3-nxdomain.deleg-oob-w-error-4.methodsv2.xa` and
|
||
`ns4-nxdomain.deleg-oob-w-error-4.methodsv2.xa`.
|
||
* `ns3-nxdomain` and `ns4-nxdomain` cannot be resolved (NXDOMAIN).
|
||
* There is no child zone.
|
||
|
||
### CHILD-NS-CNAME-1
|
||
Zone is delegated to two IB NS, where both NS names are aliases (CNAME)
|
||
to other names in zone.
|
||
|
||
* Zone: child.parent.child-ns-cname-1.methodsv2.xa
|
||
* Zone is delegated to `ns1-cname` and `ns2-cname` and both are aliases to
|
||
`ns1` and `ns2`, respectively.
|
||
* Both names can be resolved to A and AAAA via CNAME and give correct IP.
|
||
|
||
### CHILD-NS-CNAME-2
|
||
Zone is delegated to two IB NS, where both NS names are aliases (CNAME)
|
||
to other names out of zone.
|
||
|
||
* Zone: child.parent.child-ns-cname-2.methodsv2.xa
|
||
* Zone is delegated to `ns1-cname` and `ns2-cname` and both are aliases to
|
||
`child-ns1.child-ns-cname-2.methodsv2.xa` and
|
||
`child-ns2.child-ns-cname-2.methodsv2.xa`
|
||
* Both names can be resolved to A and AAAA via CNAME and give correct IP.
|
||
|
||
### CHILD-NS-CNAME-3
|
||
Zone is delegated to two OOB NS, where both NS names are aliases (CNAME)
|
||
to other names out of zone.
|
||
|
||
* Zone: child.parent.child-ns-cname-3.methodsv2.xa
|
||
* Zone is delegated to `ns3-cname.child-ns-cname-3.methodsv2.xa` and
|
||
`ns4-cname.child-ns-cname-3.methodsv2.xa` and both are aliases to `ns3`
|
||
and `ns4`, respectively.
|
||
* Both names can be resolved to A and AAAA via CNAME and give correct IP.
|
||
|
||
### CHILD-NS-CNAME-4
|
||
Zone is delegated to two IB NS, where both NS names are aliases (CNAME)
|
||
to other names in zone.
|
||
|
||
* Zone: child.parent.child-ns-cname-4.methodsv2.xa
|
||
* Zone is delegated to `ns1-cname` and `ns2-cname` and both are aliases to
|
||
`ns1` and `ns2`, respectively.
|
||
* Both names can be resolved to A via CNAME and give correct IP.
|
||
* Neither name can be resolved to AAAA via CNAME.
|
||
* The parent zone has glue records for `ns1-cname`, but not for `ns2-cname`.
|
||
|
||
### PARENT-NS-CNAME-1
|
||
Parent is delegated to two IB NS, where both NS names are aliases (CNAME)
|
||
to other names in parent zone.
|
||
|
||
* Zone: child.parent.parent-ns-cname-1.methodsv2.xa
|
||
* Parent is delegated to `ns1-cname` and `ns2-cname` and both are aliases to
|
||
`ns1` and `ns2`, respectively.
|
||
* Both names can be resolved to A and AAAA via CNAME and give correct IP.
|
||
|
||
### PARENT-NS-CNAME-2
|
||
Parent is delegated to two IB NS, where both NS names are aliases (CNAME)
|
||
to other names out of zone.
|
||
|
||
* Zone: child.parent.parent-ns-cname-2.methodsv2.xa
|
||
* Parent is delegated to `ns1-cname` and `ns2-cname` and both are aliases to
|
||
`parent-ns1.parent-ns-cname-2.methodsv2.xa` and
|
||
`parent-ns2.parent-ns-cname-2.methodsv2.xa`
|
||
* Both names can be resolved to A and AAAA via CNAME and give correct IP.
|
||
|
||
### PARENT-NS-SAME-IP-1
|
||
Parent is delegated to three IB NS. The delegation lists two name server names
|
||
resolving to the same IP.
|
||
|
||
* Zone: child.parent.parent-ns-same-ip-1.methodsv2.xa
|
||
* Parent zone (parent.parent-ns-name-ip-1.methodsv2.xa) is delegated to
|
||
`ns1a`, `ns1b` and `ns2`.
|
||
* Both `ns1a` and `ns1b` have A and AAAA records pointing to the same IPv4
|
||
and IPv6 address respectively.
|
||
|
||
### PARENT-NS-SAME-IP-2
|
||
Parent is delegated to two IB NS. Two of the in-zone NS records resolve to the
|
||
same IP. The grandparent zone’s delegation lists name server names that are
|
||
different from the in-zone NS record’s, but the sets of IP addresses are equal.
|
||
|
||
* Zone: child.parent.parent-ns-same-ip-2.methodsv2.xa
|
||
* Grandparent zone (parent-ns-name-ip-2.methodsv2.xa) delegates the parent
|
||
zone (parent.parent-ns-name-ip-2.methodsv2.xa) to `ns1` and `ns2`.
|
||
* Parent zone’s NS records list `ns1a`, `ns1b` and `ns2` instead of `ns1` and
|
||
`ns2`.
|
||
* Both `ns1a` and `ns1b` have A and AAAA records pointing to the same IPv4
|
||
and IPv6 address respectively.
|
||
|
||
<!-- Links to documents in this repository but outside the public tree must be
|
||
absolute -->
|
||
|
||
[RCODE Name]: https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-6
|
||
[Test zone README file]: ../../README.md
|
||
[Test scenarios and setup of test zones]: #test-scenarios-and-setup-of-test-zones
|
||
[MethodsV2]: ../../tests/MethodsV2.md
|
||
[Get parent NS IP addresses]: ../../tests/MethodsV2.md#method-get-parent-ns-ip-addresses
|
||
[the implementation of the scenarios]: https://github.com/zonemaster/zonemaster/blob/master/test-zone-data/MethodsV2/README.md
|