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,696 @@
# Recursor.pm
[This directory](.), i.e. the same directory as this README file, holds
zone files and `coredns` configuration files for scenarios for the
CNAME function in [Recursor.pm].
* GOOD-CNAME-1
* GOOD-CNAME-2
* GOOD-CNAME-CHAIN
* GOOD-CNAME-OUT-OF-ZONE
* NXDOMAIN-VIA-CNAME
* NODATA-VIA-CNAME
* MULT-CNAME
* LOOPED-CNAME-IN-ZONE-1
* LOOPED-CNAME-IN-ZONE-2
* LOOPED-CNAME-IN-ZONE-3
* LOOPED-CNAME-OUT-OF-ZONE
* TOO-LONG-CNAME-CHAIN
* TARGET-NO-MATCH-CNAME
* BROKEN-CNAME-CHAIN
* WRONG-CNAME-OWNER-NAME
* EXTRA-CNAME-IN-ANSWER
See [CNAME.md] for specification of the scenarios.
## zonemaster-cli commands and their output for each test scenario
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
GOOD-CNAME-1 | True
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 good-cname-1.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15606
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 0eb313f823f10bdc (echoed)
;; QUESTION SECTION:
;good-cname-1.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
good-cname-1.cname.recursor.engine.xa. 3600 IN CNAME good-cname-1-target.cname.recursor.engine.xa.
good-cname-1-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1
;; AUTHORITY SECTION:
cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa.
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Wed Nov 22 21:27:07 UTC 2023
;; MSG SIZE rcvd: 299
```
--> OK
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
GOOD-CNAME-2 | True
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 good-cname-2.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 695
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 9219874eb4a37f1d (echoed)
;; QUESTION SECTION:
;good-cname-2.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
good-cname-2.cname.recursor.engine.xa. 3600 IN CNAME good-cname-2-target.cname.recursor.engine.xa.
good-cname-2-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1
good-cname-2-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.2
;; AUTHORITY SECTION:
cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa.
;; Query time: 4 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Wed Nov 22 21:28:01 UTC 2023
;; MSG SIZE rcvd: 359
```
--> OK
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
GOOD-CNAME-CHAIN | True
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 good-cname-chain.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48298
;; flags: qr aa rd; QUERY: 1, ANSWER: 4, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 92cdff40d48d9bc4 (echoed)
;; QUESTION SECTION:
;good-cname-chain.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
good-cname-chain.cname.recursor.engine.xa. 3600 IN CNAME good-cname-chain-two.cname.recursor.engine.xa.
good-cname-chain-two.cname.recursor.engine.xa. 3600 IN CNAME good-cname-chain-three.cname.recursor.engine.xa.
good-cname-chain-three.cname.recursor.engine.xa. 3600 IN CNAME good-cname-chain-target.cname.recursor.engine.xa.
good-cname-chain-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1
;; AUTHORITY SECTION:
cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa.
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Wed Nov 22 21:28:47 UTC 2023
;; MSG SIZE rcvd: 527
```
--> OK
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
GOOD-CNAME-OUT-OF-ZONE | True
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 good-cname-out-of-zone.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63315
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 3
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 8764b78a2607dfdc (echoed)
;; QUESTION SECTION:
;good-cname-out-of-zone.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
good-cname-out-of-zone.cname.recursor.engine.xa. 3600 IN CNAME target.goodsub.cname.recursor.engine.xa.
;; AUTHORITY SECTION:
goodsub.cname.recursor.engine.xa. 3600 IN NS ns1.goodsub.cname.recursor.engine.xa.
;; ADDITIONAL SECTION:
ns1.goodsub.cname.recursor.engine.xa. 3600 IN A 127.30.1.34
ns1.goodsub.cname.recursor.engine.xa. 3600 IN AAAA fda1:b2:c3:0:127:30:1:34
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Wed Nov 22 21:31:19 UTC 2023
;; MSG SIZE rcvd: 386
```
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.34 target.goodsub.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13094
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 150e50a5d8ba5cfa (echoed)
;; QUESTION SECTION:
;target.goodsub.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
target.goodsub.cname.recursor.engine.xa. 3600 IN A 127.0.0.1
;; AUTHORITY SECTION:
goodsub.cname.recursor.engine.xa. 3600 IN NS ns1.goodsub.cname.recursor.engine.xa.
;; Query time: 0 msec
;; SERVER: 127.30.1.34#53(127.30.1.34) (UDP)
;; WHEN: Wed Nov 22 21:34:13 UTC 2023
;; MSG SIZE rcvd: 217
```
--> OK
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
NXDOMAIN-VIA-CNAME | Undefined
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 nxdomain-via-cname.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34237
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: dfcee7963f535f91 (echoed)
;; QUESTION SECTION:
;nxdomain-via-cname.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
nxdomain-via-cname.cname.recursor.engine.xa. 3600 IN CNAME nxdomain-via-cname-target.cname.recursor.engine.xa.
;; AUTHORITY SECTION:
cname.recursor.engine.xa. 3600 IN SOA ns1.cname.recursor.engine.xa. root.cname.recursor.engine.xa. 2023111502 86400 14400 3600000 3600
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Wed Nov 22 21:55:26 UTC 2023
;; MSG SIZE rcvd: 308
```
--> OK
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
NODATA-VIA-CNAME | Undefined
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 nodata-via-cname.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32832
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 9ba3e3e19d477cce (echoed)
;; QUESTION SECTION:
;nodata-via-cname.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
nodata-via-cname.cname.recursor.engine.xa. 3600 IN CNAME nodata-via-cname-target.cname.recursor.engine.xa.
;; AUTHORITY SECTION:
cname.recursor.engine.xa. 3600 IN SOA ns1.cname.recursor.engine.xa. root.cname.recursor.engine.xa. 2023111502 86400 14400 3600000 3600
;; Query time: 4 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Wed Nov 22 21:59:03 UTC 2023
;; MSG SIZE rcvd: 302
```
--> OK
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
MULT-CNAME | Undefined and tag `CNAME_MULTIPLE_FOR_NAME`
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 mult-cname.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63988
;; flags: qr aa rd; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 9f3ce697902993cf (echoed)
;; QUESTION SECTION:
;mult-cname.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
mult-cname.cname.recursor.engine.xa. 3600 IN CNAME mult-cname-target-1.cname.recursor.engine.xa.
mult-cname-target-1.cname.recursor.engine.xa. 3600 IN A 127.0.0.1
mult-cname.cname.recursor.engine.xa. 3600 IN CNAME mult-cname-target-2.cname.recursor.engine.xa.
mult-cname-target-2.cname.recursor.engine.xa. 3600 IN A 127.0.0.2
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Wed Nov 22 21:16:02 UTC 2023
;; MSG SIZE rcvd: 382
```
--> OK
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
LOOPED-CNAME-IN-ZONE-1 | Undefined and tag `CNAME_LOOP_INNER`
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 looped-cname-in-zone-1.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30714
;; flags: qr aa rd; QUERY: 1, ANSWER: 10, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: cad349bcae7b7ae5 (echoed)
;; QUESTION SECTION:
;looped-cname-in-zone-1.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
looped-cname-in-zone-1.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-1.cname.recursor.engine.xa.
looped-cname-in-zone-1.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-1.cname.recursor.engine.xa.
looped-cname-in-zone-1.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-1.cname.recursor.engine.xa.
looped-cname-in-zone-1.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-1.cname.recursor.engine.xa.
looped-cname-in-zone-1.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-1.cname.recursor.engine.xa.
looped-cname-in-zone-1.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-1.cname.recursor.engine.xa.
looped-cname-in-zone-1.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-1.cname.recursor.engine.xa.
looped-cname-in-zone-1.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-1.cname.recursor.engine.xa.
looped-cname-in-zone-1.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-1.cname.recursor.engine.xa.
looped-cname-in-zone-1.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-1.cname.recursor.engine.xa.
;; AUTHORITY SECTION:
cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa.
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Wed Nov 22 21:42:06 UTC 2023
;; MSG SIZE rcvd: 246
```
--> Not fully OK. Even though multiple copies of a DNS record are only considered
to be a single record from a DNS perspective, there should only be one copy. The
behavior is considered to be a bug in CoreDNS and has been reported
(https://github.com/coredns/coredns/issues/6421).
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
LOOPED-CNAME-IN-ZONE-2 | Undefined and tag `CNAME_LOOP_INNER`
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 looped-cname-in-zone-2.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13110
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 7a7a75c08fe99560 (echoed)
;; QUESTION SECTION:
;looped-cname-in-zone-2.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
looped-cname-in-zone-2.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-2-a.cname.recursor.engine.xa.
looped-cname-in-zone-2-a.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-2-b.cname.recursor.engine.xa.
looped-cname-in-zone-2-b.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-2-a.cname.recursor.engine.xa.
;; AUTHORITY SECTION:
cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa.
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Wed Nov 29 13:07:05 UTC 2023
;; MSG SIZE rcvd: 488
```
--> OK
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
LOOPED-CNAME-IN-ZONE-3 | Undefined and tag `CNAME_LOOP_INNER`
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 looped-cname-in-zone-3.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5018
;; flags: qr aa rd; QUERY: 1, ANSWER: 10, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 33425f18a6e9e7d4 (echoed)
;; QUESTION SECTION:
;looped-cname-in-zone-3.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
looped-cname-in-zone-3.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-3-next.cname.recursor.engine.xa.
looped-cname-in-zone-3-next.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-3.cname.recursor.engine.xa.
looped-cname-in-zone-3.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-3-next.cname.recursor.engine.xa.
looped-cname-in-zone-3-next.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-3.cname.recursor.engine.xa.
looped-cname-in-zone-3.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-3-next.cname.recursor.engine.xa.
looped-cname-in-zone-3-next.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-3.cname.recursor.engine.xa.
looped-cname-in-zone-3.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-3-next.cname.recursor.engine.xa.
looped-cname-in-zone-3-next.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-3.cname.recursor.engine.xa.
looped-cname-in-zone-3.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-3-next.cname.recursor.engine.xa.
looped-cname-in-zone-3-next.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-3.cname.recursor.engine.xa.
;; AUTHORITY SECTION:
cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa.
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Fri Dec 01 11:02:56 UTC 2023
;; MSG SIZE rcvd: 274
```
--> Not fully OK. See comment on scenario LOOPED-CNAME-IN-ZONE-1 above.
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
LOOPED-CNAME-OUT-OF-ZONE | Undefined and tag `CNAME_LOOP_OUTER`
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 looped-cname-out-of-zone.sub2.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54910
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 3
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 888e7ca1a80bc2f8 (echoed)
;; QUESTION SECTION:
;looped-cname-out-of-zone.sub2.cname.recursor.engine.xa. IN A
;; AUTHORITY SECTION:
sub2.cname.recursor.engine.xa. 3600 IN NS ns1.sub2.cname.recursor.engine.xa.
;; ADDITIONAL SECTION:
ns1.sub2.cname.recursor.engine.xa. 3600 IN A 127.30.1.32
ns1.sub2.cname.recursor.engine.xa. 3600 IN AAAA fda1:b2:c3:0:127:30:1:32
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Wed Nov 22 21:43:49 UTC 2023
;; MSG SIZE rcvd: 281
```
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.32 looped-cname-out-of-zone.sub2.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23787
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 5c10d02a24f656d9 (echoed)
;; QUESTION SECTION:
;looped-cname-out-of-zone.sub2.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
looped-cname-out-of-zone.sub2.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-out-of-zone.sub3.cname.recursor.engine.xa.
;; AUTHORITY SECTION:
sub2.cname.recursor.engine.xa. 3600 IN NS ns1.sub2.cname.recursor.engine.xa.
;; Query time: 0 msec
;; SERVER: 127.30.1.32#53(127.30.1.32) (UDP)
;; WHEN: Wed Nov 22 21:45:24 UTC 2023
;; MSG SIZE rcvd: 293
```
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 looped-cname-out-of-zone.sub3.cname.recursor.engine.xa.
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36301
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 3
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 63d0ce8b86dec736 (echoed)
;; QUESTION SECTION:
;looped-cname-out-of-zone.sub3.cname.recursor.engine.xa. IN A
;; AUTHORITY SECTION:
sub3.cname.recursor.engine.xa. 3600 IN NS ns1.sub3.cname.recursor.engine.xa.
;; ADDITIONAL SECTION:
ns1.sub3.cname.recursor.engine.xa. 3600 IN A 127.30.1.33
ns1.sub3.cname.recursor.engine.xa. 3600 IN AAAA fda1:b2:c3:0:127:30:1:33
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Wed Nov 22 21:46:29 UTC 2023
;; MSG SIZE rcvd: 281
```
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.33 looped-cname-out-of-zone.sub3.cname.recursor.engine.xa.
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51489
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 8782d3de032e92ce (echoed)
;; QUESTION SECTION:
;looped-cname-out-of-zone.sub3.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
looped-cname-out-of-zone.sub3.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-out-of-zone.sub2.cname.recursor.engine.xa.
;; AUTHORITY SECTION:
sub3.cname.recursor.engine.xa. 3600 IN NS ns1.sub3.cname.recursor.engine.xa.
;; Query time: 0 msec
;; SERVER: 127.30.1.33#53(127.30.1.33) (UDP)
;; WHEN: Wed Nov 22 21:47:03 UTC 2023
;; MSG SIZE rcvd: 293
```
--> OK
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
TOO-LONG-CNAME-CHAIN | ??
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 too-long-cname-chain.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44121
;; flags: qr aa rd; QUERY: 1, ANSWER: 11, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 5b12662406062bc6 (echoed)
;; QUESTION SECTION:
;too-long-cname-chain.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
too-long-cname-chain.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-two.cname.recursor.engine.xa.
too-long-cname-chain-two.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-three.cname.recursor.engine.xa.
too-long-cname-chain-three.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-four.cname.recursor.engine.xa.
too-long-cname-chain-four.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-five.cname.recursor.engine.xa.
too-long-cname-chain-five.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-six.cname.recursor.engine.xa.
too-long-cname-chain-six.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-seven.cname.recursor.engine.xa.
too-long-cname-chain-seven.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-eight.cname.recursor.engine.xa.
too-long-cname-chain-eight.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-nine.cname.recursor.engine.xa.
too-long-cname-chain-nine.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-ten.cname.recursor.engine.xa.
too-long-cname-chain-ten.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-target.cname.recursor.engine.xa.
too-long-cname-chain-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1
;; AUTHORITY SECTION:
cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa.
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Thu Nov 30 16:37:16 UTC 2023
;; MSG SIZE rcvd: 522
```
--> OK
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
TARGET-NO-MATCH-CNAME | ??
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 target-no-match-cname.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51040
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 51f0cfb680ea5015 (echoed)
;; QUESTION SECTION:
;target-no-match-cname.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
target-no-match-cname.cname.recursor.engine.xa. 3600 IN CNAME target-no-match-cname-two.cname.recursor.engine.xa.
target-no-match-cname-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1
;; AUTHORITY SECTION:
cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa.
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Thu Nov 30 16:40:31 UTC 2023
;; MSG SIZE rcvd: 332
```
--> OK
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
BROKEN-CNAME-CHAIN | ??
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 target-no-match-cname.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51040
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 51f0cfb680ea5015 (echoed)
;; QUESTION SECTION:
;target-no-match-cname.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
target-no-match-cname.cname.recursor.engine.xa. 3600 IN CNAME target-no-match-cname-two.cname.recursor.engine.xa.
target-no-match-cname-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1
;; AUTHORITY SECTION:
cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa.
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Thu Nov 30 16:40:31 UTC 2023
;; MSG SIZE rcvd: 332
```
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
WRONG-CNAME-OWNER-NAME | ??
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 wrong-cname-owner-name.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18339
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: f300bad89af70d8b (echoed)
;; QUESTION SECTION:
;wrong-cname-owner-name.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
wrong-cname-owner-name-1.cname.recursor.engine.xa. 3600 IN CNAME wrong-cname-owner-name-target.cname.recursor.engine.xa.
wrong-cname-owner-name-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1
;; AUTHORITY SECTION:
cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa.
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Fri Dec 01 11:07:20 UTC 2023
;; MSG SIZE rcvd: 341
```
--> OK
Scenario name | Expected output
:----------------------------|:---------------------------------------------------------------------------------------------
EXTRA-CNAME-IN-ANSWER | ??
```
; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @127.30.1.31 wrong-cname-owner-name.cname.recursor.engine.xa
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18339
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: f300bad89af70d8b (echoed)
;; QUESTION SECTION:
;wrong-cname-owner-name.cname.recursor.engine.xa. IN A
;; ANSWER SECTION:
wrong-cname-owner-name-1.cname.recursor.engine.xa. 3600 IN CNAME wrong-cname-owner-name-target.cname.recursor.engine.xa.
wrong-cname-owner-name-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1
;; AUTHORITY SECTION:
cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa.
;; Query time: 0 msec
;; SERVER: 127.30.1.31#53(127.30.1.31) (UDP)
;; WHEN: Fri Dec 01 11:07:20 UTC 2023
;; MSG SIZE rcvd: 341
```
[CNAME.md]: ../../../docs/public/specifications/test-zones/Engine/Recursor-PM/CNAME.md
[Recursor.pm]: https://github.com/zonemaster/zonemaster-engine/blob/master/lib/Zonemaster/Engine/Recursor.pm

View File

@@ -0,0 +1,111 @@
$TTL 3600
$ORIGIN cname.recursor.engine.xa.
@ SOA (
ns1
root
2023113001
86400
14400
3600000
3600
)
@ NS ns1
ns1 A 127.30.1.31
ns1 AAAA fda1:b2:c3:0:127:30:1:31
; For scenario GOOD-CNAME-1
good-cname-1 CNAME good-cname-1-target
good-cname-1-target A 127.0.0.1
; For scenario GOOD-CNAME-2
good-cname-2 CNAME good-cname-2-target
good-cname-2-target A 127.0.0.1
good-cname-2-target A 127.0.0.2
; For scenario GOOD-CNAME-CHAIN
good-cname-chain CNAME good-cname-chain-two
good-cname-chain-two CNAME good-cname-chain-three
good-cname-chain-three CNAME good-cname-chain-target
good-cname-chain-target A 127.0.0.1
; For scenario GOOD-CNAME-OUT-OF-ZONE
good-cname-out-of-zone CNAME target.goodsub
goodsub NS ns1.goodsub
ns1.goodsub A 127.30.1.34
ns1.goodsub AAAA fda1:b2:c3::127:30:1:34
; For scenario NXDOMAIN-VIA-CNAME
nxdomain-via-cname CNAME nxdomain-via-cname-target
; For scenario NODATA-VIA-CNAME
nodata-via-cname CNAME nodata-via-cname-target
nodata-via-cname-target HINFO No-CPU No-OS
; For scenario MULT-CNAME
mult-cname CNAME mult-cname-target-1
mult-cname CNAME mult-cname-target-2
mult-cname-target-1 A 127.0.0.1
mult-cname-target-2 A 127.0.0.2
; For scenario LOOPED-CNAME-IN-ZONE-1
looped-cname-in-zone-1 CNAME looped-cname-in-zone-1
; For scenario LOOPED-CNAME-IN-ZONE-2
; Defined in the cfg file
; looped-cname-in-zone-2 CNAME looped-cname-in-zone-2-a
; looped-cname-in-zone-2-a CNAME looped-cname-in-zone-2-b
; looped-cname-in-zone-2-b CNAME looped-cname-in-zone-2-a
; For scenario LOOPED-CNAME-IN-ZONE-3
looped-cname-in-zone-3 CNAME looped-cname-in-zone-3-next
looped-cname-in-zone-3-next CNAME looped-cname-in-zone-3
; For scenario LOOPED-CNAME-OUT-OF-ZONE
sub2 NS ns1.sub2
ns1.sub2 A 127.30.1.32
ns1.sub2 AAAA fda1:b2:c3:0:127:30:1:32
sub3 NS ns1.sub3
ns1.sub3 A 127.30.1.33
ns1.sub3 AAAA fda1:b2:c3:0:127:30:1:33
; For scenario TOO-LONG-CNAME-CHAIN
; Defined in the cfg file
; too-long-cname-chain CNAME too-long-cname-chain-two
; too-long-cname-chain-two CNAME too-long-cname-chain-three
; too-long-cname-chain-three CNAME too-long-cname-chain-four
; too-long-cname-chain-four CNAME too-long-cname-chain-five
; too-long-cname-chain-five CNAME too-long-cname-chain-six
; too-long-cname-chain-six CNAME too-long-cname-chain-seven
; too-long-cname-chain-seven CNAME too-long-cname-chain-eight
; too-long-cname-chain-eight CNAME too-long-cname-chain-nine
; too-long-cname-chain-nine CNAME too-long-cname-chain-ten
; too-long-cname-chain-ten CNAME too-long-cname-chain-target
; too-long-cname-chain-target A 127.0.0.1
; For scenario TARGET-NO-MATCH-CNAME
; Also defined in the cfg file
target-no-match-cname CNAME target-no-match-cname-two
target-no-match-cname-target A 127.0.0.1
; For scenario BROKEN-CNAME-CHAIN
; Also defined in the cfg file
broken-cname-chain CNAME broken-cname-chain-two
broken-cname-chain-three CNAME broken-cname-chain-target
broken-cname-chain-target A 127.0.0.1
; For scenario WRONG-CNAME-OWNER-NAME
; Also defined in the cfg file
wrong-cname-owner-name-1 CNAME wrong-cname-owner-name-target
wrong-cname-owner-name-target A 127.0.0.1
; For scenario EXTRA-CNAME-IN-ANSWER
; Also defined in the cfg file
extra-cname-in-answer A 127.0.0.1
extra-cname-in-answer-1 CNAME extra-cname-in-answer-2

View File

@@ -0,0 +1,22 @@
$TTL 3600
$ORIGIN goodsub.cname.recursor.engine.xa.
@ SOA (
ns1
root
2023103100
86400
14400
3600000
3600
)
@ NS ns1
ns1 A 127.30.1.34
ns1 AAAA fda1:b2:c3:0:127:30:1:34
; For scenario GOOD-CNAME-OUT-OF-ZONE
target A 127.0.0.1

View File

@@ -0,0 +1,124 @@
# ns1 and ns2 recursor.engine.xa
recursor.engine.xa:53 {
bind 127.30.1.21
bind fda1:b2:c3:0:127:30:1:21
bind 127.30.1.22
bind fda1:b2:c3:0:127:30:1:22
log
file Engine/Recursor-PM/recursor.engine.xa recursor.engine.xa.
}
# ns1 cname.recursor.engine.xa
cname.recursor.engine.xa:53 {
bind 127.30.1.31
bind fda1:b2:c3:0:127:30:1:31
log
file Engine/Recursor-PM/cname.recursor.engine.xa cname.recursor.engine.xa.
# For scenario MULT-CNAME
template IN A mult-cname.cname.recursor.engine.xa {
answer "mult-cname.cname.recursor.engine.xa. 3600 IN CNAME mult-cname-target-1.cname.recursor.engine.xa."
answer "mult-cname.cname.recursor.engine.xa. 3600 IN CNAME mult-cname-target-2.cname.recursor.engine.xa."
#answer "mult-cname-target-1.cname.recursor.engine.xa. 3600 IN A 127.0.0.1" # Taken from the zone
#answer "mult-cname-target-2.cname.recursor.engine.xa. 3600 IN A 127.0.0.2" # Taken from the zone
}
# For scenario GOOD-CNAME-OUT-OF-ZONE
template IN A good-cname-out-of-zone.cname.recursor.engine.xa {
answer "good-cname-out-of-zone.cname.recursor.engine.xa. 3600 IN CNAME target.goodsub.cname.recursor.engine.xa."
authority "goodsub.cname.recursor.engine.xa. 3600 IN NS ns1.goodsub.cname.recursor.engine.xa."
additional "ns1.goodsub.cname.recursor.engine.xa 3600 IN A 127.30.1.34"
additional "ns1.goodsub.cname.recursor.engine.xa 3600 IN AAAA fda1:b2:c3::127:30:1:34"
}
# For scenario NXDOMAIN-VIA-CNAME
template IN A nxdomain-via-cname.cname.recursor.engine.xa {
answer "nxdomain-via-cname.cname.recursor.engine.xa. 3600 IN CNAME nxdomain-via-cname-target.cname.recursor.engine.xa."
authority "cname.recursor.engine.xa. 3600 IN SOA ns1.cname.recursor.engine.xa. root.cname.recursor.engine.xa. 2023111502 86400 14400 3600000 3600"
}
# For scenario NODATA-VIA-CNAME
template IN A nodata-via-cname.cname.recursor.engine.xa {
answer "nodata-via-cname.cname.recursor.engine.xa. 3600 IN CNAME nodata-via-cname-target.cname.recursor.engine.xa."
authority "cname.recursor.engine.xa. 3600 IN SOA ns1.cname.recursor.engine.xa. root.cname.recursor.engine.xa. 2023111502 86400 14400 3600000 3600"
}
# For scenario LOOPED-CNAME-IN-ZONE-2
template IN ANY looped-cname-in-zone-2.cname.recursor.engine.xa {
answer "looped-cname-in-zone-2.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-2-a.cname.recursor.engine.xa."
answer "looped-cname-in-zone-2-a.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-2-b.cname.recursor.engine.xa."
answer "looped-cname-in-zone-2-b.cname.recursor.engine.xa. 3600 IN CNAME looped-cname-in-zone-2-a.cname.recursor.engine.xa."
authority "cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa."
}
# For scenario TOO-LONG-CNAME-CHAIN
template IN A too-long-cname-chain.cname.recursor.engine.xa {
answer "too-long-cname-chain.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-two.cname.recursor.engine.xa."
answer "too-long-cname-chain-two.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-three.cname.recursor.engine.xa."
answer "too-long-cname-chain-three.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-four.cname.recursor.engine.xa."
answer "too-long-cname-chain-four.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-five.cname.recursor.engine.xa."
answer "too-long-cname-chain-five.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-six.cname.recursor.engine.xa."
answer "too-long-cname-chain-six.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-seven.cname.recursor.engine.xa."
answer "too-long-cname-chain-seven.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-eight.cname.recursor.engine.xa."
answer "too-long-cname-chain-eight.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-nine.cname.recursor.engine.xa."
answer "too-long-cname-chain-nine.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-ten.cname.recursor.engine.xa."
answer "too-long-cname-chain-ten.cname.recursor.engine.xa. 3600 IN CNAME too-long-cname-chain-target.cname.recursor.engine.xa."
answer "too-long-cname-chain-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1"
authority "cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa."
}
# For scenario TARGET-NO-MATCH-CNAME
template IN A target-no-match-cname.cname.recursor.engine.xa {
answer "target-no-match-cname.cname.recursor.engine.xa. 3600 IN CNAME target-no-match-cname-two.cname.recursor.engine.xa."
answer "target-no-match-cname-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1"
authority "cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa."
}
# For scenario BROKEN-CNAME-CHAIN
template IN A broken-cname-chain.cname.recursor.engine.xa {
answer "broken-cname-chain.cname.recursor.engine.xa. 3600 IN CNAME broken-cname-chain-two.cname.recursor.engine.xa."
answer "broken-cname-chain-three.cname.recursor.engine.xa. 3600 IN CNAME broken-cname-chain-target.cname.recursor.engine.xa."
#answer "broken-cname-chain-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1" # Taken from the zone
authority "cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa."
}
# For scenario WRONG-CNAME-OWNER-NAME
template IN A wrong-cname-owner-name.cname.recursor.engine.xa {
answer "wrong-cname-owner-name-1.cname.recursor.engine.xa. 3600 IN CNAME wrong-cname-owner-name-target.cname.recursor.engine.xa."
#answer "wrong-cname-owner-name-target.cname.recursor.engine.xa. 3600 IN A 127.0.0.1" # Taken from the zone
authority "cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa."
}
# For scenario EXTRA-CNAME-IN-ANSWER
template IN A extra-cname-in-answer.cname.recursor.engine.xa {
answer "extra-cname-in-answer.cname.recursor.engine.xa. 3600 IN A 127.0.0.1"
answer "extra-cname-in-answer-1.cname.recursor.engine.xa. 3600 IN CNAME extra-cname-in-answer-2.cname.recursor.engine.xa."
authority "cname.recursor.engine.xa. 3600 IN NS ns1.cname.recursor.engine.xa."
}
}
# ns1 sub2.cname.recursor.engine.xa
sub2.cname.recursor.engine.xa:53 {
bind 127.30.1.32
bind fda1:b2:c3:0:127:30:1:32
log
file Engine/Recursor-PM/sub2.cname.recursor.engine.xa sub2.cname.recursor.engine.xa.
}
# ns1 sub3.cname.recursor.engine.xa
sub3.cname.recursor.engine.xa:53 {
bind 127.30.1.33
bind fda1:b2:c3:0:127:30:1:33
log
file Engine/Recursor-PM/sub3.cname.recursor.engine.xa sub3.cname.recursor.engine.xa.
}
# ns1 goodsub.ns1 cname.recursor.engine.xa
goodsub.cname.recursor.engine.xa:53 {
bind 127.30.1.34
bind fda1:b2:c3:0:127:30:1:34
log
file Engine/Recursor-PM/goodsub.cname.recursor.engine.xa goodsub.cname.recursor.engine.xa.
}

View File

@@ -0,0 +1,24 @@
$TTL 3600
$ORIGIN recursor.engine.xa.
@ SOA (
ns1
root
2023103100
86400
14400
3600000
3600
)
@ NS ns1
ns1 A 127.30.1.21
ns1 AAAA fda1:b2:c3:0:127:30:1:21
ns2 A 127.30.1.22
ns2 AAAA fda1:b2:c3:0:127:30:1:22
$ORIGIN cname.recursor.engine.xa.
@ NS ns1
ns1 A 127.30.1.31
ns1 AAAA fda1:b2:c3:0:127:30:1:31

View File

@@ -0,0 +1,20 @@
$TTL 3600
$ORIGIN sub2.cname.recursor.engine.xa.
@ SOA (
ns1
root
2023103100
86400
14400
3600000
3600
)
@ NS ns1
ns1 A 127.30.1.32
ns1 AAAA fda1:b2:c3:0:127:30:1:32
; For scenario LOOPED-CNAME-OUT-OF-ZONE
looped-cname-out-of-zone CNAME looped-cname-out-of-zone.sub3.cname.recursor.engine.xa.

View File

@@ -0,0 +1,21 @@
$TTL 3600
$ORIGIN sub3.cname.recursor.engine.xa.
@ SOA (
ns1
root
2023103100
86400
14400
3600000
3600
)
@ NS ns1
ns1 A 127.30.1.33
ns1 AAAA fda1:b2:c3:0:127:30:1:33
; For scenario LOOPED-CNAME-OUT-OF-ZONE
looped-cname-out-of-zone CNAME looped-cname-out-of-zone.sub2.cname.recursor.engine.xa.