101 lines
3.1 KiB
Markdown
101 lines
3.1 KiB
Markdown
|
|
# ZONE10: No multiple SOA records
|
||
|
|
|
||
|
|
|
||
|
|
## Test case identifier
|
||
|
|
**ZONE10**
|
||
|
|
|
||
|
|
|
||
|
|
## Objective
|
||
|
|
|
||
|
|
The SOA record is crucial for the DNS zone and "exactly one SOA RR should
|
||
|
|
be present at the top of the zone" ([RFC 1035][RFC 1035#5.2], section 5.2).
|
||
|
|
This test case will verify that the zone of the domain to be tested return
|
||
|
|
exactly one SOA record.
|
||
|
|
|
||
|
|
|
||
|
|
## Scope
|
||
|
|
|
||
|
|
It is assumed that *Child Zone* is also tested by [Connectivity01]. This test
|
||
|
|
case will set DEBUG level on messages for non-responsive name servers.
|
||
|
|
|
||
|
|
|
||
|
|
## Inputs
|
||
|
|
|
||
|
|
* "Child Zone" - The domain name to be tested.
|
||
|
|
|
||
|
|
|
||
|
|
## Ordered description of steps to be taken to execute the test case
|
||
|
|
|
||
|
|
1. Obtain the set of name server IP addresses using [Method4] and [Method5]
|
||
|
|
("NS IP").
|
||
|
|
|
||
|
|
2. Create a SOA query for the apex of the *Child Zone* with RD flag unset.
|
||
|
|
|
||
|
|
3. For each name server in *NS IP* do:
|
||
|
|
1. Send the SOA query over UDP to the name server.
|
||
|
|
2. If the name server does not respond with a DNS response, then
|
||
|
|
output *[NO_RESPONSE]*.
|
||
|
|
3. Else, if the DNS response does not include a SOA record in the
|
||
|
|
answer section, then output *[NO_SOA_IN_RESPONSE]*.
|
||
|
|
4. Else, if the SOA record or records in the answer section do not
|
||
|
|
have *Child Zone* as owner name, then output *[WRONG_SOA]*.
|
||
|
|
5. Else, if the DNS response includes multiple SOA records in the
|
||
|
|
answer section, then output *[MULTIPLE_SOA]*.
|
||
|
|
|
||
|
|
4. If no message is outputted for any server, then output *[ONE_SOA]*.
|
||
|
|
|
||
|
|
|
||
|
|
## Outcome(s)
|
||
|
|
|
||
|
|
The outcome of this Test Case is "fail" if there is at least one message
|
||
|
|
with the severity level *ERROR* or *CRITICAL*.
|
||
|
|
|
||
|
|
The outcome of this Test Case is "warning" if there is at least one message
|
||
|
|
with the severity level *WARNING*, but no message with severity level
|
||
|
|
*ERROR* or *CRITICAL*.
|
||
|
|
|
||
|
|
In other cases the outcome of this Test Case is "pass".
|
||
|
|
|
||
|
|
Message | Default severity level
|
||
|
|
:-----------------------------|:-----------------------------------
|
||
|
|
MULTIPLE_SOA | ERROR
|
||
|
|
NO_RESPONSE | DEBUG
|
||
|
|
NO_SOA_IN_RESPONSE | DEBUG
|
||
|
|
ONE_SOA | INFO
|
||
|
|
WRONG_SOA | DEBUG
|
||
|
|
|
||
|
|
|
||
|
|
## Special procedural requirements
|
||
|
|
|
||
|
|
If either IPv4 or IPv6 transport is disabled, ignore the evaluation of the
|
||
|
|
result of any test using this transport protocol. Log a message reporting
|
||
|
|
on the ignored result.
|
||
|
|
|
||
|
|
|
||
|
|
## Intercase dependencies
|
||
|
|
|
||
|
|
None.
|
||
|
|
|
||
|
|
|
||
|
|
## Terminology
|
||
|
|
|
||
|
|
When the term "using Method" is used, names and IP addresses are fetched
|
||
|
|
using the defined [Methods].
|
||
|
|
|
||
|
|
The term "send" (to an IP address) is used when a DNS query is sent to
|
||
|
|
a specific name server.
|
||
|
|
|
||
|
|
|
||
|
|
[Connectivity01]: ../Connectivity-TP/connectivity01.md
|
||
|
|
[MULTIPLE_SOA]: #outcomes
|
||
|
|
[Method4]: ../Methods.md#method-4-obtain-glue-address-records-from-parent
|
||
|
|
[Method5]: ../Methods.md#method-5-obtain-the-name-server-address-records-from-child
|
||
|
|
[Methods]: ../Methods.md
|
||
|
|
[NO_RESPONSE]: #outcomes
|
||
|
|
[NO_SOA_IN_RESPONSE]: #outcomes
|
||
|
|
[ONE_SOA]: #outcomes
|
||
|
|
[RFC 1035#5.2]: https://datatracker.ietf.org/doc/html/rfc1035#section-5.2
|
||
|
|
[WRONG_SOA]: #outcomes
|
||
|
|
[terminology]: #terminology
|
||
|
|
|