feat: add full Zonemaster stack with Docker and Spanish UI

- 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>
This commit is contained in:
2026-04-21 08:19:24 +02:00
commit 8d4eaa1489
1567 changed files with 204155 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
$ORIGIN 3.0.0.0.1.1.0.0.7.2.1.0.0.0.0.0.3.c.0.0.2.b.0.0.1.a.d.f.ip6.arpa. ; Must end with "."
$TTL 3600
@ SOA ns1 admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns1.address03.xa.
NS ns2.address03.xa.
;;;
;;; Name servers for parent zone
;;;
1.2.0.0 PTR ns1.address03.xa.
2.2.0.0 PTR ns2.address03.xa.
;;;
;;; Name servers for child (scenario) zones
;;;
;; For the “happy path”.
1.3.0.0 PTR ns1.child.address03.xa.
;; One more for the “happy path”.
2.3.0.0 PTR ns2.child.address03.xa.
;; Multiple PTR records, among which one matches the actual name server name.
;; For the curious: the languages used are English, French, Swedish, German,
;; Dutch and Esperanto.
3.3.0.0 PTR ns3.child.address03.xa.
PTR name-server-three.child.address03.xa.
PTR serveur-de-noms-trois.child.address03.xa.
PTR namnsevrar-tre.child.address03.xa.
PTR nameserver-drei.child.address03.xa.
PTR naamserver-drie.child.address03.xa.
PTR nomservilo-tri.child.address03.xa.
;; Empty non-terminal.
_.4.3.0.0 TXT "To make the parent node an empty non-terminal"
;; Nonexistent node. This name server has no reverse DNS at all.
; 5.3.0.0 PTR nothing-here.invalid.
;; This name server has reverse DNS for IPv6 only, none for IPv4.
6.3.0.0 PTR ns6.child.address03.xa.
;; Nonexistent node. This name server has reverse DNS for IPv4 only, none for IPv6.
; 7.3.0.0 PTR ns7.child.address03.xa.
;; Non-matching name.
8.3.0.0 PTR a-naughty-nameserver.child.address03.xa.
;; Multiple non-matching names.
9.3.0.0 PTR non-matching-set-1.child.address03.xa.
PTR non-matching-set-2.child.address03.xa.
;; An alias to a node with a good PTR record set (which is legal, and can
;; happen with classless IN-ADDR.ARPA delegation, as in RFC 2317).
0.4.0.0 CNAME 0-4-0-0.alias
0-4-0-0.alias PTR ns10.child.address03.xa.
;; Another good alias, but the target is in another zone.
1.4.0.0 CNAME 1-4-0-0.reverse-aliases.address03.xa.
;; A dangling alias (pointing to a nonexistent node).
2.4.0.0 CNAME dangling.alias
;; An illegal alias (with more than one CNAME RR).
;; NOTE: The resolver MUST NOT attempt to follow any of the CNAME resource records!
3.4.0.0 CNAME illegal1.alias
CNAME illegal2.alias
;; Queries for the following name must be dropped.
; 4.4.0.0 PTR ns14.child.address03.xa.
;; Queries for the following name must fail with RCODE SERVFAIL.
; 5.4.0.0 PTR ns15.child.address03.xa.
illegal1.alias PTR ns13.child.address03.xa.
illegal2.alias PTR ns13.child.address03.xa.

View File

@@ -0,0 +1,83 @@
$ORIGIN 3.11.127.in-addr.arpa. ; Must end with "."
$TTL 3600
@ SOA ns1 admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns1.address03.xa.
NS ns2.address03.xa.
;;;
;;; Name servers for parent zone
;;;
21 PTR ns1.address03.xa.
22 PTR ns2.address03.xa.
;;;
;;; Name servers for child (scenario) zones
;;;
;; For the “happy path”.
31 PTR ns1.child.address03.xa.
;; One more for the “happy path”.
32 PTR ns2.child.address03.xa.
;; Multiple PTR records, among which one matches the actual name server name.
;; For the curious: the languages used are English, French, Swedish, German,
;; Dutch and Esperanto.
33 PTR ns3.child.address03.xa.
PTR name-server-three.child.address03.xa.
PTR serveur-de-noms-trois.child.address03.xa.
PTR namnsevrar-tre.child.address03.xa.
PTR nameserver-drei.child.address03.xa.
PTR naamserver-drie.child.address03.xa.
PTR nomservilo-tri.child.address03.xa.
;; Empty non-terminal.
_.34 TXT "To make the parent node an empty non-terminal"
;; Nonexistent node. This name server has no reverse DNS at all.
; 35 PTR nothing-here.invalid.
;; Nonexistent node. This name server has reverse DNS for IPv6 only, none for IPv4.
; 36 PTR ns6.child.address03.xa.
;; This name server has reverse DNS for IPv4 only, none for IPv6.
37 PTR ns7.child.address03.xa.
;; Non-matching name.
38 PTR a-naughty-nameserver.child.address03.xa.
;; Multiple non-matching names.
39 PTR non-matching-set-1.child.address03.xa.
PTR non-matching-set-2.child.address03.xa.
;; An alias to a node with a good PTR record set (which is legal, and can
;; happen with classless IN-ADDR.ARPA delegation, as in RFC 2317).
40 CNAME 40.alias
40.alias PTR ns10.child.address03.xa.
;; Another good alias, but the target is another zone.
41 CNAME 41.reverse-aliases.address03.xa.
;; A dangling alias (pointing to a nonexistent node).
42 CNAME dangling.alias
;; An illegal alias (with more than one CNAME RR).
;; NOTE: The resolver MUST NOT attempt to follow any of the CNAME resource records!
43 CNAME illegal1.alias
CNAME illegal2.alias
;; Queries for the following name must be dropped.
; 44 PTR ns14.child.address03.xa.
;; Queries for the following name must fail with RCODE SERVFAIL.
; 45 PTR ns15.child.address03.xa.
illegal1.alias PTR ns13.child.address03.xa.
illegal2.alias PTR ns13.child.address03.xa.

View File

@@ -0,0 +1,13 @@
[This directory], i.e. the same directory as this README file, holds zone
files and configuration files to implement the test zones for the scenarios
defined in [Address03 test scenario specification].
For these test zones the following files are found in [this directory]:
* Zone files for `address03.xa` and other related zones;
* CoreDNS configuration file;
* Output from `zonemaster-cli` on all test scenarios in
[Address03 Test Zones Output].
[Address03 Test Zones Output]: ./test-zones-output.md
[Address03 test scenario specification]: ../../../docs/public/specifications/test-zones/Address-TP/address03.md
[This directory]: .

View File

@@ -0,0 +1,185 @@
# address03.xa
address03.xa:53 {
bind 127.11.3.21 # ns1
bind fda1:b2:c3::127:11:3:21 # ns1
bind 127.11.3.22 # ns2
bind fda1:b2:c3::127:11:3:22 # ns2
log
file Address-TP/address03/address03.xa.zone address03.xa
}
# reverse-aliases.address03.xa
reverse-aliases.address03.xa:53 {
bind 127.11.3.31 # ns1.child
bind fda1:b2:c3::127:11:3:31 # ns1.child
bind 127.11.3.32 # ns2.child
bind fda1:b2:c3::127:11:3:32 # ns2.child
log
file Address-TP/address03/reverse-aliases.address03.xa.zone reverse-aliases.address03.xa
}
# 3.11.127.in-addr.arpa
3.11.127.in-addr.arpa:53 {
bind 127.11.3.21 # ns1
bind fda1:b2:c3::127:11:3:21 # ns1
bind 127.11.3.22 # ns2
bind fda1:b2:c3::127:11:3:22 # ns2
log
file Address-TP/address03/3.11.127.in-addr.arpa.zone 3.11.127.in-addr.arpa
acl 44.3.11.127.in-addr.arpa {
drop
}
template IN ANY 45.3.11.127.in-addr.arpa {
rcode SERVFAIL
}
}
# 3.0.0.0.1.1.0.0.7.2.1.0.0.0.0.0.3.c.0.0.2.b.0.0.1.a.d.f.ip6.arpa
3.0.0.0.1.1.0.0.7.2.1.0.0.0.0.0.3.c.0.0.2.b.0.0.1.a.d.f.ip6.arpa:53 {
bind 127.11.3.21 # ns1
bind fda1:b2:c3::127:11:3:21 # ns1
bind 127.11.3.22 # ns2
bind fda1:b2:c3::127:11:3:22 # ns2
log
file Address-TP/address03/3.0.0.0.1.1.0.0.7.2.1.0.0.0.0.0.3.c.0.0.2.b.0.0.1.a.d.f.ip6.arpa.zone 3.0.0.0.1.1.0.0.7.2.1.0.0.0.0.0.3.c.0.0.2.b.0.0.1.a.d.f.ip6.arpa
acl 4.4.0.0.3.0.0.0.1.1.0.0.7.2.1.0.0.0.0.0.3.c.0.0.2.b.0.0.1.a.d.f.ip6.arpa {
drop
}
template IN ANY 5.4.0.0.3.0.0.0.1.1.0.0.7.2.1.0.0.0.0.0.3.c.0.0.2.b.0.0.1.a.d.f.ip6.arpa {
rcode SERVFAIL
}
}
### ALL-NS-HAVE-PTR-1
# all-ns-have-ptr-1.address03.xa.
all-ns-have-ptr-1.address03.xa:53 {
bind 127.11.3.31 # ns1.child
bind fda1:b2:c3::127:11:3:31 # ns1.child
bind 127.11.3.32 # ns2.child
bind fda1:b2:c3::127:11:3:32 # ns2.child
log
file Address-TP/address03/all-ns-have-ptr-1.address03.xa.zone all-ns-have-ptr-1.address03.xa
}
### ALL-NS-HAVE-PTR-2
# all-ns-have-ptr-2.address03.xa.
all-ns-have-ptr-2.address03.xa:53 {
bind 127.11.3.31 # ns1.child
bind fda1:b2:c3::127:11:3:31 # ns1.child
bind 127.11.3.33 # ns3.child
bind fda1:b2:c3::127:11:3:33 # ns3.child
log
file Address-TP/address03/all-ns-have-ptr-2.address03.xa.zone all-ns-have-ptr-2.address03.xa
}
### NO-NS-HAVE-PTR
# no-ns-have-ptr.address03.xa.
no-ns-have-ptr.address03.xa:53 {
bind 127.11.3.34 # ns4.child
bind fda1:b2:c3::127:11:3:34 # ns4.child
bind 127.11.3.35 # ns5.child
bind fda1:b2:c3::127:11:3:35 # ns5.child
log
file Address-TP/address03/no-ns-have-ptr.address03.xa.zone no-ns-have-ptr.address03.xa
}
### INCOMPLETE-PTR-1
# incomplete-ptr-1.address03.xa.
incomplete-ptr-1.address03.xa:53 {
bind 127.11.3.31 # ns1.child
bind fda1:b2:c3::127:11:3:31 # ns1.child
bind 127.11.3.36 # ns6.child
bind fda1:b2:c3::127:11:3:36 # ns6.child
log
file Address-TP/address03/incomplete-ptr-1.address03.xa.zone incomplete-ptr-1.address03.xa
}
### INCOMPLETE-PTR-2
# incomplete-ptr-2.address03.xa.
incomplete-ptr-2.address03.xa:53 {
bind 127.11.3.31 # ns1.child
bind fda1:b2:c3::127:11:3:31 # ns1.child
bind 127.11.3.37 # ns7.child
bind fda1:b2:c3::127:11:3:37 # ns7.child
log
file Address-TP/address03/incomplete-ptr-2.address03.xa.zone incomplete-ptr-2.address03.xa
}
### NON-MATCHING-NAMES
# non-matching-names.address03.xa.
non-matching-names.address03.xa:53 {
bind 127.11.3.38 # ns8.child
bind fda1:b2:c3::127:11:3:38 # ns8.child
bind 127.11.3.39 # ns9.child
bind fda1:b2:c3::127:11:3:39 # ns9.child
log
file Address-TP/address03/non-matching-names.address03.xa.zone non-matching-names.address03.xa
}
### PTR-IS-GOOD-CNAME-1
# ptr-is-good-cname-1.address03.xa.
ptr-is-good-cname-1.address03.xa:53 {
bind 127.11.3.31 # ns1.child
bind fda1:b2:c3::127:11:3:31 # ns1.child
bind 127.11.3.40 # ns10.child
bind fda1:b2:c3::127:11:3:40 # ns10.child
log
file Address-TP/address03/ptr-is-good-cname-1.address03.xa.zone ptr-is-good-cname-1.address03.xa
}
### PTR-IS-GOOD-CNAME-2
# ptr-is-good-cname-2.address03.xa.
ptr-is-good-cname-2.address03.xa:53 {
bind 127.11.3.31 # ns1.child
bind fda1:b2:c3::127:11:3:31 # ns1.child
bind 127.11.3.41 # ns11.child
bind fda1:b2:c3::127:11:3:41 # ns11.child
log
file Address-TP/address03/ptr-is-good-cname-2.address03.xa.zone ptr-is-good-cname-2.address03.xa
}
### PTR-IS-DANGLING-CNAME
# ptr-is-dangling-cname.address03.xa.
ptr-is-dangling-cname.address03.xa:53 {
bind 127.11.3.35 # ns5.child
bind fda1:b2:c3::127:11:3:35 # ns5.child
bind 127.11.3.42 # ns12.child
bind fda1:b2:c3::127:11:3:42 # ns12.child
log
file Address-TP/address03/ptr-is-dangling-cname.address03.xa.zone ptr-is-dangling-cname.address03.xa
}
### PTR-IS-ILLEGAL-CNAME
# ptr-is-illegal-cname.address03.xa.
ptr-is-illegal-cname.address03.xa:53 {
bind 127.11.3.34 # ns4.child
bind fda1:b2:c3::127:11:3:34 # ns4.child
bind 127.11.3.43 # ns13.child
bind fda1:b2:c3::127:11:3:43 # ns13.child
log
file Address-TP/address03/ptr-is-illegal-cname.address03.xa.zone ptr-is-illegal-cname.address03.xa
}
### PTR-RESOLUTION-NO-RESPONSE
# ptr-resolution-no-response.address03.xa.
ptr-resolution-no-response.address03.xa:53 {
bind 127.11.3.31 # ns1.child
bind fda1:b2:c3::127:11:3:31 # ns1.child
bind 127.11.3.44 # ns14.child
bind fda1:b2:c3::127:11:3:44 # ns14.child
log
file Address-TP/address03/ptr-resolution-no-response.address03.xa.zone ptr-resolution-no-response.address03.xa
}
### PTR-RESOLUTION-SERVFAIL
# ptr-resolution-servfail.address03.xa.
ptr-resolution-servfail.address03.xa:53 {
bind 127.11.3.31 # ns1.child
bind fda1:b2:c3::127:11:3:31 # ns1.child
bind 127.11.3.45 # ns15.child
bind fda1:b2:c3::127:11:3:45 # ns15.child
log
file Address-TP/address03/ptr-resolution-servfail.address03.xa.zone ptr-resolution-servfail.address03.xa
}

View File

@@ -0,0 +1,99 @@
$ORIGIN address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns1 admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns1
NS ns2
ns1 A 127.11.3.21
ns1 AAAA fda1:b2:c3::127:11:3:21
ns2 A 127.11.3.22
ns2 AAAA fda1:b2:c3::127:11:3:22
;;;
;;; Name servers for child (scenario) zones
;;;
ns1.child A 127.11.3.31
ns1.child AAAA fda1:b2:c3::127:11:3:31
ns2.child A 127.11.3.32
ns2.child AAAA fda1:b2:c3::127:11:3:32
ns3.child A 127.11.3.33
ns3.child AAAA fda1:b2:c3::127:11:3:33
ns4.child A 127.11.3.34
ns4.child AAAA fda1:b2:c3::127:11:3:34
ns5.child A 127.11.3.35
ns5.child AAAA fda1:b2:c3::127:11:3:35
ns6.child A 127.11.3.36
ns6.child AAAA fda1:b2:c3::127:11:3:36
ns7.child A 127.11.3.37
ns7.child AAAA fda1:b2:c3::127:11:3:37
ns8.child A 127.11.3.38
ns8.child AAAA fda1:b2:c3::127:11:3:38
ns9.child A 127.11.3.39
ns9.child AAAA fda1:b2:c3::127:11:3:39
ns10.child A 127.11.3.40
ns10.child AAAA fda1:b2:c3::127:11:3:40
ns11.child A 127.11.3.41
ns11.child AAAA fda1:b2:c3::127:11:3:41
ns12.child A 127.11.3.42
ns12.child AAAA fda1:b2:c3::127:11:3:42
ns13.child A 127.11.3.43
ns13.child AAAA fda1:b2:c3::127:11:3:43
ns14.child A 127.11.3.44
ns14.child AAAA fda1:b2:c3::127:11:3:44
ns15.child A 127.11.3.45
ns15.child AAAA fda1:b2:c3::127:11:3:45
;;;
;;; Some targets of aliases (CNAMEs) need to be in another zone
;;;
reverse-aliases NS ns1.child
reverse-aliases NS ns2.child
;;;
;;; Scenario definitions
;;;
all-ns-have-ptr-1 NS ns1.child
all-ns-have-ptr-1 NS ns2.child
all-ns-have-ptr-2 NS ns1.child
all-ns-have-ptr-2 NS ns3.child
no-ns-have-ptr NS ns4.child
no-ns-have-ptr NS ns5.child
incomplete-ptr-1 NS ns1.child
incomplete-ptr-1 NS ns6.child
incomplete-ptr-2 NS ns1.child
incomplete-ptr-2 NS ns7.child
non-matching-names NS ns8.child
non-matching-names NS ns9.child
ptr-is-good-cname-1 NS ns1.child
ptr-is-good-cname-1 NS ns10.child
ptr-is-good-cname-2 NS ns1.child
ptr-is-good-cname-2 NS ns11.child
ptr-is-dangling-cname NS ns5.child
ptr-is-dangling-cname NS ns12.child
ptr-is-illegal-cname NS ns4.child
ptr-is-illegal-cname NS ns13.child
ptr-resolution-no-response NS ns1.child
ptr-resolution-no-response NS ns14.child
ptr-resolution-servfail NS ns1.child
ptr-resolution-servfail NS ns15.child

View File

@@ -0,0 +1,12 @@
$ORIGIN all-ns-have-ptr-1.address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns1.child.address03.xa. admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns1.child.address03.xa.
NS ns2.child.address03.xa.

View File

@@ -0,0 +1,12 @@
$ORIGIN all-ns-have-ptr-2.address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns1.child.address03.xa. admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns1.child.address03.xa.
NS ns3.child.address03.xa.

View File

@@ -0,0 +1,12 @@
$ORIGIN incomplete-ptr-1.address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns1.child.address03.xa. admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns1.child.address03.xa.
NS ns6.child.address03.xa.

View File

@@ -0,0 +1,12 @@
$ORIGIN incomplete-ptr-2.address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns1.child.address03.xa. admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns1.child.address03.xa.
NS ns7.child.address03.xa.

View File

@@ -0,0 +1,12 @@
$ORIGIN no-ns-have-ptr.address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns4.child.address03.xa. admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns4.child.address03.xa.
NS ns5.child.address03.xa.

View File

@@ -0,0 +1,12 @@
$ORIGIN non-matching-names.address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns8.child.address03.xa. admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns8.child.address03.xa.
NS ns9.child.address03.xa.

View File

@@ -0,0 +1,12 @@
$ORIGIN ptr-is-dangling-cname.address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns5.child.address03.xa. admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns5.child.address03.xa.
NS ns12.child.address03.xa.

View File

@@ -0,0 +1,12 @@
$ORIGIN ptr-is-good-cname-1.address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns1.child.address03.xa. admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns1.child.address03.xa.
NS ns10.child.address03.xa.

View File

@@ -0,0 +1,12 @@
$ORIGIN ptr-is-good-cname-2.address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns1.child.address03.xa. admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns1.child.address03.xa.
NS ns11.child.address03.xa.

View File

@@ -0,0 +1,12 @@
$ORIGIN ptr-is-illegal-cname.address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns4.child.address03.xa. admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns4.child.address03.xa.
NS ns13.child.address03.xa.

View File

@@ -0,0 +1,12 @@
$ORIGIN ptr-resolution-no-response.address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns1.child.address03.xa. admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns1.child.address03.xa.
NS ns14.child.address03.xa.

View File

@@ -0,0 +1,12 @@
$ORIGIN ptr-resolution-servfail.address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns1.child.address03.xa. admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns1.child.address03.xa.
NS ns15.child.address03.xa.

View File

@@ -0,0 +1,15 @@
$ORIGIN reverse-aliases.address03.xa. ; Must end with "."
$TTL 3600
@ SOA ns1.child.address03.xa. admin. (
2025022400 ; serial
6h ; refresh
1h ; retry
1w ; expire
1d ) ; minimum
NS ns1.child.address03.xa.
NS ns2.child.address03.xa.
1-4-0-0 PTR ns11.child.address03.xa.
41 PTR ns11.child.address03.xa.

View File

@@ -0,0 +1,219 @@
# Address03 Test Zones Output
# Table of contents
* [Introduction](#introduction)
* [All message tags](#all-message-tags)
* [All scenarios](#all-scenarios)
* [zonemaster-cli commands and their output for each test scenario](#zonemaster-cli-command-and-their-output-for-each-test-scenario)
## Introduction
In this file the output of running `zonemaster-cli` for every test zone is
found. This file is created during the development of the test zones and should
be updated as the implementation of the test case or the test scenarios or test
zones are updated or corrected.
During development and any update this document serves as tracking and log tool.
It also serves as a template for future development of test zones for
scenarios for other test cases.
## All message tags
* NAMESERVER\_IP\_PTR\_MATCH
* NAMESERVER\_IP\_PTR\_MISMATCH
* NAMESERVER\_IP\_WITHOUT\_REVERSE
* NO\_RESPONSE\_PTR\_QUERY
## All scenarios
| Scenario name | Zone name |
|:---------------------------|:----------------------------------------|
| ALL-NS-HAVE-PTR-1 | all-ns-have-ptr-1.address03.xa |
| ALL-NS-HAVE-PTR-2 | all-ns-have-ptr-2.address03.xa |
| NO-NS-HAVE-PTR | no-ns-have-ptr.address03.xa |
| INCOMPLETE-PTR-1 | incomplete-ptr-1.address03.xa |
| INCOMPLETE-PTR-2 | incomplete-ptr-2.address03.xa |
| NON-MATCHING-NAMES | non-matching-names.address03.xa |
| PTR-IS-GOOD-CNAME-1 | ptr-is-good-cname-1.address03.xa |
| PTR-IS-GOOD-CNAME-2 | ptr-is-good-cname-2.address03.xa |
| PTR-IS-DANGLING-CNAME | ptr-is-dangling-cname.address03.xa |
| PTR-IS-ILLEGAL-CNAME | ptr-is-illegal-cname.address03.xa |
| PTR-RESOLUTION-NO-RESPONSE | ptr-resolution-no-response.address03.xa |
| PTR-RESOLUTION-SERVFAIL | ptr-resolution-servfail.address03.xa |
## zonemaster-cli commands and their output for each test scenario
The level (`--level`) must be set to the lowest level of the message tags. For
this test case `INFO` is the lowest level. It is only meaningful to test the
test zones with `--test Address03`.
| Scenario name | Mandatory message tag | Forbidden message tags |
|:------------------|:---------------------------|:-----------------------|
| ALL-NS-HAVE-PTR-1 | NAMESERVER\_IP\_PTR\_MATCH | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --raw --show-testcase --test address03 --hints COMMON/hintfile --level info all-ns-have-ptr-1.address03.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v7.0.0
0.10 INFO Address03 NAMESERVER_IP_PTR_MATCH
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:------------------|:---------------------------|:-----------------------|
| ALL-NS-HAVE-PTR-2 | NAMESERVER\_IP\_PTR\_MATCH | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --raw --show-testcase --test address03 --hints COMMON/hintfile --level info all-ns-have-ptr-2.address03.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v7.0.0
0.11 INFO Address03 NAMESERVER_IP_PTR_MATCH
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:---------------|:---------------------------------|:-----------------------|
| NO-NS-HAVE-PTR | NAMESERVER\_IP\_WITHOUT\_REVERSE | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --raw --show-testcase --test address03 --hints COMMON/hintfile --level info no-ns-have-ptr.address03.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v7.0.0
0.06 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=127.11.3.34; nsname=ns4.child.address03.xa
0.07 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=fda1:b2:c3:0:127:11:3:34; nsname=ns4.child.address03.xa
0.08 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=127.11.3.35; nsname=ns5.child.address03.xa
0.09 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=fda1:b2:c3:0:127:11:3:35; nsname=ns5.child.address03.xa
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:-----------------|:---------------------------------|:-----------------------|
| INCOMPLETE-PTR-1 | NAMESERVER\_IP\_WITHOUT\_REVERSE | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --raw --show-testcase --test address03 --hints COMMON/hintfile --level info incomplete-ptr-1.address03.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v7.0.0
0.08 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=127.11.3.36; nsname=ns6.child.address03.xa
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:-----------------|:---------------------------------|:-----------------------|
| INCOMPLETE-PTR-2 | NAMESERVER\_IP\_WITHOUT\_REVERSE | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --raw --show-testcase --test address03 --hints COMMON/hintfile --level info incomplete-ptr-2.address03.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v7.0.0
0.07 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=fda1:b2:c3:0:127:11:3:37; nsname=ns7.child.address03.xa
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:-------------------|:------------------------------|:-----------------------|
| NON-MATCHING-NAMES | NAMESERVER\_IP\_PTR\_MISMATCH | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --raw --show-testcase --test address03 --hints COMMON/hintfile --level info non-matching-names.address03.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v7.0.0
0.11 NOTICE Address03 NAMESERVER_IP_PTR_MISMATCH names=a-naughty-nameserver.child.address03.xa.; ns_ip=127.11.3.38; nsname=ns8.child.address03.xa
0.12 NOTICE Address03 NAMESERVER_IP_PTR_MISMATCH names=a-naughty-nameserver.child.address03.xa.; ns_ip=fda1:b2:c3:0:127:11:3:38; nsname=ns8.child.address03.xa
0.13 NOTICE Address03 NAMESERVER_IP_PTR_MISMATCH names=non-matching-set-1.child.address03.xa./non-matching-set-2.child.address03.xa.; ns_ip=127.11.3.39; nsname=ns9.child.address03.xa
0.13 NOTICE Address03 NAMESERVER_IP_PTR_MISMATCH names=non-matching-set-1.child.address03.xa./non-matching-set-2.child.address03.xa.; ns_ip=fda1:b2:c3:0:127:11:3:39; nsname=ns9.child.address03.xa
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:--------------------|:---------------------------|:-----------------------|
| PTR-IS-GOOD-CNAME-1 | NAMESERVER\_IP\_PTR\_MATCH | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --raw --show-testcase --test address03 --hints COMMON/hintfile --level info ptr-is-good-cname-1.address03.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v7.0.0
0.15 INFO Address03 NAMESERVER_IP_PTR_MATCH
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:--------------------|:---------------------------|:-----------------------|
| PTR-IS-GOOD-CNAME-2 | NAMESERVER\_IP\_PTR\_MATCH | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --raw --show-testcase --test address03 --hints COMMON/hintfile --level info ptr-is-good-cname-2.address03.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v7.0.0
0.14 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=127.11.3.41; nsname=ns11.child.address03.xa
0.16 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=fda1:b2:c3:0:127:11:3:41; nsname=ns11.child.address03.xa
```
The output is incorrect with Zonemaster-Engine version 7.0.0 due to a bug (<https://github.com/zonemaster/zonemaster/issues/1353>).
--> Not yet OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:----------------------|:---------------------------------|:-----------------------|
| PTR-IS-DANGLING-CNAME | NAMESERVER\_IP\_WITHOUT\_REVERSE | 2) |
* (2) All tags except for those specified as “Mandatory message tags”
```
$ zonemaster-cli --raw --show-testcase --test address03 --hints COMMON/hintfile --level info ptr-is-dangling-cname.address03.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v7.0.0
0.07 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=127.11.3.42; nsname=ns12.child.address03.xa
0.08 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=fda1:b2:c3:0:127:11:3:42; nsname=ns12.child.address03.xa
0.08 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=127.11.3.35; nsname=ns5.child.address03.xa
0.09 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=fda1:b2:c3:0:127:11:3:35; nsname=ns5.child.address03.xa
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:---------------------|:---------------------------------|:----------------------------------------------------------|
| PTR-IS-ILLEGAL-CNAME | NAMESERVER\_IP\_WITHOUT\_REVERSE | NAMESERVER\_IP\_PTR\_MATCH, NAMESERVER\_IP\_PTR\_MISMATCH |
```
$ zonemaster-cli --raw --show-testcase --test address03 --hints COMMON/hintfile --level info ptr-is-illegal-cname.address03.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v7.0.0
0.06 ERROR Address03 CNAME_RECORDS_MULTIPLE_FOR_NAME name="43.3.11.127.in-addr.arpa"
0.06 WARNING Address03 NO_RESPONSE_PTR_QUERY domain=43.3.11.127.in-addr.arpa.
0.06 ERROR Address03 CNAME_RECORDS_MULTIPLE_FOR_NAME name="3.4.0.0.3.0.0.0.1.1.0.0.7.2.1.0.0.0.0.0.3.c.0.0.2.b.0.0.1.a.d.f.ip6.arpa"
0.06 WARNING Address03 NO_RESPONSE_PTR_QUERY domain=3.4.0.0.3.0.0.0.1.1.0.0.7.2.1.0.0.0.0.0.3.c.0.0.2.b.0.0.1.a.d.f.ip6.arpa.
0.07 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=127.11.3.34; nsname=ns4.child.address03.xa
0.07 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=fda1:b2:c3:0:127:11:3:34; nsname=ns4.child.address03.xa
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:---------------------------|:-------------------------|:----------------------------------------------------------|
| PTR-RESOLUTION-NO-RESPONSE | NO\_RESPONSE\_PTR\_QUERY | NAMESERVER\_IP\_PTR\_MATCH, NAMESERVER\_IP\_PTR\_MISMATCH |
```
$ zonemaster-cli --raw --show-testcase --test address03 --hints COMMON/hintfile --level info ptr-resolution-no-response.address03.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v7.0.0
40.12 WARNING Address03 NO_RESPONSE_PTR_QUERY domain=44.3.11.127.in-addr.arpa.
40.12 WARNING Address03 NO_RESPONSE_PTR_QUERY domain=4.4.0.0.3.0.0.0.1.1.0.0.7.2.1.0.0.0.0.0.3.c.0.0.2.b.0.0.1.a.d.f.ip6.arpa.
```
--> OK
| Scenario name | Mandatory message tag | Forbidden message tags |
|:------------------------|:-------------------------|:----------------------------------------------------------|
| PTR-RESOLUTION-SERVFAIL | NO\_RESPONSE\_PTR\_QUERY | NAMESERVER\_IP\_PTR\_MATCH, NAMESERVER\_IP\_PTR\_MISMATCH |
```
$ zonemaster-cli --raw --show-testcase --test address03 --hints COMMON/hintfile --level info ptr-resolution-servfail.address03.xa
0.00 INFO Unspecified GLOBAL_VERSION version=v7.0.0
0.07 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=127.11.3.45; nsname=ns15.child.address03.xa
0.08 WARNING Address03 NAMESERVER_IP_WITHOUT_REVERSE ns_ip=fda1:b2:c3:0:127:11:3:45; nsname=ns15.child.address03.xa
```
--> Not yet OK