Nameserver08 (nameserver08)

Status: Final

Purpose

  • Check whether nameservers preserve or alter query-name case in the echoed question section.

Preconditions And Inputs

  • Preconditions:
    • A zone.Zone object is available.
  • Required inputs:
    • Nameserver addresses from methods.Method4and5.
    • SOA response question sections for randomized-case www.<zone> query names.
  • Profile/config knobs that affect behavior:
    • net.ipv4 and net.ipv6: disabled transports are skipped with transport debug tags.
    • resolver.defaults.parallel: parallel nameserver query fanout.

Algorithm And Decision Flow

  1. Emit TEST_CASE_START.
  2. Build original = "www." + <zone> (trailing dot removed).
  3. Generate randomized by scrambling letter case until it differs from original.
  4. Read nameserver list from Method4and5, deduplicate by name/ip, preserving first-seen order.
  5. For each deduplicated nameserver (parallelized, input-order merged logs):
    • If transport is disabled, emit IPV4_DISABLED or IPV6_DISABLED for rrtype SOA, then skip.
    • Query randomized with rrtype SOA.
    • If response exists and question section is non-empty:
      • Compare first question name (trim trailing dot) to randomized.
      • If equal, record server as case-sensitive.
      • Else, record server as case-insensitive.
  6. After all parallel tasks, emit a single consolidated QNAME_CASE_SENSITIVE with servers and domain (if any), and a single consolidated QNAME_CASE_INSENSITIVE with servers and domain (if any).
  7. Emit TEST_CASE_END.

Emitted Tags (Possible Set)

TagEmitted when
IPV4_DISABLEDIPv4 nameserver evaluation is skipped because IPv4 is disabled.
IPV6_DISABLEDIPv6 nameserver evaluation is skipped because IPv6 is disabled.
QNAME_CASE_INSENSITIVEResponse question name does not preserve the randomized query case exactly.
QNAME_CASE_SENSITIVEResponse question name preserves the randomized query case exactly.
TEST_CASE_ENDTestcase completion marker is emitted.
TEST_CASE_STARTTestcase start marker is emitted.

Tag Arguments

TagArgument keyTypeMeaning
IPV4_DISABLEDnsstringNameserver identity (ns name only; use address for IP) skipped on IPv4.
IPV4_DISABLEDaddressstringNameserver IP address for the same endpoint.
IPV4_DISABLEDrrtypestringrrtype skipped (SOA).
IPV6_DISABLEDnsstringNameserver identity (ns name only; use address for IP) skipped on IPv6.
IPV6_DISABLEDaddressstringNameserver IP address for the same endpoint.
IPV6_DISABLEDrrtypestringrrtype skipped (SOA).
QNAME_CASE_INSENSITIVEserversarray<object>Structured sorted list of nameservers with case-insensitive echo behavior ({ns}, {address} items).
QNAME_CASE_INSENSITIVEdomainstringRandomized query name used for check.
QNAME_CASE_SENSITIVEserversarray<object>Structured sorted list of nameservers with case-preserving echo behavior ({ns}, {address} items).
QNAME_CASE_SENSITIVEdomainstringRandomized query name used for check.
TEST_CASE_ENDtestcasestringTestcase display name (Nameserver08).
TEST_CASE_STARTtestcasestringTestcase display name (Nameserver08).

Severity Levels Per Tag

TagLevelNotes
IPV4_DISABLEDDEBUGDefault from share/profile.json (test_levels.NAMESERVER).
IPV6_DISABLEDDEBUGDefault from share/profile.json (test_levels.NAMESERVER).
QNAME_CASE_INSENSITIVEWARNINGDefault from share/profile.json (test_levels.NAMESERVER).
QNAME_CASE_SENSITIVEINFODefault from share/profile.json (test_levels.NAMESERVER).
TEST_CASE_ENDDEBUGDefault from share/profile.json (test_levels.NAMESERVER).
TEST_CASE_STARTDEBUGDefault from share/profile.json (test_levels.NAMESERVER).

Differences From Upstream

  • Upstream reference: nameserver08.md
  • Differences (Upstream vs Gonemaster):
    • Upstream: describes a failure condition; messaging detail is not defined. Gonemaster: emits consolidated QNAME_CASE_SENSITIVE and QNAME_CASE_INSENSITIVE tags with server lists.
    • Upstream: describes querying unique nameserver IPs. Gonemaster: deduplicates by name/ip and then queries.
    • Upstream: does not explicitly describe testcase boundary and transport-disabled debug emissions. Gonemaster: emits TEST_CASE_START, TEST_CASE_END, IPV4_DISABLED, and IPV6_DISABLED.
  • Potential upstream report:
    • no

Edge Cases And Limitations

  • If response is missing or question section is empty, no case-behavior tag is emitted for that nameserver.
  • Only the first question entry in the response is evaluated.
  • Classification is based on exact string comparison against the randomized query name.