Methods common to Test Case Specifications (version 2)
Table of contents
- Objective
- Scope
- Internal Methods
- Methods Inputs
- Method: Get parent NS IP addresses
- Method: Get delegation NS names and IP addresses
- Method: Get delegation NS names
- Method: Get delegation NS IP addresses
- Method: Get zone NS names
- Method: Get zone NS names and IP addresses
- Method: Get zone NS IP addresses
- Method: Get delegation (Internal)
- Method: Get in-bailiwick address records in zone (Internal)
- Method: Get out-of-bailiwick ip addresses (Internal)
- Method inter-dependencies
- Terminology
Objective
The Methods are used in, and referred from, the Test Case specifications as shortcuts for steps shared between Test Cases. A Test Case that makes use of any of the Methods defined in this document must refer directly to the specific Method or Methods.
Scope
This document holds version 2 of the set of Methods. Version 1 is defined in Methods. Methods from version 1 will be replaced by Methods from version 2 in all Test Case specifications.
Before the transition all Test Cases specifications use version 1 (Methods). During the transition it will be stated in each specification if the Test Case uses Methods from version 1 (Methods) or Methods from version 2 (this document). When the transition is completed, the version 1 document will be removed.
In these Methods any DS record data in Undelegated Data is disregarded. If with Child Zone DS record data is provided, but no name server data, then the will here be treated as "normal test", not "undelegated test".
Internal methods
Methods, in this document, that are referred to as Internal or Internal Method must not be referred to from the Test Case specifications. Internal Methods may only be referred to from Methods in this document. Test Case specifications can freely refer to the other Methods.
Methods Inputs
The following input units are provided when a Method is executed and are available to all Methods. All Methods, however, do not use all input units and it is specified in the Method inputs subsections which units are used for the specific Method.
- "Child Zone" - Mandatory data. The name of the zone to be tested. It must be a valid domain name.
- "Root Name Servers" - The default data is the IANA Root Hints File with names and IP addresses of the root name servers, but that can optionally be replaced by equivalent information to a private root zone. It must contain at least one valid name server name with at least one valid IP address.
- "Undelegated Data" - Optional data. If included it must consist of a set of at least one valid name server name and for each name server name an optional set of at least one valid IP address. The name servers and IP addresses represent a possible delegation of Child Zone from its parent zone (may be indetermined).
- "Test Type" - Derived data. It is set to "normal test" if Undelegated Data is absent (empty) and to "undelegated test" if it is non-empty.
Method: Get parent NS IP addresses
Method identifier
Get-Parent-NS-IP
Objective
This Method will obtain the name servers that serves the parent zone, i.e. the zone from which the Child Zone is delegated from.
This is done by finding the parent zone and then the name servers that serve the parent zone. In case there is an inconsistency of which is the parent zone, the list of name servers will be the gross list, i.e. rather include too much than too little. Too much is always a result of incorrect configuration in the parent zone or in a grand parent zone.
If Child Zone is the root zone, then there is by definition no parent zone and no parent name servers.
If the test type is undelegated, then the information that the parent name servers are supposed to provide included in the input data. In that case a list of parent name servers has no meaning.
The Method will output a list of parent name server IP addresses. If the zone is the root zone or if the test is an undelegated test, the list is defined but empty. If the parent zone cannot be determined, then an undefined list is returned.
Addresses for name servers (RDATA of NS records) are extracted even if the resolution goes through CNAME. It is, however, not permitted for a NS record to point at a name that has a CNAME, but that test is covered by Test Case Delegation05. This method should extract as much as possible to find all possible paths.
This Method must, in general, use the same algorithm as Test Case Basic01, but the test case extracts more information and outputs messages.
Inputs
This Method uses the following input units defined in section Methods Inputs:
- "Child Zone" - The name of the child zone to be tested.
- "Root Name Servers"
- "Test Type" - "undelegated test" or "normal test".
Procedures
-
If the Child Zone is the root zone (".") then output empty set and exit these procedures.
-
If the Test Type is "undelegated test" then output empty set and exit these procedures.
-
Create the following empty sets:
- Name server IP and zone name ("Remaining Servers").
- Name server IP and query name ("Handled Servers").
- Parent name server IP addresses ("Parent NS IP").
-
Insert all addresses from Root Name Servers and the root zone name into the Remaining Servers set.
In the loop below, the steps tries to capture the name of the parent zone of Child Zone and the IP addresses of the name servers for that parent zone. This is done using a modified version of the "QNAME minimization" technique RFC 9156. SOA is the query type used for traversing the tree.
-
While the Remaining Servers is non-empty pick next name server IP address and zone name from the set ("Server Address" and "Zone Name") and do:
-
Extract and remove Server Address including its Zone Name from Remaining Servers.
-
Insert Server Address and Zone Name into Handled Servers.
-
Create DNS queries:
- Query type SOA and query name Zone Name ("Zone Name SOA Query").
- Query type NS and query name Zone Name ("Zone Name NS Query").
-
Send Zone Name SOA Query to Server Address.
-
Go to next server in Remaining Servers if one or more of the following matches:
- No DNS response.
- RCODE Name different from NoError in response.
- AA bit not set in response.
- Not exactly one SOA record in answer section
- Owner name of SOA record is not Zone Name.
-
Send Zone Name NS Query to Server Address.
-
Go to next server in Remaining Servers if one or more of the following matches:
- No DNS response.
- RCODE Name different from NoError in response.
- AA bit not set in response.
- No NS records in answer section
- Owner name of any of the NS records is not Zone Name.
-
Extract the name server names from the NS records and any address records in the additional section.
-
Do DNS Lookup of name server names (A and AAAA) not already listed in the additional section of the response. Follow CNAME if provided.
- For each IP address add the IP address and Zone Name to the Remaining Servers set unless the IP address is already listed in Handled Servers together with Zone Name.
- Ignore any failing lookups or lookups resulting in NODATA or NXDOMAIN.
-
Create "Intermediate Query Name" by copying Zone name as start value.
-
Run a loop processing Server Address (jumps back here from the steps below).
- Extend Intermediate Query Name by adding one more label to the left by copying the equivalent label from Child Zone. (See "Example 1" below.)
- Create a DNS Query with query name Intermediate Query Name and query type SOA ("Intermediate SOA query").
- Send Intermediate SOA Query to Server Address. (See "Example 2" below.)
- Go to next server in Remaining Servers if there is no DNS response.
- If the response has exactly one SOA record with owner name
Intermediate Query Name in the answer section, with the AA bit
set and RCODE Name NoError then do:
- If Intermediate Query Name is equal to Child Zone then
- Save Server Address to the Parent NS IP set.
- Go to next server in Remaining Servers.
- Else do:
- Create a DNS query with query name Intermediate Query Name and query type NS ("Intermediate NS query").
- Send Intermediate NS Query to Server Address.
- Go to next server in Remaining Servers if one or more of the
following matches:
- No DNS response.
- RCODE Name different from NoError in response.
- AA bit not set in response.
- No NS records in answer section.
- Owner name of any of the NS records is not Intermediate Query Name.
- Extract the name server names from the NS records and any address records in the additional section.
- Do DNS Lookup of name server names (A and AAAA) not already listed in the additional section of the response. Follow CNAME if provided.
- For each IP address add the IP address and Intermediate Query Name to the Remaining Servers set unless the IP address is already listed in Handled Servers together with Intermediate Query Name.
- Set Zone Name to Intermediate Query Name.
- Go back to the start of the loop.
- If Intermediate Query Name is equal to Child Zone then
- Else, if the response contains a Referral of Intermediate Query Name
then do:
- If Intermediate Query Name is equal to Child Zone then do:
- Save Server Address to the Parent NS IP set.
- Else do:
- Extract the name server names from the NS records and any glue records.
- Do DNS Lookup of name server names (A and AAAA) not already listed as glue record or records. Follow CNAME if provided.
- For each IP address add Server Address and Intermediate Query Name to the Remaining Servers set unless Server Address is already listed in Handled Servers together with Intermediate Query Name.
- Go to next server in Remaining Servers.
- If Intermediate Query Name is equal to Child Zone then do:
- Else, if the RCODE Name is NoError and the AA is set then do:
- If Intermediate Query Name is not equal to Child Zone then go back to the start of the loop.
- Else go to next server in Remaining Servers.
- Else, go to next server in Remaining Servers.
-
Examples referred to from the steps.
Example 1: If Child Zone is "foo.bar.xa" and Intermediate Query Name is "." (root zone) then Intermediate Query Name becomes "xa". If it is "xa", it will become "bar.xa" instead.
Example 2: An "bar.xa SOA" query to a name server for "xa".
-
If the Parent NS IP set is non-empty then do:
- Extract the list of name server IP addresses.
- Return the following from the Method:
- The extracted list of name server IP addresses (parent zone name servers).
- Exit these procedures.
-
If the Parent NS IP set is empty then do:
- Return the following from the Method:
- Undefined value. (Parent name severs cannot be determined.)
- Exit these procedures.
- Return the following from the Method:
Outputs
- A set of name server IP address for the parent zone:
- Non-empty set: The name servers have been identified.
- Empty set: Root zone or undelegated test.
- Undefined set: The name servers cannot be determined due to errors in the delegation.
Dependencies
None.
Method: Get delegation NS names and IP addresses
Method identifier
Get-Del-NS-Names-and-IPs
Objective
Obtain the name server names (from the NS records) and the IP addresses (from Glue Records) from the delegation of the given zone (child zone) from the parent zone. Glue Records, if any, are address records for name server names. Also obtain the IP addresses for the Out-Of-Bailiwick name server names, if any. If the Glue Records include address records for Out-Of-Bailiwick name servers they will be included twice, unless identical.
Inputs
This Method uses the following input units defined in section Methods Inputs:
- "Child Zone" - The name of the child zone to be tested.
Procedures
-
Get the set of name servers where each unique name server name is linked to a possibly empty set of its IP addresses by using Method Get-Delegation ("Name Servers").
-
If the Name Servers set is undefined, then output an undefined set and exit these procedures.
-
If the Name Servers set is empty, then output an empty set and exit these procedures.
-
Extract the set of Out-Of-Bailiwick name server names from Name Servers ("OOB Names").
-
Get the IP addresses for name server names in OOB Names by using Method Get-OOB-IPs with OOB Names as input.
-
Merge the set returned from Get-OOB-IPs with Name Servers.
-
Output the Name Servers set.
Outputs
- A set of delegation name servers, where each unique name server name
links to a possibly empty set of its IP addresses:
- Non-empty set: The normal case.
- Empty set: Get-Delegation returned an empty set.
- Undefined set: Get-Delegation returned an undefined set.
Dependencies
This Method depends on Get-Delegation and Get-OOB-IPs.
Method: Get delegation NS names
Method identifier
Get-Del-NS-Names
Objective
In general, this Method replaces Method2 in Methods, version 1.
Obtain the name server names for Child Zone as defined in the delegation from parent zone.
Inputs
This Method uses the following input units defined in section Methods Inputs:
- "Child Zone" - The name of the child zone to be tested.
Procedures
-
Get the set of name servers where each unique name server name is linked to a possibly empty set of its IP addresses by using Method Get-Del-NS-Names-and-IPs ("Name Servers").
-
If the Name Servers set is undefined, then output an undefined set and exit these procedures.
-
If the Name Servers set is empty, then output an empty set and exit these procedures.
-
If the set is empty, then output an empty set and exit these test procedures.
-
Extract the set of name server names from Name Servers.
-
Output the set of name server names.
Outputs
- The set of delegation name server names:
- Non-empty set: The normal case.
- Empty set: Get-Del-NS-Names-and-IPs returned an empty set.
- Undefined set: Get-Del-NS-Names-and-IPs returned an undefined set.
Dependencies
This Method depends on Get-Del-NS-Names-and-IPs.
Method: Get delegation NS IP addresses
Method identifier
Get-Del-NS-IPs
Objective
In general, this Method replaces Method4 in Methods, version 1.
Obtain the IP addresses (from Glue Records) from the delegation of the given zone (child zone) from the parent zone. Glue Records are address records for In-Bailiwick name server names, if any. Obtain the IP addresses for the Out-Of-Bailiwick name server names, if any.
Inputs
This Method uses the following input units defined in section Methods Inputs:
- "Child Zone" - The name of the child zone to be tested.
Procedures
-
Get the set of name servers where each unique name server name is linked to a possibly empty set of its IP addresses by using Method Get-Del-NS-Names-and-IPs ("Name Servers").
-
If the Name Servers set is undefined, then output an undefined set and exit these procedures.
-
If the Name Servers set is empty, then output an empty set and exit these procedures.
-
Extract the IP addresses from Name Servers and create a set of unique addresses ("NS IPs").
-
Output the NS IPs set.
Outputs
- The set of delegation name server IP addresses:
- Non-empty set: The normal case.
- Empty set: Get-Del-NS-Names-and-IPs returned an empty set.
- Undefined set: Get-Del-NS-Names-and-IPs returned an undefined set.
Dependencies
This Method depends on Get-Del-NS-Names-and-IPs.
Method: Get zone NS names
Method identifier
Get-Zone-NS-Names
Objective
In general, this Method replaces Method3 in Methods, version 1.
Obtain the names of the authoritative name servers for the given zone (child zone) as defined in the NS records in the zone itself.
Inputs
This Method uses the following input units defined in section Methods Inputs:
- "Child Zone" - The name of the child zone to be tested.
Procedures
-
Using Method Get-Del-NS-IPs, obtain the IP addresses of the name servers ("Name Server IPs").
-
If the Name Server IPs set is undefined, then output an undefined set and exit these procedures.
-
If the Name Server IPs set is empty, then output an empty set and exit these procedures.
-
Create an empty set of name server names ("Name Server Names").
-
Create a DNS Query with query type NS and query name Child Zone ("NS Query").
-
Send NS Query to every IP address in Name Server IPs.
-
Collect all DNS Responses and ignore all non-responses.
-
Collect all the unique NS records with Child Zone as owner name in the answer sections of the responses where the AA flag is set. Ignore any other response.
-
Extract the name server names from the RDATA of the NS records and add them to the Name Server Names set.
-
Output the possibly empty Name Server Names set.
Outputs
- The set of zone name servers (name server names):
- Non-empty set: The normal case.
- Empty set: Get-Del-NS-IPs returned an empty set or no name server names were found.
- Undefined set: Get-Del-NS-IPs returned an undefined set.
Dependencies
This Method depends on Get-Del-NS-IPs.
Method: Get zone NS names and IP addresses
Method identifier
Get-Zone-NS-Names-and-IPs
Objective
Obtain the name server names (extracted from the NS records) from the apex of the child zone. For In-Bailiwick name server names obtain the IP addresses from the child zone. For the Out-Of-Bailiwick name server names obtain the IP addresses from resolver lookup.
Inputs
This Method uses the following input units defined in section Methods Inputs:
- "Child Zone" - The name of the child zone to be tested.
Procedures
-
Get the name server names for the Child Zone as defined in the Child Zone by using Method Get-Zone-NS-Names ("Names").
-
If the Names set is undefined, then output an undefined set and exit these procedures.
-
If the Names set is empty, then output an empty set and exit these procedures.
-
Create a set of name servers where each unique name server name in Names is linked to an empty set of IP addresses ("Name Servers").
-
Fetch the IP addresses for any In-Bailiwick name server names in Names by using Method Get-IB-Addr-in-Zone.
-
Add each fetched IP address, if any, to Name Servers to the name server name it belongs to.
-
Extract the set of Out-Of-Bailiwick name server names from Names ("OOB Names").
-
Get the IP addresses for name server names in OOB Names by using Method Get-OOB-IPs with OOB Names as input.
-
Merge the set returned from Get-OOB-IPs with Name Servers.
-
Output the Name Servers set.
Outputs
- The set of zone name servers, where each unique name server name links to a
possibly empty set of its IP addresses:
- Non-empty set: The normal case.
- Empty set: Get-Zone-NS-Names returned an empty set.
- Undefined set: Get-Zone-NS-Names returned an undefined set.
Dependencies
This Method depends on Methods Get-Zone-NS-Names, Get-IB-Addr-in-Zone and Get-OOB-IPs.
Method: Get zone NS IP addresses
Method identifier
Get-Zone-NS-IPs
Objective
In general, this Method replaces Method5 in Methods, version 1.
Obtain the IP addresses of the name servers, as extracted from the NS records of apex of the child zone.
Inputs
This Method uses the following input units defined in section Methods Inputs:
- "Child Zone" - The name of the child zone to be tested.
Procedures
-
Get the name servers set where each unique name server name is linked to a possibly empty set of its IP addresses by using Method Get-Zone-NS-Names-and-IPs ("Name Servers");
-
If the Name Servers set is undefined, then output an undefined set and exit these procedures.
-
If the Name Servers set is empty, then output an empty set and exit these procedures.
-
Extract the IP addresses from Name Servers and create a set of unique IP addresses.
-
Output the set of IP addresses.
Outputs
- The set of zone name server IP addresses:
- Non-empty set: The normal case.
- Empty set: Get-Zone-NS-Names-and-IPs returned an empty set.
- Undefined set: Get-Zone-NS-Names-and-IPs returned an undefined set.
Dependencies
This Method depends on Method Get-Zone-NS-Names-and-IPs.
Method: Get delegation (Internal)
Method identifier
Get-Delegation
Objective
Obtain the name server names (from the NS records) and the IP addresses (from Glue Records) from the delegation of the given zone (child zone) from the parent zone. Glue Records are address records for In-Bailiwick name server names, if any. Extract addresses even if the resolution goes through CNAME. It is, however, not permitted for a NS record to point at a name that has a CNAME, but that test is covered by Test Case Delegation05.
IP addresses for Out-Of-Bailiwick name server names are not extracted with this Method. To get those use Method Get-Del-NS-IPs or Method Get-Del-NS-Names-and-IPs.
This is an Internal Method that can be referred to by other Methods in this document, but not by Test Case specifications.
Inputs
This Method uses the following input units defined in section Methods Inputs:
- "Child Zone" - The name of the child zone to be tested.
- "Root Name Servers"
- "Undelegated Data" - The name servers and IP addresses representing a possible delegation of Child Zone.
- "Test Type" - "undelegated test" or "normal test".
Procedures
-
If the Test Type is "undelegated test", then:
- Use Undelegated Data.
- Create an empty set of name servers where each unique name server name is linked to an empty set of IP addresses ("Name Servers").
- Extract all name server names from the Undelegated Data set and add to the Name Servers set.
- For each In-Bailiwick name server name collect any IP addresses from Undelegated Data and add that to the Name Servers set under the name server name.
- For any Out-Of-Bailiwick name server name the IP address should be ignored.
- Output the Name Servers set.
- Exit these procedures.
-
If Child Zone is the root zone ".", then output the set of name server names and IP addresses from Root Name Servers and exit these procedures.
-
Using Method Get-Parent-NS-IP extract the name server IP addresses for the parent zone ("Parent NS").
-
If Parent NS is empty, then output the undefined set and exit these test procedures.
-
Create DNS Query with query type NS and query name Child Zone ("NS Query").
-
Create empty sets:
- Unique name server names where each name can be linked to a possibly empty set of IP addresses ("Delegation Name Servers").
- Unique name server names where each name can be linked to a possibly empty set of IP addresses ("AA Name Servers").
-
For each parent name server in Parent NS do:
- Send NS query to to the parent name server.
- Go to next parent name server if:
- Does not respond at all, or
- Responds with an invalid DNS response, or
- Responds with an RCODE Name besides NoError.
- If the DNS Response is a Referral to the Child Zone:
- Extract the name server names from the RDATA of the NS records in the authority section.
- Extract any A or AAAA record from the additional section if the owner name is an In-Bailiwick name server name matching an NS record from the same response.
- Update Delegation Name Servers with unique name server names and with
a possibly empty set of IP addresses.
- If the name already exists in the set and additional IP addresses exists, add those to the name in the set.
- If the DNS response has the AA bit set and the answer section contains
the NS record of the Child Zone do:
- Extract the name server names from the RDATA of the NS records.
- Extract any A or AAAA record from the additional section if the owner name is an In-Bailiwick name server name matching an NS record from the same response.
- Update AA Name Servers with unique name server names and with
a possibly empty set of IP addresses.
- If the name already exists in the set and additional IP addresses exists, add those to the name in the set.
- If any In-Bailiwick name server name from the NS records lacks IP
address, then:
- Send two DNS Queries with that name server name as query name to the parent name server, query type A and AAAA, respectively.
- If the DNS Response is a Referral to a sub-zone of Child Zone, follow that delegation, possibly in several steps, by repeating the A and AAAA queries.
- If a CNAME is returned, follow that, possibly in several steps, to resolve the name to IP addresses, if possible.
- Update AA Name Servers with captured IP addresses, if any.
-
If the Delegation Name Servers set is non-empty output that and exit these procedures.
-
Else, if the AA Name Servers set is non-empty output that and exit these procedures.
-
Else, if both Delegation Name Servers and AA Name Servers sets are empty then output an empty set.
Outputs
- The set of name servers, the delegation, where each unique name server name
links to a possibly empty set of its IP addresses:
- Non-empty set: The normal case.
- Empty set: No delegation was found.
- Undefined set: Get-Parent-NS-IP returned undefined set of parent name server IPs.
Dependencies
This Method depends on the output from Get-Parent-NS-IP if test type is a "normal test".
Method: Get in-bailiwick address records in zone (Internal)
Method identifier
Get-IB-Addr-in-Zone
Objective
From the child zone, obtain the address records matching the In-Bailiwick name server names found in the zone itself. Extract addresses even if the resolution goes through CNAME. It is, however, not permitted for a NS record to point at a name that has a CNAME, but that test is covered by Test Case Delegation05.
This is an Internal Method that can be referred to by other Methods in this document, but not by Test Case specifications.
Inputs
This Method uses the following input units defined in section Methods Inputs:
- "Child Zone" - The name of the child zone to be tested.
Procedures
-
Using Method Get-Del-NS-IPs, obtain the IP addresses to the name servers ("Name Server IPs").
-
Using Method Get-Zone-NS-Names, obtain the names of the name servers from the Child Zone ("Child Zone Name Server Names").
-
If the Name Server IPs set or the Child Zone Name Server Names set is empty or undefined, then output an undefined set and exit these test procedures.
-
If no name in Child Zone Name Server Names is an In-Bailiwick name server name:
- Output an empty set.
- Exit these procedures.
-
Create an empty set the In-Bailiwick name server names from the Child Zone Name Server Names set, where each name is linked to an empty set of IP addresses ("Name Servers").
-
For name in Name Servers do:
- Create the following two DNS queries:
- Query type A and the In-Bailiwick name as the query name ("A Query").
- Query type AAAA and the In-Bailiwick name as the query name ("AAAA Query").
- Send A Query and AAAA Query to all servers in Name Server IPs and process the DNS Responses from each of them.
- If a Referral to a sub-zone of Child Zone is returned, follow that delegation, possibly in several steps, by repeating A Query and AAAA Query.
- If a CNAME is returned, follow that, possibly in several steps, to resolve the name to IP addresses, if possible.
- Ignore non-referral responses [see Referral unless AA flag is set (cached data is not accepted) and ignore response with any other RCODE Name than NoError.
- Add found IP addresses for the name server names in Name Servers.
- Create the following two DNS queries:
-
Output the possibly empty Name Servers set.
Outputs
- A set of name server names pointing at possibly empty sets of IP addresses:
- Non-empty set: The normal case.
- Empty set: There are no In-Bailiwick names or those are not defined in Child Zone, also a normal case.
- Undefined set: Get-Del-NS-IPs returned an empty or undefined set.
Dependencies
This Method depends on Get-Zone-NS-Names and Get-Del-NS-IPs.
Method: Get out-of-bailiwick ip addresses (Internal)
Method identifier
Get-OOB-IPs
Objective
Obtain the IP addresses of the Out-Of-Bailiwick name servers for the given zone (child zone) and a given set of name server names.
Extract addresses even if the resolution goes through CNAME, here ignoring that it is not permitted for a NS record to point at a name that has a CNAME record. See Test Case Delegation05 for a test of NS records pointing at names that holds CNAME records.
This is an Internal Method that can be referred to by other Methods in this document, but not by Test Case specifications.
Inputs
This Method uses the following input units defined in section Methods Inputs:
- "Child Zone" - The name of the child zone to be tested.
- "Undelegated Data" - The name servers and IP addresses representing a possible delegation of Child Zone.
- "Test Type" - "undelegated test" or "normal test".
This Method also used the following input unit from the calling Method:
- "NS Set" - Name servers names to be looked up.
Procedures
-
If NS Set is empty then output an empty set and exit these procedures.
-
Create a set of name servers where each unique name server name in NS Set is linked to an empty set of IP addresses ("Name Servers").
-
For each name server name ("Name") in NS Set do:
-
If Test Type is "undelegated test" and if the Name has IP address specification (IPv4 or IPv6) in Undelegated Data, then:
- Add the address or addresses to Name Servers for Name.
- Go to next server name server name.
-
Create the following two DNS queries:
- Query type A and Name as the query name and the RD flag set true ("A Query").
- Query type AAAA and Name as the query name and the RD flag set true ("AAAA Query").
-
Do DNS Lookup of the two queries.
-
If the DNS Responses, if any, contains a list of A or AAAA records (follow any CNAME chain) in the answer section then remember the IP addresses for next step.
-
Collect all IP addresses for the Name and add the address or addresses to Name Servers for that Name and go to next Name.
-
-
Output the Name Servers set.
Outputs
- A set of name servers, where each unique name server name links to a possibly
empty set of its IP addresses:
- Non-empty set: The normal case.
- Empty set: No addresses were available.
Dependencies
None.
Method inter-dependencies
Terminology
-
"Glue Record" - The term is used as defined in RFC 8499, section 7, pages 24-25.
-
"DNS Lookup" - The term is used when a recursive lookup is used, though any changes to the DNS tree introduced by an undelegated test must be respected.
-
"DNS Query" - The term is used for a DNS query that is to follow the specification for DNS queries in DNS Query and Response Defaults.
-
"DNS Response" - The term is used when the DNS response is to be handled as defined in DNS Query and Response Defaults.
-
"In-Bailiwick" - The term is used as defined in RFC 8499, section 7, pages 24-25. In this document it is limited to the meaning "in domain" in the RFC.
-
"Out-Of-Bailiwick" - The terms means, in this document, what is not "In-Bailiwick, in domain". RFC 8499, section 7, pages 24-25.
-
"Referral" - The term means a DNS response with RCODE Name NoError, AA flag unset and NS records in the authority section.
- The answer section is empty or with CNAME record or records. If the query type is CNAME, then the answer section must be empty.
- The additional section may contain address (glue) records (A and AAAA) for the name server names from the RCODE of the NS records.
- The referral refers the zone identical to the owner name of the NS records to the name servers specified by the RDATA in the NS records.
-
"Send" - The terms are used when a DNS query is sent to a specific name server (name server IP address).
-
"Valid Domain Name" -- The term stands for a non-empty domain name string that has successfully passed the tests and normalizations in the Requirements and normalization specification.
-
"Valid IP Address" -- The term stands for either an IPv4 address or an IPv6 address in any address range.
-
"Valid Name Server Name" -- The term stands for a Valid Domain Name that functions as the name of a name server.