mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-23 10:37:43 -04:00
Rewrite xfer system test to pytest
This commit is contained in:
parent
fd14acc7fd
commit
bf0df8b7f4
24 changed files with 1103 additions and 1283 deletions
|
|
@ -166,6 +166,15 @@ class NamedInstance:
|
|||
watcher.wait_for_line("any newly configured zones are now loaded")
|
||||
return cmd
|
||||
|
||||
def reload(self, **kwargs) -> CmdResult:
|
||||
"""
|
||||
Reload this named `instance` and wait until reload is finished.
|
||||
"""
|
||||
with self.watch_log_from_here() as watcher:
|
||||
cmd = self.rndc("reload", **kwargs)
|
||||
watcher.wait_for_line("all zones loaded")
|
||||
return cmd
|
||||
|
||||
def stop(self, args: Optional[List[str]] = None) -> None:
|
||||
"""Stop the instance."""
|
||||
args = args or []
|
||||
|
|
|
|||
|
|
@ -1,3 +0,0 @@
|
|||
messages=16
|
||||
records=10003
|
||||
bytes=218403
|
||||
|
|
@ -1,186 +0,0 @@
|
|||
example. 86400 IN SOA ns2.example. hostmaster.example. 1397051952 5 5 1814400 3600
|
||||
example. 3600 IN NS ns2.example.
|
||||
example. 3600 IN NS ns3.example.
|
||||
example. 3600 IN DNSKEY 512 255 1 AQMFD5raczCJHViKtLYhWGz8hMY9UGRuniJDBzC7w0aRyzWZriO6i2od GWWQVucZqKVsENW91IOW4vqudngPZsY3GvQ/xVA8/7pyFj6b7Esga60z yGW6LFe9r8n6paHrlG5ojqf0BaqHT+8=
|
||||
a01.example. 3600 IN A 0.0.0.0
|
||||
a02.example. 3600 IN A 255.255.255.255
|
||||
a601.example. 3600 IN A6 0 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
|
||||
a601.example. 3600 IN A6 64 ::ffff:ffff:ffff:ffff foo.
|
||||
a601.example. 3600 IN A6 127 ::1 foo.
|
||||
a601.example. 3600 IN A6 128 .
|
||||
aaaa01.example. 3600 IN AAAA ::1
|
||||
aaaa02.example. 3600 IN AAAA fd92:7065:b8e:ffff::5
|
||||
afsdb01.example. 3600 IN AFSDB 0 hostname.example.
|
||||
afsdb02.example. 3600 IN AFSDB 65535 .
|
||||
amtrelay01.example. 3600 IN AMTRELAY 0 0 0 .
|
||||
amtrelay02.example. 3600 IN AMTRELAY 0 1 0 .
|
||||
amtrelay03.example. 3600 IN AMTRELAY 0 0 1 0.0.0.0
|
||||
amtrelay04.example. 3600 IN AMTRELAY 0 0 2 ::
|
||||
amtrelay05.example. 3600 IN AMTRELAY 0 0 3 example.net.
|
||||
amtrelay06.example. 3600 IN AMTRELAY \# 2 0004
|
||||
apl01.example. 3600 IN APL !1:10.0.0.1/32 1:10.0.0.0/24
|
||||
apl02.example. 3600 IN APL
|
||||
atma01.example. 3600 IN ATMA +61200000000
|
||||
atma02.example. 3600 IN ATMA +61200000000
|
||||
atma03.example. 3600 IN ATMA 1234567890abcdef
|
||||
atma04.example. 3600 IN ATMA fedcba0987654321
|
||||
avc.example. 3600 IN AVC "foo:bar"
|
||||
brid.example. 3600 IN BRID abcd
|
||||
caa01.example. 3600 IN CAA 0 issue "ca.example.net; policy=ev"
|
||||
caa02.example. 3600 IN CAA 128 tbs "Unknown"
|
||||
caa03.example. 3600 IN CAA 128 tbs ""
|
||||
cdnskey01.example. 3600 IN CDNSKEY 512 255 1 AQMFD5raczCJHViKtLYhWGz8hMY9UGRuniJDBzC7w0aRyzWZriO6i2od GWWQVucZqKVsENW91IOW4vqudngPZsY3GvQ/xVA8/7pyFj6b7Esga60z yGW6LFe9r8n6paHrlG5ojqf0BaqHT+8=
|
||||
cds01.example. 3600 IN CDS 30795 1 1 310D27F4D82C1FC2400704EA9939FE6E1CEAA3B9
|
||||
cert01.example. 3600 IN CERT 65534 65535 PRIVATEOID MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6V AuHAoNUz4YoU1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY=
|
||||
cname01.example. 3600 IN CNAME cname-target.
|
||||
cname02.example. 3600 IN CNAME cname-target.example.
|
||||
cname03.example. 3600 IN CNAME .
|
||||
csync01.example. 3600 IN CSYNC 0 0 A NS AAAA
|
||||
csync02.example. 3600 IN CSYNC 0 0
|
||||
dhcid01.example. 3600 IN DHCID AAIBY2/AuCccgoJbsaxcQc9TUapptP69lOjxfNuVAA2kjEA=
|
||||
dhcid02.example. 3600 IN DHCID AAEBOSD+XR3Os/0LozeXVqcNc7FwCfQdWL3b/NaiUDlW2No=
|
||||
dhcid03.example. 3600 IN DHCID AAABxLmlskllE0MVjd57zHcWmEH3pCQ6VytcKD//7es/deY=
|
||||
dlv.example. 3600 IN DLV 30795 1 1 310D27F4D82C1FC2400704EA9939FE6E1CEAA3B9
|
||||
dname01.example. 3600 IN DNAME dname-target.
|
||||
dname02.example. 3600 IN DNAME dname-target.example.
|
||||
dname03.example. 3600 IN DNAME .
|
||||
doa01.example. 3600 IN DOA 1234567890 1234567890 1 "image/gif" R0lGODlhKAAZAOMCAGZmZgBmmf///zOZzMz//5nM/zNmmWbM/5nMzMzMzACZ/////////////////////yH5BAEKAA8ALAAAAAAoABkAAATH8IFJK5U2a4337F5ogRkpnoCJrly7PrCKyh8c3HgAhzT35MDbbtO7/IJIHbGiOiaTxVTpSVWWLqNq1UVyapNS1wd3OAxug0LhnCubcVhsxysQnOt4ATpvvzHlFzl1AwODhWeFAgRpen5/UhheAYMFdUB4SFcpGEGGdQeCAqBBLTuSk30EeXd9pEsAbKGxjHqDSE0Sp6ixN4N1BJmbc7lIhmsBich1awPAjkY1SZR8bJWrz382SGqIBQQFQd4IsUTaX+ceuudPEQA7
|
||||
doa02.example. 3600 IN DOA 0 1 2 "" aHR0cHM6Ly93d3cuaXNjLm9yZy8=
|
||||
ds01.example. 3600 IN DS 12892 5 2 26584835CA80C81C91999F31CFAF2A0E89D4FF1C8FAFD0DDB31A85C7 19277C13
|
||||
ds01.example. 3600 IN NS ns42.example.
|
||||
ds02.example. 3600 IN DS 12892 5 1 7AA4A3F416C2F2391FB7AB0D434F762CD62D1390
|
||||
ds02.example. 3600 IN NS ns43.example.
|
||||
dsync01.example. 3600 IN DSYNC CDS NOTIFY 53 .
|
||||
eid01.example. 3600 IN EID 1289AB
|
||||
eui48.example. 3600 IN EUI48 01-23-45-67-89-ab
|
||||
eui64.example. 3600 IN EUI64 01-23-45-67-89-ab-cd-ef
|
||||
gid01.example. 3600 IN GID \# 1 03
|
||||
gpos01.example. 3600 IN GPOS "-22.6882" "116.8652" "250.0"
|
||||
gpos02.example. 3600 IN GPOS "" "" ""
|
||||
hhit.example. 3600 IN HHIT abcd
|
||||
hinfo01.example. 3600 IN HINFO "Generic PC clone" "NetBSD-1.4"
|
||||
hinfo02.example. 3600 IN HINFO "PC" "NetBSD"
|
||||
hip1.example. 3600 IN HIP 2 200100107B1A74DF365639CC39F1D578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D
|
||||
hip2.example. 3600 IN HIP 2 200100107B1A74DF365639CC39F1D578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D rvs.example.com.
|
||||
https0.example. 3600 IN HTTPS 0 example.net.
|
||||
https1.example. 3600 IN HTTPS 1 . port=60
|
||||
ipseckey01.example. 3600 IN IPSECKEY 10 1 2 192.0.2.38 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
|
||||
ipseckey02.example. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
|
||||
ipseckey03.example. 3600 IN IPSECKEY 10 1 2 192.0.2.3 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
|
||||
ipseckey04.example. 3600 IN IPSECKEY 10 3 2 mygateway.example.com. AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
|
||||
ipseckey05.example. 3600 IN IPSECKEY 10 2 2 2001:db8:0:8002::2000:1 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
|
||||
isdn01.example. 3600 IN ISDN "isdn-address"
|
||||
isdn02.example. 3600 IN ISDN "isdn-address" "subaddress"
|
||||
isdn03.example. 3600 IN ISDN "isdn-address"
|
||||
isdn04.example. 3600 IN ISDN "isdn-address" "subaddress"
|
||||
keydata.example. 3600 IN TYPE65533 \# 0
|
||||
keydata.example. 3600 IN TYPE65533 \# 6 010203040506
|
||||
keydata.example. 3600 IN TYPE65533 \# 18 010203040506010203040506010203040506
|
||||
kx01.example. 3600 IN KX 10 kdc.example.
|
||||
kx02.example. 3600 IN KX 10 .
|
||||
l32.example. 3600 IN L32 10 1.2.3.4
|
||||
l64.example. 3600 IN L64 10 14:4fff:ff20:ee64
|
||||
loc01.example. 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20m 2000m 20m
|
||||
loc02.example. 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20m 2000m 20m
|
||||
lp.example. 3600 IN LP 10 example.net.
|
||||
mb01.example. 3600 IN MG madname.example.
|
||||
mb02.example. 3600 IN MG .
|
||||
mg01.example. 3600 IN MG mgmname.example.
|
||||
mg02.example. 3600 IN MG .
|
||||
minfo01.example. 3600 IN MINFO rmailbx.example. emailbx.example.
|
||||
minfo02.example. 3600 IN MINFO . .
|
||||
mr01.example. 3600 IN MR mrname.example.
|
||||
mr02.example. 3600 IN MR .
|
||||
mx01.example. 3600 IN MX 10 mail.example.
|
||||
mx02.example. 3600 IN MX 10 .
|
||||
naptr01.example. 3600 IN NAPTR 0 0 "" "" "" .
|
||||
naptr02.example. 3600 IN NAPTR 65535 65535 "blurgh" "blorf" "blllbb" foo.
|
||||
nid.example. 3600 IN NID 10 14:4fff:ff20:ee64
|
||||
nimloc01.example. 3600 IN NIMLOC 1289AB
|
||||
ninfo01.example. 3600 IN NINFO "foo"
|
||||
ninfo02.example. 3600 IN NINFO "foo" "bar"
|
||||
ninfo03.example. 3600 IN NINFO "foo"
|
||||
ninfo04.example. 3600 IN NINFO "foo" "bar"
|
||||
ninfo05.example. 3600 IN NINFO "foo bar"
|
||||
ninfo06.example. 3600 IN NINFO "foo bar"
|
||||
ninfo07.example. 3600 IN NINFO "foo bar"
|
||||
ninfo08.example. 3600 IN NINFO "foo\010bar"
|
||||
ninfo09.example. 3600 IN NINFO "foo\010bar"
|
||||
ninfo10.example. 3600 IN NINFO "foo bar"
|
||||
ninfo11.example. 3600 IN NINFO "\"foo\""
|
||||
ninfo12.example. 3600 IN NINFO "\"foo\""
|
||||
ninfo13.example. 3600 IN NINFO "foo;"
|
||||
ninfo14.example. 3600 IN NINFO "foo;"
|
||||
ninfo15.example. 3600 IN NINFO "bar\\;"
|
||||
ns2.example. 3600 IN A 10.53.0.2
|
||||
ns3.example. 3600 IN A 10.53.0.3
|
||||
nsap-ptr01.example. 3600 IN NSAP-PTR foo.
|
||||
nsap-ptr01.example. 3600 IN NSAP-PTR .
|
||||
nsap01.example. 3600 IN NSAP 0x47000580005a0000000001e133ffffff00016100
|
||||
nsap02.example. 3600 IN NSAP 0x47000580005a0000000001e133ffffff00016100
|
||||
nsec01.example. 3600 IN NSEC a.secure.nil. NS SOA MX LOC RRSIG NSEC DNSKEY
|
||||
nsec02.example. 3600 IN NSEC . NSAP-PTR NSEC
|
||||
nsec03.example. 3600 IN NSEC . A
|
||||
nsec04.example. 3600 IN NSEC . TYPE127
|
||||
openpgpkey.example. 3600 IN OPENPGPKEY AQMFD5raczCJHViKtLYhWGz8hMY9UGRuniJDBzC7w0aRyzWZriO6i2od GWWQVucZqKVsENW91IOW4vqudngPZsY3GvQ/xVA8/7pyFj6b7Esga60z yGW6LFe9r8n6paHrlG5ojqf0BaqHT+8=
|
||||
ptr01.example. 3600 IN PTR example.
|
||||
px01.example. 3600 IN PX 65535 foo. bar.
|
||||
px02.example. 3600 IN PX 65535 . .
|
||||
resinfo.example. 3600 IN RESINFO "qnamemin" "exterr=15,16,17" "infourl=https://resolver.example.com/guide"
|
||||
rkey01.example. 3600 IN RKEY 0 255 1 AQMFD5raczCJHViKtLYhWGz8hMY9UGRuniJDBzC7w0aRyzWZriO6i2od GWWQVucZqKVsENW91IOW4vqudngPZsY3GvQ/xVA8/7pyFj6b7Esga60z yGW6LFe9r8n6paHrlG5ojqf0BaqHT+8=
|
||||
rp01.example. 3600 IN RP mbox-dname.example. txt-dname.example.
|
||||
rp02.example. 3600 IN RP . .
|
||||
rrsig01.example. 3600 IN RRSIG NSEC 1 3 3600 20000102030405 19961211100908 2143 foo.nil. MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6V AuHAoNUz4YoU1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY=
|
||||
rt01.example. 3600 IN RT 0 intermediate-host.example.
|
||||
rt02.example. 3600 IN RT 65535 .
|
||||
sink01.example. 3600 IN SINK 1 0 0
|
||||
sink02.example. 3600 IN SINK 8 0 2 l4ik
|
||||
smimea.example. 3600 IN SMIMEA 1 1 2 92003BA34942DC74152E2F2C408D29ECA5A520E7F2E06BB944F4DCA3 46BAF63C1B177615D466F6C4B71C216A50292BD58C9EBDD2F74E38FE 51FFD48C43326CBC
|
||||
spf01.example. 3600 IN SPF "v=spf1 -all"
|
||||
spf02.example. 3600 IN SPF "v=spf1" " -all"
|
||||
srv01.example. 3600 IN SRV 0 0 0 .
|
||||
srv02.example. 3600 IN SRV 65535 65535 65535 old-slow-box.example.
|
||||
sshfp01.example. 3600 IN SSHFP 4 2 C76D8329954DA2835751E371544E963EFDA099080D6C58DD2BFD9A31 6E162C83
|
||||
sshfp02.example. 3600 IN SSHFP 1 2 BF29468C83AC58CCF8C85AB7B3BEB054ECF1E38512B8353AB36471FA 88961DCC
|
||||
svcb0.example. 3600 IN SVCB 0 example.net.
|
||||
svcb1.example. 3600 IN SVCB 1 . port=60
|
||||
ta.example. 3600 IN TA 30795 1 1 310D27F4D82C1FC2400704EA9939FE6E1CEAA3B9
|
||||
talink0.example. 3600 IN TALINK . talink1.example.
|
||||
talink1.example. 3600 IN TALINK talink0.example. talink2.example.
|
||||
talink2.example. 3600 IN TALINK talink2.example. .
|
||||
tlsa.example. 3600 IN TLSA 1 1 2 92003BA34942DC74152E2F2C408D29ECA5A520E7F2E06BB944F4DCA3 46BAF63C1B177615D466F6C4B71C216A50292BD58C9EBDD2F74E38FE 51FFD48C43326CBC
|
||||
txt01.example. 3600 IN TXT "foo"
|
||||
txt02.example. 3600 IN TXT "foo" "bar"
|
||||
txt03.example. 3600 IN TXT "foo"
|
||||
txt04.example. 3600 IN TXT "foo" "bar"
|
||||
txt05.example. 3600 IN TXT "foo bar"
|
||||
txt06.example. 3600 IN TXT "foo bar"
|
||||
txt07.example. 3600 IN TXT "foo bar"
|
||||
txt08.example. 3600 IN TXT "foo\010bar"
|
||||
txt09.example. 3600 IN TXT "foo\010bar"
|
||||
txt10.example. 3600 IN TXT "foo bar"
|
||||
txt11.example. 3600 IN TXT "\"foo\""
|
||||
txt12.example. 3600 IN TXT "\"foo\""
|
||||
txt13.example. 3600 IN TXT "foo;"
|
||||
txt14.example. 3600 IN TXT "foo;"
|
||||
txt15.example. 3600 IN TXT "bar\\;"
|
||||
uid01.example. 3600 IN UID \# 1 02
|
||||
uinfo01.example. 3600 IN UINFO \# 1 01
|
||||
unspec01.example. 3600 IN UNSPEC \# 1 04
|
||||
uri01.example. 3600 IN URI 10 20 "https://www.isc.org/"
|
||||
uri02.example. 3600 IN URI 30 40 "https://www.isc.org/HolyCowThisSureIsAVeryLongURIRecordIDontEvenKnowWhatSomeoneWouldEverWantWithSuchAThingButTheSpecificationRequiresThatWesupportItSoHereWeGoTestingItLaLaLaLaLaLaLaSeriouslyThoughWhyWouldYouEvenConsiderUsingAURIThisLongItSeemsLikeASillyIdeaButEnhWhatAreYouGonnaDo/"
|
||||
uri03.example. 3600 IN URI 30 40 ""
|
||||
wallet.example. 3600 IN WALLET "currency-identifer" "wallet-identifier"
|
||||
wallet-multiple.example. 3600 IN WALLET "currency-identifer1" "wallet-identifier1"
|
||||
wallet-multiple.example. 3600 IN WALLET "currency-identifer1" "wallet-identifier2"
|
||||
wallet-multiple.example. 3600 IN WALLET "currency-identifer2" "wallet-identifier3"
|
||||
wks01.example. 3600 IN WKS 10.0.0.1 6 0 1 2 21 23
|
||||
wks02.example. 3600 IN WKS 10.0.0.1 17 0 1 2 53
|
||||
wks03.example. 3600 IN WKS 10.0.0.2 6 65535
|
||||
x2501.example. 3600 IN X25 "123456789"
|
||||
zonemd01.example. 3600 IN ZONEMD 2019020700 1 1 C220B8A6ED5728A971902F7E3D4FD93ADEEA88B0453C2E8E8C863D46 5AB06CF34EB95B266398C98B59124FA239CB7EEB
|
||||
zonemd02.example. 3600 IN ZONEMD 2019020700 1 2 08CFA1115C7B948C4163A901270395EA226A930CD2CBCF2FA9A5E6EB 85F37C8A4E114D884E66F176EAB121CB02DB7D652E0CC4827E7A3204 F166B47E5613FD27
|
||||
8f1tmio9avcom2k0frp92lgcumak0cad.example. 3600 IN NSEC3 1 0 10 D2CF0294C020CE6C 8FPNS2UCT7FBS643THP2B77PEQ77K6IU A NS SOA MX AAAA RRSIG DNSKEY NSEC3PARAM
|
||||
kcd3juae64f9c5csl1kif1htaui7un0g.example. 3600 IN NSEC3 1 0 10 D2CF0294C020CE6C KD5MN2M20340DGO0BL7NTSB8JP4BSC7E
|
||||
mr5ukvsk1l37btu4q7b1dfevft4hkqdk.example. 3600 IN NSEC3 1 0 10 D2CF0294C020CE6C MT38J6VG7S0SN5G17MCUF6IQIKFUAJ05 A AAAA RRSIG
|
||||
example. 86400 IN SOA ns2.example. hostmaster.example. 1397051952 5 5 1814400 3600
|
||||
|
|
@ -1,186 +0,0 @@
|
|||
example. 86400 IN SOA ns2.example. hostmaster.example. 1397051953 5 5 1814400 3600
|
||||
example. 3600 IN NS ns2.example.
|
||||
example. 3600 IN NS ns3.example.
|
||||
example. 3600 IN DNSKEY 512 255 1 AQMFD5raczCJHViKtLYhWGz8hMY9UGRuniJDBzC7w0aRyzWZriO6i2od GWWQVucZqKVsENW91IOW4vqudngPZsY3GvQ/xVA8/7pyFj6b7Esga60z yGW6LFe9r8n6paHrlG5ojqf0BaqHT+8=
|
||||
a01.example. 3600 IN A 0.0.0.1
|
||||
a02.example. 3600 IN A 255.255.255.255
|
||||
a601.example. 3600 IN A6 0 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
|
||||
a601.example. 3600 IN A6 64 ::ffff:ffff:ffff:ffff foo.
|
||||
a601.example. 3600 IN A6 127 ::1 foo.
|
||||
a601.example. 3600 IN A6 128 .
|
||||
aaaa01.example. 3600 IN AAAA ::1
|
||||
aaaa02.example. 3600 IN AAAA fd92:7065:b8e:ffff::5
|
||||
afsdb01.example. 3600 IN AFSDB 0 hostname.example.
|
||||
afsdb02.example. 3600 IN AFSDB 65535 .
|
||||
amtrelay01.example. 3600 IN AMTRELAY 0 0 0 .
|
||||
amtrelay02.example. 3600 IN AMTRELAY 0 1 0 .
|
||||
amtrelay03.example. 3600 IN AMTRELAY 0 0 1 0.0.0.1
|
||||
amtrelay04.example. 3600 IN AMTRELAY 0 0 2 ::
|
||||
amtrelay05.example. 3600 IN AMTRELAY 0 0 3 example.net.
|
||||
amtrelay06.example. 3600 IN AMTRELAY \# 2 0004
|
||||
apl01.example. 3600 IN APL !1:10.0.0.1/32 1:10.0.0.1/24
|
||||
apl02.example. 3600 IN APL
|
||||
atma01.example. 3600 IN ATMA +61200000000
|
||||
atma02.example. 3600 IN ATMA +61200000000
|
||||
atma03.example. 3600 IN ATMA 1234567890abcdef
|
||||
atma04.example. 3600 IN ATMA fedcba0987654321
|
||||
avc.example. 3600 IN AVC "foo:bar"
|
||||
brid.example. 3600 IN BRID abcd
|
||||
caa01.example. 3600 IN CAA 0 issue "ca.example.net; policy=ev"
|
||||
caa02.example. 3600 IN CAA 128 tbs "Unknown"
|
||||
caa03.example. 3600 IN CAA 128 tbs ""
|
||||
cdnskey01.example. 3600 IN CDNSKEY 512 255 1 AQMFD5raczCJHViKtLYhWGz8hMY9UGRuniJDBzC7w0aRyzWZriO6i2od GWWQVucZqKVsENW91IOW4vqudngPZsY3GvQ/xVA8/7pyFj6b7Esga60z yGW6LFe9r8n6paHrlG5ojqf0BaqHT+8=
|
||||
cds01.example. 3600 IN CDS 30795 1 1 310D27F4D82C1FC2400704EA9939FE6E1CEAA3B9
|
||||
cert01.example. 3600 IN CERT 65534 65535 PRIVATEOID MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6V AuHAoNUz4YoU1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY=
|
||||
cname01.example. 3600 IN CNAME cname-target.
|
||||
cname02.example. 3600 IN CNAME cname-target.example.
|
||||
cname03.example. 3600 IN CNAME .
|
||||
csync01.example. 3600 IN CSYNC 0 0 A NS AAAA
|
||||
csync02.example. 3600 IN CSYNC 0 0
|
||||
dhcid01.example. 3600 IN DHCID AAIBY2/AuCccgoJbsaxcQc9TUapptP69lOjxfNuVAA2kjEA=
|
||||
dhcid02.example. 3600 IN DHCID AAEBOSD+XR3Os/0LozeXVqcNc7FwCfQdWL3b/NaiUDlW2No=
|
||||
dhcid03.example. 3600 IN DHCID AAABxLmlskllE0MVjd57zHcWmEH3pCQ6VytcKD//7es/deY=
|
||||
dlv.example. 3600 IN DLV 30795 1 1 310D27F4D82C1FC2400704EA9939FE6E1CEAA3B9
|
||||
dname01.example. 3600 IN DNAME dname-target.
|
||||
dname02.example. 3600 IN DNAME dname-target.example.
|
||||
dname03.example. 3600 IN DNAME .
|
||||
doa01.example. 3600 IN DOA 1234567890 1234567890 1 "image/gif" R0lGODlhKAAZAOMCAGZmZgBmmf///zOZzMz//5nM/zNmmWbM/5nMzMzMzACZ/////////////////////yH5BAEKAA8ALAAAAAAoABkAAATH8IFJK5U2a4337F5ogRkpnoCJrly7PrCKyh8c3HgAhzT35MDbbtO7/IJIHbGiOiaTxVTpSVWWLqNq1UVyapNS1wd3OAxug0LhnCubcVhsxysQnOt4ATpvvzHlFzl1AwODhWeFAgRpen5/UhheAYMFdUB4SFcpGEGGdQeCAqBBLTuSk30EeXd9pEsAbKGxjHqDSE0Sp6ixN4N1BJmbc7lIhmsBich1awPAjkY1SZR8bJWrz382SGqIBQQFQd4IsUTaX+ceuudPEQA7
|
||||
doa02.example. 3600 IN DOA 0 1 2 "" aHR0cHM6Ly93d3cuaXNjLm9yZy8=
|
||||
ds01.example. 3600 IN NS ns42.example.
|
||||
ds01.example. 3600 IN DS 12892 5 2 26584835CA80C81C91999F31CFAF2A0E89D4FF1C8FAFD0DDB31A85C7 19277C13
|
||||
ds02.example. 3600 IN NS ns43.example.
|
||||
ds02.example. 3600 IN DS 12892 5 1 7AA4A3F416C2F2391FB7AB0D434F762CD62D1390
|
||||
dsync01.example. 3600 IN DSYNC CDS NOTIFY 53 .
|
||||
eid01.example. 3600 IN EID 1289AB
|
||||
eui48.example. 3600 IN EUI48 01-23-45-67-89-ab
|
||||
eui64.example. 3600 IN EUI64 01-23-45-67-89-ab-cd-ef
|
||||
gid01.example. 3600 IN GID \# 1 03
|
||||
gpos01.example. 3600 IN GPOS "-22.6882" "116.8652" "250.0"
|
||||
gpos02.example. 3600 IN GPOS "" "" ""
|
||||
hhit.example. 3600 IN HHIT abcd
|
||||
hinfo01.example. 3600 IN HINFO "Generic PC clone" "NetBSD-1.4"
|
||||
hinfo02.example. 3600 IN HINFO "PC" "NetBSD"
|
||||
hip1.example. 3600 IN HIP 2 200100107B1A74DF365639CC39F1D578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D
|
||||
hip2.example. 3600 IN HIP 2 200100107B1A74DF365639CC39F1D578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D rvs.example.com.
|
||||
https0.example. 3600 IN HTTPS 0 example.net.
|
||||
https1.example. 3600 IN HTTPS 1 . port=60
|
||||
ipseckey01.example. 3600 IN IPSECKEY 10 1 2 192.0.2.38 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
|
||||
ipseckey02.example. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
|
||||
ipseckey03.example. 3600 IN IPSECKEY 10 1 2 192.0.2.3 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
|
||||
ipseckey04.example. 3600 IN IPSECKEY 10 3 2 mygateway.example.com. AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
|
||||
ipseckey05.example. 3600 IN IPSECKEY 10 2 2 2001:db8:0:8002::2000:1 AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==
|
||||
isdn01.example. 3600 IN ISDN "isdn-address"
|
||||
isdn02.example. 3600 IN ISDN "isdn-address" "subaddress"
|
||||
isdn03.example. 3600 IN ISDN "isdn-address"
|
||||
isdn04.example. 3600 IN ISDN "isdn-address" "subaddress"
|
||||
keydata.example. 3600 IN TYPE65533 \# 0
|
||||
keydata.example. 3600 IN TYPE65533 \# 6 010203040506
|
||||
keydata.example. 3600 IN TYPE65533 \# 18 010203040506010203040506010203040506
|
||||
kx01.example. 3600 IN KX 10 kdc.example.
|
||||
kx02.example. 3600 IN KX 10 .
|
||||
l32.example. 3600 IN L32 10 1.2.3.4
|
||||
l64.example. 3600 IN L64 10 14:4fff:ff20:ee64
|
||||
loc01.example. 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20m 2000m 20m
|
||||
loc02.example. 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20m 2000m 20m
|
||||
lp.example. 3600 IN LP 10 example.net.
|
||||
mb01.example. 3600 IN MG madname.example.
|
||||
mb02.example. 3600 IN MG .
|
||||
mg01.example. 3600 IN MG mgmname.example.
|
||||
mg02.example. 3600 IN MG .
|
||||
minfo01.example. 3600 IN MINFO rmailbx.example. emailbx.example.
|
||||
minfo02.example. 3600 IN MINFO . .
|
||||
mr01.example. 3600 IN MR mrname.example.
|
||||
mr02.example. 3600 IN MR .
|
||||
mx01.example. 3600 IN MX 10 mail.example.
|
||||
mx02.example. 3600 IN MX 10 .
|
||||
naptr01.example. 3600 IN NAPTR 0 0 "" "" "" .
|
||||
naptr02.example. 3600 IN NAPTR 65535 65535 "blurgh" "blorf" "blllbb" foo.
|
||||
nid.example. 3600 IN NID 10 14:4fff:ff20:ee64
|
||||
nimloc01.example. 3600 IN NIMLOC 1289AB
|
||||
ninfo01.example. 3600 IN NINFO "foo"
|
||||
ninfo02.example. 3600 IN NINFO "foo" "bar"
|
||||
ninfo03.example. 3600 IN NINFO "foo"
|
||||
ninfo04.example. 3600 IN NINFO "foo" "bar"
|
||||
ninfo05.example. 3600 IN NINFO "foo bar"
|
||||
ninfo06.example. 3600 IN NINFO "foo bar"
|
||||
ninfo07.example. 3600 IN NINFO "foo bar"
|
||||
ninfo08.example. 3600 IN NINFO "foo\010bar"
|
||||
ninfo09.example. 3600 IN NINFO "foo\010bar"
|
||||
ninfo10.example. 3600 IN NINFO "foo bar"
|
||||
ninfo11.example. 3600 IN NINFO "\"foo\""
|
||||
ninfo12.example. 3600 IN NINFO "\"foo\""
|
||||
ninfo13.example. 3600 IN NINFO "foo;"
|
||||
ninfo14.example. 3600 IN NINFO "foo;"
|
||||
ninfo15.example. 3600 IN NINFO "bar\\;"
|
||||
ns2.example. 3600 IN A 10.53.0.2
|
||||
ns3.example. 3600 IN A 10.53.0.3
|
||||
nsap-ptr01.example. 3600 IN NSAP-PTR foo.
|
||||
nsap-ptr01.example. 3600 IN NSAP-PTR .
|
||||
nsap01.example. 3600 IN NSAP 0x47000580005a0000000001e133ffffff00016100
|
||||
nsap02.example. 3600 IN NSAP 0x47000580005a0000000001e133ffffff00016100
|
||||
nsec01.example. 3600 IN NSEC a.secure.nil. NS SOA MX LOC RRSIG NSEC DNSKEY
|
||||
nsec02.example. 3600 IN NSEC . NSAP-PTR NSEC
|
||||
nsec03.example. 3600 IN NSEC . A
|
||||
nsec04.example. 3600 IN NSEC . TYPE127
|
||||
openpgpkey.example. 3600 IN OPENPGPKEY AQMFD5raczCJHViKtLYhWGz8hMY9UGRuniJDBzC7w0aRyzWZriO6i2od GWWQVucZqKVsENW91IOW4vqudngPZsY3GvQ/xVA8/7pyFj6b7Esga60z yGW6LFe9r8n6paHrlG5ojqf0BaqHT+8=
|
||||
ptr01.example. 3600 IN PTR example.
|
||||
px01.example. 3600 IN PX 65535 foo. bar.
|
||||
px02.example. 3600 IN PX 65535 . .
|
||||
resinfo.example. 3600 IN RESINFO "qnamemin" "exterr=15,16,17" "infourl=https://resolver.example.com/guide"
|
||||
rkey01.example. 3600 IN RKEY 0 255 1 AQMFD5raczCJHViKtLYhWGz8hMY9UGRuniJDBzC7w0aRyzWZriO6i2od GWWQVucZqKVsENW91IOW4vqudngPZsY3GvQ/xVA8/7pyFj6b7Esga60z yGW6LFe9r8n6paHrlG5ojqf0BaqHT+8=
|
||||
rp01.example. 3600 IN RP mbox-dname.example. txt-dname.example.
|
||||
rp02.example. 3600 IN RP . .
|
||||
rrsig01.example. 3600 IN RRSIG NSEC 1 3 3600 20000102030405 19961211100908 2143 foo.nil. MxFcby9k/yvedMfQgKzhH5er0Mu/vILz45IkskceFGgiWCn/GxHhai6V AuHAoNUz4YoU1tVfSCSqQYn6//11U6Nld80jEeC8aTrO+KKmCaY=
|
||||
rt01.example. 3600 IN RT 0 intermediate-host.example.
|
||||
rt02.example. 3600 IN RT 65535 .
|
||||
sink01.example. 3600 IN SINK 1 0 0
|
||||
sink02.example. 3600 IN SINK 8 0 2 l4ik
|
||||
smimea.example. 3600 IN SMIMEA 1 1 2 92003BA34942DC74152E2F2C408D29ECA5A520E7F2E06BB944F4DCA3 46BAF63C1B177615D466F6C4B71C216A50292BD58C9EBDD2F74E38FE 51FFD48C43326CBC
|
||||
spf01.example. 3600 IN SPF "v=spf1 -all"
|
||||
spf02.example. 3600 IN SPF "v=spf1" " -all"
|
||||
srv01.example. 3600 IN SRV 0 0 0 .
|
||||
srv02.example. 3600 IN SRV 65535 65535 65535 old-slow-box.example.
|
||||
sshfp01.example. 3600 IN SSHFP 4 2 C76D8329954DA2835751E371544E963EFDA099080D6C58DD2BFD9A31 6E162C83
|
||||
sshfp02.example. 3600 IN SSHFP 1 2 BF29468C83AC58CCF8C85AB7B3BEB054ECF1E38512B8353AB36471FA 88961DCC
|
||||
svcb0.example. 3600 IN SVCB 0 example.net.
|
||||
svcb1.example. 3600 IN SVCB 1 . port=60
|
||||
ta.example. 3600 IN TA 30795 1 1 310D27F4D82C1FC2400704EA9939FE6E1CEAA3B9
|
||||
talink0.example. 3600 IN TALINK . talink1.example.
|
||||
talink1.example. 3600 IN TALINK talink0.example. talink2.example.
|
||||
talink2.example. 3600 IN TALINK talink2.example. .
|
||||
tlsa.example. 3600 IN TLSA 1 1 2 92003BA34942DC74152E2F2C408D29ECA5A520E7F2E06BB944F4DCA3 46BAF63C1B177615D466F6C4B71C216A50292BD58C9EBDD2F74E38FE 51FFD48C43326CBC
|
||||
txt01.example. 3600 IN TXT "foo"
|
||||
txt02.example. 3600 IN TXT "foo" "bar"
|
||||
txt03.example. 3600 IN TXT "foo"
|
||||
txt04.example. 3600 IN TXT "foo" "bar"
|
||||
txt05.example. 3600 IN TXT "foo bar"
|
||||
txt06.example. 3600 IN TXT "foo bar"
|
||||
txt07.example. 3600 IN TXT "foo bar"
|
||||
txt08.example. 3600 IN TXT "foo\010bar"
|
||||
txt09.example. 3600 IN TXT "foo\010bar"
|
||||
txt10.example. 3600 IN TXT "foo bar"
|
||||
txt11.example. 3600 IN TXT "\"foo\""
|
||||
txt12.example. 3600 IN TXT "\"foo\""
|
||||
txt13.example. 3600 IN TXT "foo;"
|
||||
txt14.example. 3600 IN TXT "foo;"
|
||||
txt15.example. 3600 IN TXT "bar\\;"
|
||||
uid01.example. 3600 IN UID \# 1 02
|
||||
uinfo01.example. 3600 IN UINFO \# 1 01
|
||||
unspec01.example. 3600 IN UNSPEC \# 1 04
|
||||
uri01.example. 3600 IN URI 10 20 "https://www.isc.org/"
|
||||
uri02.example. 3600 IN URI 30 40 "https://www.isc.org/HolyCowThisSureIsAVeryLongURIRecordIDontEvenKnowWhatSomeoneWouldEverWantWithSuchAThingButTheSpecificationRequiresThatWesupportItSoHereWeGoTestingItLaLaLaLaLaLaLaSeriouslyThoughWhyWouldYouEvenConsiderUsingAURIThisLongItSeemsLikeASillyIdeaButEnhWhatAreYouGonnaDo/"
|
||||
uri03.example. 3600 IN URI 30 40 ""
|
||||
wallet.example. 3600 IN WALLET "currency-identifer" "wallet-identifier"
|
||||
wallet-multiple.example. 3600 IN WALLET "currency-identifer1" "wallet-identifier1"
|
||||
wallet-multiple.example. 3600 IN WALLET "currency-identifer1" "wallet-identifier2"
|
||||
wallet-multiple.example. 3600 IN WALLET "currency-identifer2" "wallet-identifier3"
|
||||
wks01.example. 3600 IN WKS 10.0.0.1 6 0 1 2 21 23
|
||||
wks02.example. 3600 IN WKS 10.0.0.1 17 0 1 2 53
|
||||
wks03.example. 3600 IN WKS 10.0.0.2 6 65535
|
||||
x2501.example. 3600 IN X25 "123456789"
|
||||
zonemd01.example. 3600 IN ZONEMD 2019020700 1 1 C220B8A6ED5728A971902F7E3D4FD93ADEEA88B0453C2E8E8C863D46 5AB06CF34EB95B266398C98B59124FA239CB7EEB
|
||||
zonemd02.example. 3600 IN ZONEMD 2019020700 1 2 08CFA1115C7B948C4163A901270395EA226A930CD2CBCF2FA9A5E6EB 85F37C8A4E114D884E66F176EAB121CB02DB7D652E0CC4827E7A3204 F166B47E5613FD27
|
||||
8f1tmio9avcom2k0frp92lgcumak0cad.example. 3600 IN NSEC3 1 0 10 D2CF0294C020CE6C 8FPNS2UCT7FBS643THP2B77PEQ77K6IU A NS SOA MX AAAA RRSIG DNSKEY NSEC3PARAM
|
||||
kcd3juae64f9c5csl1kif1htaui7un0g.example. 3600 IN NSEC3 1 0 10 D2CF0294C020CE6C KD5MN2M20340DGO0BL7NTSB8JP4BSC7E
|
||||
mr5ukvsk1l37btu4q7b1dfevft4hkqdk.example. 3600 IN NSEC3 1 0 10 D2CF0294C020CE6C MT38J6VG7S0SN5G17MCUF6IQIKFUAJ05 A AAAA RRSIG
|
||||
example. 86400 IN SOA ns2.example. hostmaster.example. 1397051953 5 5 1814400 3600
|
||||
|
|
@ -1,6 +1,4 @@
|
|||
|
||||
; <<>> DiG 9.10.2-P3 <<>> -p 5300 axfr mapped @10.53.0.3
|
||||
;; global options: +cmd
|
||||
;ANSWER
|
||||
mapped. 3600 IN SOA . . 0 0 0 2147483647 0
|
||||
example.aa. 3600 IN A 1.2.3.4
|
||||
example1.aa. 3600 IN A 1.2.3.4
|
||||
|
|
@ -18,9 +16,4 @@ foo.jj. 3600 IN A 1.2.3.4
|
|||
foo.kk. 3600 IN A 1.2.3.4
|
||||
foo.ll. 3600 IN A 1.2.3.4
|
||||
mapped. 3600 IN NS .
|
||||
mapped. 3600 IN SOA . . 0 0 0 2147483647 0
|
||||
;; Query time: 4 msec
|
||||
;; SERVER: 10.53.0.3#5300(10.53.0.3)
|
||||
;; WHEN: Tue Feb 16 14:38:25 EST 2016
|
||||
;; XFR size: 18 records (messages 1, bytes 468)
|
||||
|
||||
mapped. 3600 IN SOA . . 0 0 0 2147483647 0
|
||||
|
|
@ -36,17 +36,12 @@ zone "." {
|
|||
file "root.db";
|
||||
};
|
||||
|
||||
zone "secondary" {
|
||||
{% if enable_only_axfr_max_idle_time | default(False) %}
|
||||
zone "axfr-max-idle-time" {
|
||||
type primary;
|
||||
allow-transfer { 10.53.0.1; 10.53.0.2; 10.53.0.6; 10.53.0.7; };
|
||||
file "sec.db";
|
||||
file "axfr-max-idle-time.db";
|
||||
};
|
||||
|
||||
zone "edns-expire" {
|
||||
type primary;
|
||||
file "edns-expire.db";
|
||||
};
|
||||
|
||||
{% else %}
|
||||
zone "axfr-min-transfer-rate" {
|
||||
type primary;
|
||||
file "axfr-min-transfer-rate.db";
|
||||
|
|
@ -57,16 +52,23 @@ zone "axfr-max-transfer-time" {
|
|||
file "axfr-max-transfer-time.db";
|
||||
};
|
||||
|
||||
zone "axfr-max-idle-time" {
|
||||
type primary;
|
||||
file "axfr-max-idle-time.db";
|
||||
};
|
||||
|
||||
zone "axfr-rndc-retransfer-force" {
|
||||
type primary;
|
||||
file "axfr-rndc-retransfer-force.db";
|
||||
};
|
||||
|
||||
{% if enable_some_zones | default(True) %}
|
||||
zone "secondary" {
|
||||
type primary;
|
||||
allow-transfer { 10.53.0.1; 10.53.0.2; 10.53.0.6; 10.53.0.7; };
|
||||
file "sec.db";
|
||||
};
|
||||
|
||||
zone "edns-expire" {
|
||||
type primary;
|
||||
file "edns-expire.db";
|
||||
};
|
||||
|
||||
zone "xot-primary-try-next" {
|
||||
type primary;
|
||||
file "xot-primary-try-next.db";
|
||||
|
|
@ -98,3 +100,5 @@ zone "dot-fallback" {
|
|||
type primary;
|
||||
file "dot-fallback.db";
|
||||
};
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
|
@ -11,6 +11,7 @@
|
|||
* information regarding copyright ownership.
|
||||
*/
|
||||
|
||||
{% set ns4_as_secondary_for_nil = ns4_as_secondary_for_nil | default(False) %}
|
||||
options {
|
||||
query-source address 10.53.0.4;
|
||||
notify-source 10.53.0.4;
|
||||
|
|
@ -49,3 +50,11 @@ zone "." {
|
|||
type primary;
|
||||
file "root.db";
|
||||
};
|
||||
|
||||
{% if ns4_as_secondary_for_nil %}
|
||||
zone "nil" {
|
||||
type secondary;
|
||||
file "nil.db";
|
||||
primaries { 10.53.0.5 key tsig_key; };
|
||||
};
|
||||
{% endif %}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,12 @@
|
|||
; See the COPYRIGHT file distributed with this work for additional
|
||||
; information regarding copyright ownership.
|
||||
|
||||
{% raw -%}
|
||||
@ 0 SOA . . 0 0 0 0 0
|
||||
@ 0 NS .
|
||||
@ 0 A 10.53.0.4
|
||||
{% endraw -%}
|
||||
|
||||
{% for i in range(10000) -%}
|
||||
x@i@ 0 in a 10.53.0.1
|
||||
{% endfor %}
|
||||
2
bin/tests/system/xfer/ns8/.gitignore
vendored
2
bin/tests/system/xfer/ns8/.gitignore
vendored
|
|
@ -1,2 +0,0 @@
|
|||
/large.db
|
||||
/small.db
|
||||
12
bin/tests/system/xfer/ns8/large.db.j2
Normal file
12
bin/tests/system/xfer/ns8/large.db.j2
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
;
|
||||
; SPDX-License-Identifier: MPL-2.0
|
||||
;
|
||||
; This Source Code Form is subject to the terms of the Mozilla Public
|
||||
; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
;
|
||||
; See the COPYRIGHT file distributed with this work for additional
|
||||
; information regarding copyright ownership.
|
||||
|
||||
large IN TYPE45234 \# 48000 {% for i in range(48000) %}@"%02x" | format(i % 256)@{% endfor %}
|
||||
15
bin/tests/system/xfer/ns8/small.db.j2
Normal file
15
bin/tests/system/xfer/ns8/small.db.j2
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
; Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
;
|
||||
; SPDX-License-Identifier: MPL-2.0
|
||||
;
|
||||
; This Source Code Form is subject to the terms of the Mozilla Public
|
||||
; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
; file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
;
|
||||
; See the COPYRIGHT file distributed with this work for additional
|
||||
; information regarding copyright ownership.
|
||||
|
||||
{% for i in range(4096) %}
|
||||
name@i@ 259200 A 1.2.3.4
|
||||
name@i@ 259200 TXT "Hello World @i@"
|
||||
{%- endfor %}
|
||||
174
bin/tests/system/xfer/response1.good
Normal file
174
bin/tests/system/xfer/response1.good
Normal file
|
|
@ -0,0 +1,174 @@
|
|||
;ANSWER
|
||||
example. 86400 IN SOA ns2.example. hostmaster.example. 1397051952 5 5 1814400 3600
|
||||
example. 3600 IN DNSKEY 512 255 1 AQMFD5raczCJHViKtLYhWGz8hMY9UGRu niJDBzC7w0aRyzWZriO6i2odGWWQVucZ qKVsENW91IOW4vqudngPZsY3GvQ/xVA8 /7pyFj6b7Esga60zyGW6LFe9r8n6paHr lG5ojqf0BaqHT+8=
|
||||
example. 3600 IN NS ns2.example.
|
||||
example. 3600 IN NS ns3.example.
|
||||
a01.example. 3600 IN A 0.0.0.0
|
||||
a02.example. 3600 IN A 255.255.255.255
|
||||
a601.example. 3600 IN A6 \# 17 00ffffffffffffffffffffffffffffff ff
|
||||
a601.example. 3600 IN A6 \# 14 40ffffffffffffffff03666f6f00
|
||||
a601.example. 3600 IN A6 \# 7 7f0103666f6f00
|
||||
a601.example. 3600 IN A6 \# 2 8000
|
||||
aaaa01.example. 3600 IN AAAA ::1
|
||||
aaaa02.example. 3600 IN AAAA fd92:7065:b8e:ffff::5
|
||||
afsdb01.example. 3600 IN AFSDB 0 hostname.example.
|
||||
afsdb02.example. 3600 IN AFSDB 65535 .
|
||||
amtrelay01.example. 3600 IN AMTRELAY 0 0 0 .
|
||||
amtrelay02.example. 3600 IN AMTRELAY 0 1 0 .
|
||||
amtrelay03.example. 3600 IN AMTRELAY 0 0 1 0.0.0.0
|
||||
amtrelay04.example. 3600 IN AMTRELAY 0 0 2 ::
|
||||
amtrelay05.example. 3600 IN AMTRELAY 0 0 3 example.net.
|
||||
apl01.example. 3600 IN APL !1:10.0.0.1/32 1:10.0.0.0/24
|
||||
atma01.example. 3600 IN TYPE34 \# 12 013631323030303030303030
|
||||
atma02.example. 3600 IN TYPE34 \# 12 013631323030303030303030
|
||||
atma03.example. 3600 IN TYPE34 \# 9 001234567890abcdef
|
||||
atma04.example. 3600 IN TYPE34 \# 9 00fedcba0987654321
|
||||
avc.example. 3600 IN AVC "foo:bar"
|
||||
caa01.example. 3600 IN CAA 0 issue "ca.example.net; policy=ev"
|
||||
caa02.example. 3600 IN CAA 128 tbs "Unknown"
|
||||
caa03.example. 3600 IN CAA 128 tbs ""
|
||||
cdnskey01.example. 3600 IN CDNSKEY 512 255 1 AQMFD5raczCJHViKtLYhWGz8hMY9UGRu niJDBzC7w0aRyzWZriO6i2odGWWQVucZ qKVsENW91IOW4vqudngPZsY3GvQ/xVA8 /7pyFj6b7Esga60zyGW6LFe9r8n6paHr lG5ojqf0BaqHT+8=
|
||||
cds01.example. 3600 IN CDS 30795 1 1 310d27f4d82c1fc2400704ea9939fe6e1ceaa3b9
|
||||
cert01.example. 3600 IN CERT 65534 65535 PRIVATEOID MxFcby9k/yvedMfQgKzhH5er0Mu/vILz 45IkskceFGgiWCn/GxHhai6VAuHAoNUz 4YoU1tVfSCSqQYn6//11U6Nld80jEeC8 aTrO+KKmCaY=
|
||||
cname01.example. 3600 IN CNAME cname-target.
|
||||
cname02.example. 3600 IN CNAME cname-target.example.
|
||||
cname03.example. 3600 IN CNAME .
|
||||
csync01.example. 3600 IN CSYNC 0 0 A NS AAAA
|
||||
csync02.example. 3600 IN CSYNC 0 0
|
||||
dhcid01.example. 3600 IN DHCID AAIBY2/AuCccgoJbsaxcQc9TUapptP69 lOjxfNuVAA2kjEA=
|
||||
dhcid02.example. 3600 IN DHCID AAEBOSD+XR3Os/0LozeXVqcNc7FwCfQd WL3b/NaiUDlW2No=
|
||||
dhcid03.example. 3600 IN DHCID AAABxLmlskllE0MVjd57zHcWmEH3pCQ6 VytcKD//7es/deY=
|
||||
dlv.example. 3600 IN DLV 30795 1 1 310d27f4d82c1fc2400704ea9939fe6e1ceaa3b9
|
||||
dname01.example. 3600 IN DNAME dname-target.
|
||||
dname02.example. 3600 IN DNAME dname-target.example.
|
||||
dname03.example. 3600 IN DNAME .
|
||||
doa01.example. 3600 IN TYPE259 \# 301 499602d2499602d20109696d6167652f 67696647494638396128001900e30200 666666006699ffffff3399ccccffff99 ccff33669966ccff99cccccccccc0099 ffffffffffffffffffffffffffffffff 21f904010a000f002c00000000280019 000004c7f081492b95366b8df7ec5e68 8119299e8089ae5cbb3eb08aca1f1cdc 78008734f7e4c0db6ed3bbfc82481db1 a23a2693c554e94955962ea36ad54572 6a9352d70777380c6e8342e19c2b9b71 586cc72b109ceb78013a6fbf31e51739 750303838567850204697a7e7f52185e 01830575407848572918418675078202 a0412d3b92937d0479777da44b006ca1 b18c7a83484d12a7a8b137837504999b 73b948866b0189c8756b03c08e463549 947c6c95abcf7f36486a8805040541de 08b144da5fe71ebae74f11003b
|
||||
doa02.example. 3600 IN TYPE259 \# 30 0000000000000001020068747470733a 2f2f7777772e6973632e6f72672f
|
||||
ds01.example. 3600 IN DS 12892 5 2 26584835ca80c81c91999f31cfaf2a0e89d4ff1c8fafd0ddb31a85c719277c13
|
||||
ds01.example. 3600 IN NS ns42.example.
|
||||
ds02.example. 3600 IN DS 12892 5 1 7aa4a3f416c2f2391fb7ab0d434f762cd62d1390
|
||||
ds02.example. 3600 IN NS ns43.example.
|
||||
eid01.example. 3600 IN TYPE31 \# 3 1289ab
|
||||
eui48.example. 3600 IN EUI48 01-23-45-67-89-ab
|
||||
eui64.example. 3600 IN EUI64 01-23-45-67-89-ab-cd-ef
|
||||
gid01.example. 3600 IN TYPE102 \# 1 03
|
||||
gpos01.example. 3600 IN GPOS -22.6882 116.8652 250.0
|
||||
hinfo01.example. 3600 IN HINFO "Generic PC clone" "NetBSD-1.4"
|
||||
hinfo02.example. 3600 IN HINFO "PC" "NetBSD"
|
||||
hip1.example. 3600 IN HIP 2 200100107b1a74df365639cc39f1d578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D
|
||||
hip2.example. 3600 IN HIP 2 200100107b1a74df365639cc39f1d578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D rvs.example.com.
|
||||
https0.example. 3600 IN HTTPS 0 example.net.
|
||||
https1.example. 3600 IN HTTPS 1 . port="60"
|
||||
ipseckey01.example. 3600 IN IPSECKEY 10 1 2 192.0.2.38 AQNRU3mG7TVTO2BkR47usntb102uFJtu gbo6BSGvgqt4AQ==
|
||||
ipseckey02.example. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtu gbo6BSGvgqt4AQ==
|
||||
ipseckey03.example. 3600 IN IPSECKEY 10 1 2 192.0.2.3 AQNRU3mG7TVTO2BkR47usntb102uFJtu gbo6BSGvgqt4AQ==
|
||||
ipseckey04.example. 3600 IN IPSECKEY 10 3 2 mygateway.example.com. AQNRU3mG7TVTO2BkR47usntb102uFJtu gbo6BSGvgqt4AQ==
|
||||
ipseckey05.example. 3600 IN IPSECKEY 10 2 2 2001:db8:0:8002::2000:1 AQNRU3mG7TVTO2BkR47usntb102uFJtu gbo6BSGvgqt4AQ==
|
||||
isdn01.example. 3600 IN ISDN "isdn-address"
|
||||
isdn02.example. 3600 IN ISDN "isdn-address" "subaddress"
|
||||
isdn03.example. 3600 IN ISDN "isdn-address"
|
||||
isdn04.example. 3600 IN ISDN "isdn-address" "subaddress"
|
||||
keydata.example. 3600 IN TYPE65533 \# 0
|
||||
keydata.example. 3600 IN TYPE65533 \# 6 010203040506
|
||||
keydata.example. 3600 IN TYPE65533 \# 18 01020304050601020304050601020304 0506
|
||||
kx01.example. 3600 IN KX 10 kdc.example.
|
||||
kx02.example. 3600 IN KX 10 .
|
||||
l32.example. 3600 IN L32 10 1.2.3.4
|
||||
l64.example. 3600 IN L64 10 0014:4fff:ff20:ee64
|
||||
loc01.example. 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20.00m 2000.00m 20.00m
|
||||
loc02.example. 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20.00m 2000.00m 20.00m
|
||||
lp.example. 3600 IN LP 10 example.net.
|
||||
mb01.example. 3600 IN MG \# 10 076d61646e616d65c00c
|
||||
mb02.example. 3600 IN MG \# 1 00
|
||||
mg01.example. 3600 IN MG \# 10 076d676d6e616d65c00c
|
||||
mg02.example. 3600 IN MG \# 1 00
|
||||
minfo01.example. 3600 IN MINFO \# 20 07726d61696c6278c00c07656d61696c 6278c00c
|
||||
minfo02.example. 3600 IN MINFO \# 2 0000
|
||||
mr01.example. 3600 IN MR \# 9 066d726e616d65c00c
|
||||
mr02.example. 3600 IN MR \# 1 00
|
||||
mx01.example. 3600 IN MX 10 mail.example.
|
||||
mx02.example. 3600 IN MX 10 .
|
||||
naptr01.example. 3600 IN NAPTR 0 0 "" "" "" .
|
||||
naptr02.example. 3600 IN NAPTR 65535 65535 "blurgh" "blorf" "blllbb" foo.
|
||||
nid.example. 3600 IN NID 10 0014:4fff:ff20:ee64
|
||||
nimloc01.example. 3600 IN TYPE32 \# 3 1289ab
|
||||
ninfo01.example. 3600 IN NINFO "foo"
|
||||
ninfo02.example. 3600 IN NINFO "foo" "bar"
|
||||
ninfo03.example. 3600 IN NINFO "foo"
|
||||
ninfo04.example. 3600 IN NINFO "foo" "bar"
|
||||
ninfo05.example. 3600 IN NINFO "foo bar"
|
||||
ninfo06.example. 3600 IN NINFO "foo bar"
|
||||
ninfo07.example. 3600 IN NINFO "foo bar"
|
||||
ninfo08.example. 3600 IN NINFO "foo\010bar"
|
||||
ninfo09.example. 3600 IN NINFO "foo\010bar"
|
||||
ninfo10.example. 3600 IN NINFO "foo bar"
|
||||
ninfo11.example. 3600 IN NINFO "\"foo\""
|
||||
ninfo12.example. 3600 IN NINFO "\"foo\""
|
||||
ninfo13.example. 3600 IN NINFO "foo;"
|
||||
ninfo14.example. 3600 IN NINFO "foo;"
|
||||
ninfo15.example. 3600 IN NINFO "bar\\;"
|
||||
ns2.example. 3600 IN A 10.53.0.2
|
||||
ns3.example. 3600 IN A 10.53.0.3
|
||||
nsap-ptr01.example. 3600 IN NSAP-PTR .
|
||||
nsap-ptr01.example. 3600 IN NSAP-PTR foo.
|
||||
nsap01.example. 3600 IN NSAP 0x47000580005a0000000001e133ffffff00016100
|
||||
nsap02.example. 3600 IN NSAP 0x47000580005a0000000001e133ffffff00016100
|
||||
nsec01.example. 3600 IN NSEC a.secure.nil. NS SOA MX LOC RRSIG NSEC DNSKEY
|
||||
nsec02.example. 3600 IN NSEC . NSAP-PTR NSEC
|
||||
nsec03.example. 3600 IN NSEC . A
|
||||
nsec04.example. 3600 IN NSEC . TYPE127
|
||||
openpgpkey.example. 3600 IN OPENPGPKEY AQMFD5raczCJHViKtLYhWGz8hMY9UGRuniJDBzC7w0aRyzWZriO6i2odGWWQVucZqKVsENW91IOW4vqudngPZsY3GvQ/xVA8/7pyFj6b7Esga60zyGW6LFe9r8n6paHrlG5ojqf0BaqHT+8=
|
||||
ptr01.example. 3600 IN PTR example.
|
||||
px01.example. 3600 IN PX 65535 foo. bar.
|
||||
px02.example. 3600 IN PX 65535 . .
|
||||
rkey01.example. 3600 IN TYPE57 \# 111 0000ff010103050f9ada7330891d588a b4b621586cfc84c63d50646e9e224307 30bbc34691cb3599ae23ba8b6a1d1965 9056e719a8a56c10d5bdd48396e2faae 76780f66c6371af43fc5503cffba7216 3e9bec4b206bad33c865ba2c57bdafc9 faa5a1eb946e688ea7f405aa874fef
|
||||
rp01.example. 3600 IN RP mbox-dname.example. txt-dname.example.
|
||||
rp02.example. 3600 IN RP . .
|
||||
rrsig01.example. 3600 IN RRSIG NSEC 1 3 3600 20000102030405 19961211100908 2143 foo.nil. MxFcby9k/yvedMfQgKzhH5er0Mu/vILz 45IkskceFGgiWCn/GxHhai6VAuHAoNUz 4YoU1tVfSCSqQYn6//11U6Nld80jEeC8 aTrO+KKmCaY=
|
||||
rt01.example. 3600 IN RT 0 intermediate-host.example.
|
||||
rt02.example. 3600 IN RT 65535 .
|
||||
sink01.example. 3600 IN TYPE40 \# 3 010000
|
||||
sink02.example. 3600 IN TYPE40 \# 6 0800029788a4
|
||||
smimea.example. 3600 IN SMIMEA 1 1 2 92003ba34942dc74152e2f2c408d29eca5a520e7f2e06bb944f4dca346baf63c1b177615d466f6c4b71c216a50292bd58c9ebdd2f74e38fe51ffd48c43326cbc
|
||||
spf01.example. 3600 IN SPF "v=spf1 -all"
|
||||
spf02.example. 3600 IN SPF "v=spf1" " -all"
|
||||
srv01.example. 3600 IN SRV 0 0 0 .
|
||||
srv02.example. 3600 IN SRV 65535 65535 65535 old-slow-box.example.
|
||||
sshfp01.example. 3600 IN SSHFP 4 2 c76d8329954da2835751e371544e963efda099080d6c58dd2bfd9a316e162c83
|
||||
sshfp02.example. 3600 IN SSHFP 1 2 bf29468c83ac58ccf8c85ab7b3beb054ecf1e38512b8353ab36471fa88961dcc
|
||||
svcb0.example. 3600 IN SVCB 0 example.net.
|
||||
svcb1.example. 3600 IN SVCB 1 . port="60"
|
||||
ta.example. 3600 IN TA \# 24 784b0101310d27f4d82c1fc2400704ea 9939fe6e1ceaa3b9
|
||||
talink0.example. 3600 IN TYPE58 \# 18 000774616c696e6b31076578616d706c 6500
|
||||
talink1.example. 3600 IN TYPE58 \# 34 0774616c696e6b30076578616d706c65 000774616c696e6b32076578616d706c 6500
|
||||
talink2.example. 3600 IN TYPE58 \# 18 0774616c696e6b32076578616d706c65 0000
|
||||
tlsa.example. 3600 IN TLSA 1 1 2 92003ba34942dc74152e2f2c408d29eca5a520e7f2e06bb944f4dca346baf63c1b177615d466f6c4b71c216a50292bd58c9ebdd2f74e38fe51ffd48c43326cbc
|
||||
txt01.example. 3600 IN TXT "foo"
|
||||
txt02.example. 3600 IN TXT "foo" "bar"
|
||||
txt03.example. 3600 IN TXT "foo"
|
||||
txt04.example. 3600 IN TXT "foo" "bar"
|
||||
txt05.example. 3600 IN TXT "foo bar"
|
||||
txt06.example. 3600 IN TXT "foo bar"
|
||||
txt07.example. 3600 IN TXT "foo bar"
|
||||
txt08.example. 3600 IN TXT "foo\010bar"
|
||||
txt09.example. 3600 IN TXT "foo\010bar"
|
||||
txt10.example. 3600 IN TXT "foo bar"
|
||||
txt11.example. 3600 IN TXT "\"foo\""
|
||||
txt12.example. 3600 IN TXT "\"foo\""
|
||||
txt13.example. 3600 IN TXT "foo;"
|
||||
txt14.example. 3600 IN TXT "foo;"
|
||||
txt15.example. 3600 IN TXT "bar\\;"
|
||||
uid01.example. 3600 IN TYPE101 \# 1 02
|
||||
uinfo01.example. 3600 IN TYPE100 \# 1 01
|
||||
unspec01.example. 3600 IN UNSPEC \# 1 04
|
||||
uri01.example. 3600 IN URI 10 20 "https://www.isc.org/"
|
||||
uri02.example. 3600 IN URI 30 40 "https://www.isc.org/HolyCowThisSureIsAVeryLongURIRecordIDontEvenKnowWhatSomeoneWouldEverWantWithSuchAThingButTheSpecificationRequiresThatWesupportItSoHereWeGoTestingItLaLaLaLaLaLaLaSeriouslyThoughWhyWouldYouEvenConsiderUsingAURIThisLongItSeemsLikeASillyIdeaButEnhWhatAreYouGonnaDo/"
|
||||
wks01.example. 3600 IN WKS 10.0.0.1 6 0 1 2 21 23
|
||||
wks02.example. 3600 IN WKS 10.0.0.1 17 0 1 2 53
|
||||
wks03.example. 3600 IN WKS 10.0.0.2 6 65535
|
||||
x2501.example. 3600 IN X25 "123456789"
|
||||
zonemd01.example. 3600 IN ZONEMD 2019020700 1 1 c220b8a6ed5728a971902f7e3d4fd93adeea88b0453c2e8e8c863d465ab06cf34eb95b266398c98b59124fa239cb7eeb
|
||||
zonemd02.example. 3600 IN ZONEMD 2019020700 1 2 08cfa1115c7b948c4163a901270395ea226a930cd2cbcf2fa9a5e6eb85f37c8a4e114d884e66f176eab121cb02db7d652e0cc4827e7a3204f166b47e5613fd27
|
||||
8f1tmio9avcom2k0frp92lgcumak0cad.example. 3600 IN NSEC3 1 0 10 d2cf0294c020ce6c 8fpns2uct7fbs643thp2b77peq77k6iu A NS SOA MX AAAA RRSIG DNSKEY NSEC3PARAM
|
||||
kcd3juae64f9c5csl1kif1htaui7un0g.example. 3600 IN NSEC3 1 0 10 d2cf0294c020ce6c kd5mn2m20340dgo0bl7ntsb8jp4bsc7e
|
||||
mr5ukvsk1l37btu4q7b1dfevft4hkqdk.example. 3600 IN NSEC3 1 0 10 d2cf0294c020ce6c mt38j6vg7s0sn5g17mcuf6iqikfuaj05 A AAAA RRSIG
|
||||
174
bin/tests/system/xfer/response2.good
Normal file
174
bin/tests/system/xfer/response2.good
Normal file
|
|
@ -0,0 +1,174 @@
|
|||
;ANSWER
|
||||
example. 86400 IN SOA ns2.example. hostmaster.example. 1397051953 5 5 1814400 3600
|
||||
example. 3600 IN DNSKEY 512 255 1 AQMFD5raczCJHViKtLYhWGz8hMY9UGRu niJDBzC7w0aRyzWZriO6i2odGWWQVucZ qKVsENW91IOW4vqudngPZsY3GvQ/xVA8 /7pyFj6b7Esga60zyGW6LFe9r8n6paHr lG5ojqf0BaqHT+8=
|
||||
example. 3600 IN NS ns2.example.
|
||||
example. 3600 IN NS ns3.example.
|
||||
a01.example. 3600 IN A 0.0.0.1
|
||||
a02.example. 3600 IN A 255.255.255.255
|
||||
a601.example. 3600 IN A6 \# 17 00ffffffffffffffffffffffffffffff ff
|
||||
a601.example. 3600 IN A6 \# 14 40ffffffffffffffff03666f6f00
|
||||
a601.example. 3600 IN A6 \# 7 7f0103666f6f00
|
||||
a601.example. 3600 IN A6 \# 2 8000
|
||||
aaaa01.example. 3600 IN AAAA ::1
|
||||
aaaa02.example. 3600 IN AAAA fd92:7065:b8e:ffff::5
|
||||
afsdb01.example. 3600 IN AFSDB 0 hostname.example.
|
||||
afsdb02.example. 3600 IN AFSDB 65535 .
|
||||
amtrelay01.example. 3600 IN AMTRELAY 0 0 0 .
|
||||
amtrelay02.example. 3600 IN AMTRELAY 0 1 0 .
|
||||
amtrelay03.example. 3600 IN AMTRELAY 0 0 1 0.0.0.1
|
||||
amtrelay04.example. 3600 IN AMTRELAY 0 0 2 ::
|
||||
amtrelay05.example. 3600 IN AMTRELAY 0 0 3 example.net.
|
||||
apl01.example. 3600 IN APL !1:10.0.0.1/32 1:10.0.0.0/24
|
||||
atma01.example. 3600 IN TYPE34 \# 12 013631323030303030303030
|
||||
atma02.example. 3600 IN TYPE34 \# 12 013631323030303030303030
|
||||
atma03.example. 3600 IN TYPE34 \# 9 001234567890abcdef
|
||||
atma04.example. 3600 IN TYPE34 \# 9 00fedcba0987654321
|
||||
avc.example. 3600 IN AVC "foo:bar"
|
||||
caa01.example. 3600 IN CAA 0 issue "ca.example.net; policy=ev"
|
||||
caa02.example. 3600 IN CAA 128 tbs "Unknown"
|
||||
caa03.example. 3600 IN CAA 128 tbs ""
|
||||
cdnskey01.example. 3600 IN CDNSKEY 512 255 1 AQMFD5raczCJHViKtLYhWGz8hMY9UGRu niJDBzC7w0aRyzWZriO6i2odGWWQVucZ qKVsENW91IOW4vqudngPZsY3GvQ/xVA8 /7pyFj6b7Esga60zyGW6LFe9r8n6paHr lG5ojqf0BaqHT+8=
|
||||
cds01.example. 3600 IN CDS 30795 1 1 310d27f4d82c1fc2400704ea9939fe6e1ceaa3b9
|
||||
cert01.example. 3600 IN CERT 65534 65535 PRIVATEOID MxFcby9k/yvedMfQgKzhH5er0Mu/vILz 45IkskceFGgiWCn/GxHhai6VAuHAoNUz 4YoU1tVfSCSqQYn6//11U6Nld80jEeC8 aTrO+KKmCaY=
|
||||
cname01.example. 3600 IN CNAME cname-target.
|
||||
cname02.example. 3600 IN CNAME cname-target.example.
|
||||
cname03.example. 3600 IN CNAME .
|
||||
csync01.example. 3600 IN CSYNC 0 0 A NS AAAA
|
||||
csync02.example. 3600 IN CSYNC 0 0
|
||||
dhcid01.example. 3600 IN DHCID AAIBY2/AuCccgoJbsaxcQc9TUapptP69 lOjxfNuVAA2kjEA=
|
||||
dhcid02.example. 3600 IN DHCID AAEBOSD+XR3Os/0LozeXVqcNc7FwCfQd WL3b/NaiUDlW2No=
|
||||
dhcid03.example. 3600 IN DHCID AAABxLmlskllE0MVjd57zHcWmEH3pCQ6 VytcKD//7es/deY=
|
||||
dlv.example. 3600 IN DLV 30795 1 1 310d27f4d82c1fc2400704ea9939fe6e1ceaa3b9
|
||||
dname01.example. 3600 IN DNAME dname-target.
|
||||
dname02.example. 3600 IN DNAME dname-target.example.
|
||||
dname03.example. 3600 IN DNAME .
|
||||
doa01.example. 3600 IN TYPE259 \# 301 499602d2499602d20109696d6167652f 67696647494638396128001900e30200 666666006699ffffff3399ccccffff99 ccff33669966ccff99cccccccccc0099 ffffffffffffffffffffffffffffffff 21f904010a000f002c00000000280019 000004c7f081492b95366b8df7ec5e68 8119299e8089ae5cbb3eb08aca1f1cdc 78008734f7e4c0db6ed3bbfc82481db1 a23a2693c554e94955962ea36ad54572 6a9352d70777380c6e8342e19c2b9b71 586cc72b109ceb78013a6fbf31e51739 750303838567850204697a7e7f52185e 01830575407848572918418675078202 a0412d3b92937d0479777da44b006ca1 b18c7a83484d12a7a8b137837504999b 73b948866b0189c8756b03c08e463549 947c6c95abcf7f36486a8805040541de 08b144da5fe71ebae74f11003b
|
||||
doa02.example. 3600 IN TYPE259 \# 30 0000000000000001020068747470733a 2f2f7777772e6973632e6f72672f
|
||||
ds01.example. 3600 IN DS 12892 5 2 26584835ca80c81c91999f31cfaf2a0e89d4ff1c8fafd0ddb31a85c719277c13
|
||||
ds01.example. 3600 IN NS ns42.example.
|
||||
ds02.example. 3600 IN DS 12892 5 1 7aa4a3f416c2f2391fb7ab0d434f762cd62d1390
|
||||
ds02.example. 3600 IN NS ns43.example.
|
||||
eid01.example. 3600 IN TYPE31 \# 3 1289ab
|
||||
eui48.example. 3600 IN EUI48 01-23-45-67-89-ab
|
||||
eui64.example. 3600 IN EUI64 01-23-45-67-89-ab-cd-ef
|
||||
gid01.example. 3600 IN TYPE102 \# 1 03
|
||||
gpos01.example. 3600 IN GPOS -22.6882 116.8652 250.0
|
||||
hinfo01.example. 3600 IN HINFO "Generic PC clone" "NetBSD-1.4"
|
||||
hinfo02.example. 3600 IN HINFO "PC" "NetBSD"
|
||||
hip1.example. 3600 IN HIP 2 200100107b1a74df365639cc39f1d578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D
|
||||
hip2.example. 3600 IN HIP 2 200100107b1a74df365639cc39f1d578 AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D rvs.example.com.
|
||||
https0.example. 3600 IN HTTPS 0 example.net.
|
||||
https1.example. 3600 IN HTTPS 1 . port="60"
|
||||
ipseckey01.example. 3600 IN IPSECKEY 10 1 2 192.0.2.38 AQNRU3mG7TVTO2BkR47usntb102uFJtu gbo6BSGvgqt4AQ==
|
||||
ipseckey02.example. 3600 IN IPSECKEY 10 0 2 . AQNRU3mG7TVTO2BkR47usntb102uFJtu gbo6BSGvgqt4AQ==
|
||||
ipseckey03.example. 3600 IN IPSECKEY 10 1 2 192.0.2.3 AQNRU3mG7TVTO2BkR47usntb102uFJtu gbo6BSGvgqt4AQ==
|
||||
ipseckey04.example. 3600 IN IPSECKEY 10 3 2 mygateway.example.com. AQNRU3mG7TVTO2BkR47usntb102uFJtu gbo6BSGvgqt4AQ==
|
||||
ipseckey05.example. 3600 IN IPSECKEY 10 2 2 2001:db8:0:8002::2000:1 AQNRU3mG7TVTO2BkR47usntb102uFJtu gbo6BSGvgqt4AQ==
|
||||
isdn01.example. 3600 IN ISDN "isdn-address"
|
||||
isdn02.example. 3600 IN ISDN "isdn-address" "subaddress"
|
||||
isdn03.example. 3600 IN ISDN "isdn-address"
|
||||
isdn04.example. 3600 IN ISDN "isdn-address" "subaddress"
|
||||
keydata.example. 3600 IN TYPE65533 \# 0
|
||||
keydata.example. 3600 IN TYPE65533 \# 6 010203040506
|
||||
keydata.example. 3600 IN TYPE65533 \# 18 01020304050601020304050601020304 0506
|
||||
kx01.example. 3600 IN KX 10 kdc.example.
|
||||
kx02.example. 3600 IN KX 10 .
|
||||
l32.example. 3600 IN L32 10 1.2.3.4
|
||||
l64.example. 3600 IN L64 10 0014:4fff:ff20:ee64
|
||||
loc01.example. 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20.00m 2000.00m 20.00m
|
||||
loc02.example. 3600 IN LOC 60 9 0.000 N 24 39 0.000 E 10.00m 20.00m 2000.00m 20.00m
|
||||
lp.example. 3600 IN LP 10 example.net.
|
||||
mb01.example. 3600 IN MG \# 10 076d61646e616d65c00c
|
||||
mb02.example. 3600 IN MG \# 1 00
|
||||
mg01.example. 3600 IN MG \# 10 076d676d6e616d65c00c
|
||||
mg02.example. 3600 IN MG \# 1 00
|
||||
minfo01.example. 3600 IN MINFO \# 20 07726d61696c6278c00c07656d61696c 6278c00c
|
||||
minfo02.example. 3600 IN MINFO \# 2 0000
|
||||
mr01.example. 3600 IN MR \# 9 066d726e616d65c00c
|
||||
mr02.example. 3600 IN MR \# 1 00
|
||||
mx01.example. 3600 IN MX 10 mail.example.
|
||||
mx02.example. 3600 IN MX 10 .
|
||||
naptr01.example. 3600 IN NAPTR 0 0 "" "" "" .
|
||||
naptr02.example. 3600 IN NAPTR 65535 65535 "blurgh" "blorf" "blllbb" foo.
|
||||
nid.example. 3600 IN NID 10 0014:4fff:ff20:ee64
|
||||
nimloc01.example. 3600 IN TYPE32 \# 3 1289ab
|
||||
ninfo01.example. 3600 IN NINFO "foo"
|
||||
ninfo02.example. 3600 IN NINFO "foo" "bar"
|
||||
ninfo03.example. 3600 IN NINFO "foo"
|
||||
ninfo04.example. 3600 IN NINFO "foo" "bar"
|
||||
ninfo05.example. 3600 IN NINFO "foo bar"
|
||||
ninfo06.example. 3600 IN NINFO "foo bar"
|
||||
ninfo07.example. 3600 IN NINFO "foo bar"
|
||||
ninfo08.example. 3600 IN NINFO "foo\010bar"
|
||||
ninfo09.example. 3600 IN NINFO "foo\010bar"
|
||||
ninfo10.example. 3600 IN NINFO "foo bar"
|
||||
ninfo11.example. 3600 IN NINFO "\"foo\""
|
||||
ninfo12.example. 3600 IN NINFO "\"foo\""
|
||||
ninfo13.example. 3600 IN NINFO "foo;"
|
||||
ninfo14.example. 3600 IN NINFO "foo;"
|
||||
ninfo15.example. 3600 IN NINFO "bar\\;"
|
||||
ns2.example. 3600 IN A 10.53.0.2
|
||||
ns3.example. 3600 IN A 10.53.0.3
|
||||
nsap-ptr01.example. 3600 IN NSAP-PTR .
|
||||
nsap-ptr01.example. 3600 IN NSAP-PTR foo.
|
||||
nsap01.example. 3600 IN NSAP 0x47000580005a0000000001e133ffffff00016100
|
||||
nsap02.example. 3600 IN NSAP 0x47000580005a0000000001e133ffffff00016100
|
||||
nsec01.example. 3600 IN NSEC a.secure.nil. NS SOA MX LOC RRSIG NSEC DNSKEY
|
||||
nsec02.example. 3600 IN NSEC . NSAP-PTR NSEC
|
||||
nsec03.example. 3600 IN NSEC . A
|
||||
nsec04.example. 3600 IN NSEC . TYPE127
|
||||
openpgpkey.example. 3600 IN OPENPGPKEY AQMFD5raczCJHViKtLYhWGz8hMY9UGRuniJDBzC7w0aRyzWZriO6i2odGWWQVucZqKVsENW91IOW4vqudngPZsY3GvQ/xVA8/7pyFj6b7Esga60zyGW6LFe9r8n6paHrlG5ojqf0BaqHT+8=
|
||||
ptr01.example. 3600 IN PTR example.
|
||||
px01.example. 3600 IN PX 65535 foo. bar.
|
||||
px02.example. 3600 IN PX 65535 . .
|
||||
rkey01.example. 3600 IN TYPE57 \# 111 0000ff010103050f9ada7330891d588a b4b621586cfc84c63d50646e9e224307 30bbc34691cb3599ae23ba8b6a1d1965 9056e719a8a56c10d5bdd48396e2faae 76780f66c6371af43fc5503cffba7216 3e9bec4b206bad33c865ba2c57bdafc9 faa5a1eb946e688ea7f405aa874fef
|
||||
rp01.example. 3600 IN RP mbox-dname.example. txt-dname.example.
|
||||
rp02.example. 3600 IN RP . .
|
||||
rrsig01.example. 3600 IN RRSIG NSEC 1 3 3600 20000102030405 19961211100908 2143 foo.nil. MxFcby9k/yvedMfQgKzhH5er0Mu/vILz 45IkskceFGgiWCn/GxHhai6VAuHAoNUz 4YoU1tVfSCSqQYn6//11U6Nld80jEeC8 aTrO+KKmCaY=
|
||||
rt01.example. 3600 IN RT 0 intermediate-host.example.
|
||||
rt02.example. 3600 IN RT 65535 .
|
||||
sink01.example. 3600 IN TYPE40 \# 3 010000
|
||||
sink02.example. 3600 IN TYPE40 \# 6 0800029788a4
|
||||
smimea.example. 3600 IN SMIMEA 1 1 2 92003ba34942dc74152e2f2c408d29eca5a520e7f2e06bb944f4dca346baf63c1b177615d466f6c4b71c216a50292bd58c9ebdd2f74e38fe51ffd48c43326cbc
|
||||
spf01.example. 3600 IN SPF "v=spf1 -all"
|
||||
spf02.example. 3600 IN SPF "v=spf1" " -all"
|
||||
srv01.example. 3600 IN SRV 0 0 0 .
|
||||
srv02.example. 3600 IN SRV 65535 65535 65535 old-slow-box.example.
|
||||
sshfp01.example. 3600 IN SSHFP 4 2 c76d8329954da2835751e371544e963efda099080d6c58dd2bfd9a316e162c83
|
||||
sshfp02.example. 3600 IN SSHFP 1 2 bf29468c83ac58ccf8c85ab7b3beb054ecf1e38512b8353ab36471fa88961dcc
|
||||
svcb0.example. 3600 IN SVCB 0 example.net.
|
||||
svcb1.example. 3600 IN SVCB 1 . port="60"
|
||||
ta.example. 3600 IN TA \# 24 784b0101310d27f4d82c1fc2400704ea 9939fe6e1ceaa3b9
|
||||
talink0.example. 3600 IN TYPE58 \# 18 000774616c696e6b31076578616d706c 6500
|
||||
talink1.example. 3600 IN TYPE58 \# 34 0774616c696e6b30076578616d706c65 000774616c696e6b32076578616d706c 6500
|
||||
talink2.example. 3600 IN TYPE58 \# 18 0774616c696e6b32076578616d706c65 0000
|
||||
tlsa.example. 3600 IN TLSA 1 1 2 92003ba34942dc74152e2f2c408d29eca5a520e7f2e06bb944f4dca346baf63c1b177615d466f6c4b71c216a50292bd58c9ebdd2f74e38fe51ffd48c43326cbc
|
||||
txt01.example. 3600 IN TXT "foo"
|
||||
txt02.example. 3600 IN TXT "foo" "bar"
|
||||
txt03.example. 3600 IN TXT "foo"
|
||||
txt04.example. 3600 IN TXT "foo" "bar"
|
||||
txt05.example. 3600 IN TXT "foo bar"
|
||||
txt06.example. 3600 IN TXT "foo bar"
|
||||
txt07.example. 3600 IN TXT "foo bar"
|
||||
txt08.example. 3600 IN TXT "foo\010bar"
|
||||
txt09.example. 3600 IN TXT "foo\010bar"
|
||||
txt10.example. 3600 IN TXT "foo bar"
|
||||
txt11.example. 3600 IN TXT "\"foo\""
|
||||
txt12.example. 3600 IN TXT "\"foo\""
|
||||
txt13.example. 3600 IN TXT "foo;"
|
||||
txt14.example. 3600 IN TXT "foo;"
|
||||
txt15.example. 3600 IN TXT "bar\\;"
|
||||
uid01.example. 3600 IN TYPE101 \# 1 02
|
||||
uinfo01.example. 3600 IN TYPE100 \# 1 01
|
||||
unspec01.example. 3600 IN UNSPEC \# 1 04
|
||||
uri01.example. 3600 IN URI 10 20 "https://www.isc.org/"
|
||||
uri02.example. 3600 IN URI 30 40 "https://www.isc.org/HolyCowThisSureIsAVeryLongURIRecordIDontEvenKnowWhatSomeoneWouldEverWantWithSuchAThingButTheSpecificationRequiresThatWesupportItSoHereWeGoTestingItLaLaLaLaLaLaLaSeriouslyThoughWhyWouldYouEvenConsiderUsingAURIThisLongItSeemsLikeASillyIdeaButEnhWhatAreYouGonnaDo/"
|
||||
wks01.example. 3600 IN WKS 10.0.0.1 6 0 1 2 21 23
|
||||
wks02.example. 3600 IN WKS 10.0.0.1 17 0 1 2 53
|
||||
wks03.example. 3600 IN WKS 10.0.0.2 6 65535
|
||||
x2501.example. 3600 IN X25 "123456789"
|
||||
zonemd01.example. 3600 IN ZONEMD 2019020700 1 1 c220b8a6ed5728a971902f7e3d4fd93adeea88b0453c2e8e8c863d465ab06cf34eb95b266398c98b59124fa239cb7eeb
|
||||
zonemd02.example. 3600 IN ZONEMD 2019020700 1 2 08cfa1115c7b948c4163a901270395ea226a930cd2cbcf2fa9a5e6eb85f37c8a4e114d884e66f176eab121cb02db7d652e0cc4827e7a3204f166b47e5613fd27
|
||||
8f1tmio9avcom2k0frp92lgcumak0cad.example. 3600 IN NSEC3 1 0 10 d2cf0294c020ce6c 8fpns2uct7fbs643thp2b77peq77k6iu A NS SOA MX AAAA RRSIG DNSKEY NSEC3PARAM
|
||||
kcd3juae64f9c5csl1kif1htaui7un0g.example. 3600 IN NSEC3 1 0 10 d2cf0294c020ce6c kd5mn2m20340dgo0bl7ntsb8jp4bsc7e
|
||||
mr5ukvsk1l37btu4q7b1dfevft4hkqdk.example. 3600 IN NSEC3 1 0 10 d2cf0294c020ce6c mt38j6vg7s0sn5g17mcuf6iqikfuaj05 A AAAA RRSIG
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
;ANSWER
|
||||
dot-fallback. 5 IN SOA ns1.dot-fallback. hostmaster.dot-fallback. 1 3600 3600 3600 3600
|
||||
dot-fallback. 5 IN NS ns1.dot-fallback.
|
||||
a01.dot-fallback. 5 IN A 1.1.1.1
|
||||
|
|
@ -13,24 +13,33 @@
|
|||
|
||||
. ../conf.sh
|
||||
|
||||
$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 1 6 7 >ns1/sec.db
|
||||
$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 1 6 7 >ns1/edns-expire.db
|
||||
$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 2 3 >ns2/example.db
|
||||
$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 2 3 >ns2/tsigzone.db
|
||||
$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 6 3 >ns6/primary.db
|
||||
$SHELL ${TOP_SRCDIR}/bin/tests/system/genzone.sh 7 >ns7/primary2.db
|
||||
dnspython_genzone() (
|
||||
servers="$@"
|
||||
# Drop unusual RR sets and RR types (AMTRELAY, GPOS, URI, apl02) dnspython
|
||||
# can't handle. For more information see
|
||||
# https://github.com/rthalley/dnspython/issues/1034#issuecomment-1896541899.
|
||||
# - BRID and HHIT are not supported by dnspython at all.
|
||||
# - dnspython v2.8.0 adds support for DSYNC RR type
|
||||
# - dnspython v2.7.0 adds support for RESINFO and WALLET RR types
|
||||
$SHELL "${TOP_SRCDIR}/bin/tests/system/genzone.sh" $servers \
|
||||
| sed \
|
||||
-e '/AMTRELAY.*\# 2 0004/d' \
|
||||
-e '/BRID/d' \
|
||||
-e '/DSYNC/d' \
|
||||
-e '/GPOS.*"" "" ""/d' \
|
||||
-e '/HHIT/d' \
|
||||
-e '/RESINFO/d' \
|
||||
-e '/URI.*30 40 ""/d' \
|
||||
-e '/WALLET/d' \
|
||||
-e '/apl02/d' \
|
||||
| tr "\t" " "
|
||||
)
|
||||
|
||||
cp -f ns4/root.db.in ns4/root.db
|
||||
$PERL -e 'for ($i=0;$i<10000;$i++){ printf("x%u 0 in a 10.53.0.1\n", $i);}' >>ns4/root.db
|
||||
dnspython_genzone 1 6 7 >ns1/sec.db
|
||||
dnspython_genzone 1 6 7 >ns1/edns-expire.db
|
||||
dnspython_genzone 2 3 >ns2/example.db
|
||||
dnspython_genzone 2 3 >ns2/tsigzone.db
|
||||
dnspython_genzone 6 3 >ns6/primary.db
|
||||
dnspython_genzone 7 >ns7/primary2.db
|
||||
|
||||
cp ns1/dot-fallback.db.in ns1/dot-fallback.db
|
||||
|
||||
cp ns2/sec.db.in ns2/sec.db
|
||||
touch -t 200101010000 ns2/sec.db
|
||||
|
||||
cp ns2/mapped.db.in ns2/mapped.db
|
||||
|
||||
$PERL -e 'for ($i=0;$i<4096;$i++){ printf("name%u 259200 A 1.2.3.4\nname%u 259200 TXT \"Hello World %u\"\n", $i, $i, $i);}' >ns8/small.db
|
||||
$PERL -e 'printf("large IN TYPE45234 \\# 48000 "); for ($i=0;$i<16*3000;$i++) { printf("%02x", $i % 256); } printf("\n");' >ns8/large.db
|
||||
|
||||
cp -f ns1/ixfr-too-big.db.in ns1/ixfr-too-big.db
|
||||
|
|
|
|||
|
|
@ -1,799 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
set -e
|
||||
|
||||
. ../conf.sh
|
||||
|
||||
DIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd -p ${PORT}"
|
||||
RNDCCMD="$RNDC -c ../_common/rndc.conf -p ${CONTROLPORT} -s"
|
||||
NS_PARAMS="-m record -c named.conf -d 99 -g -T maxcachesize=2097152"
|
||||
|
||||
dig_with_opts() (
|
||||
"$DIG" -p "$PORT" "$@"
|
||||
)
|
||||
|
||||
status=0
|
||||
n=0
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "testing basic zone transfer functionality (from primary) ($n)"
|
||||
tmp=0
|
||||
$DIG $DIGOPTS example. @10.53.0.2 axfr >dig.out.ns2.test$n || tmp=1
|
||||
grep "^;" dig.out.ns2.test$n | cat_i
|
||||
digcomp dig1.good dig.out.ns2.test$n || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "testing basic zone transfer functionality (from secondary) ($n)"
|
||||
tmp=0
|
||||
#
|
||||
# Spin to allow the zone to transfer.
|
||||
#
|
||||
wait_for_xfer() {
|
||||
ZONE=$1
|
||||
SERVER=$2
|
||||
$DIG $DIGOPTS $ZONE @$SERVER axfr >dig.out.test$n || return 1
|
||||
grep "^;" dig.out.test$n >/dev/null && return 1
|
||||
return 0
|
||||
}
|
||||
retry_quiet 25 wait_for_xfer example. 10.53.0.3 || tmp=1
|
||||
grep "^;" dig.out.test$n | cat_i
|
||||
digcomp dig1.good dig.out.test$n || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "testing zone transfer functionality (fallback to DNS after DoT failed) ($n)"
|
||||
tmp=0
|
||||
retry_quiet 25 wait_for_xfer dot-fallback. 10.53.0.2 || tmp=1
|
||||
grep "^;" dig.out.test$n | cat_i
|
||||
digcomp dig3.good dig.out.test$n || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "testing TSIG signed zone transfers ($n)"
|
||||
tmp=0
|
||||
$DIG $DIGOPTS tsigzone. @10.53.0.2 axfr -y "${DEFAULT_HMAC}:tsigzone.:1234abcd8765" >dig.out.ns2.test$n || tmp=1
|
||||
grep "^;" dig.out.ns2.test$n | cat_i
|
||||
|
||||
#
|
||||
# Spin to allow the zone to transfer.
|
||||
#
|
||||
wait_for_xfer_tsig() {
|
||||
$DIG $DIGOPTS tsigzone. @10.53.0.3 axfr -y "${DEFAULT_HMAC}:tsigzone.:1234abcd8765" >dig.out.ns3.test$n || return 1
|
||||
grep "^;" dig.out.ns3.test$n >/dev/null && return 1
|
||||
return 0
|
||||
}
|
||||
retry_quiet 25 wait_for_xfer_tsig || tmp=1
|
||||
grep "^;" dig.out.ns3.test$n | cat_i
|
||||
digcomp dig.out.ns2.test$n dig.out.ns3.test$n || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
echo_i "reload servers for in preparation for ixfr-from-differences tests"
|
||||
|
||||
rndc_reload ns1 10.53.0.1
|
||||
rndc_reload ns2 10.53.0.2
|
||||
rndc_reload ns3 10.53.0.3
|
||||
rndc_reload ns6 10.53.0.6
|
||||
rndc_reload ns7 10.53.0.7
|
||||
|
||||
sleep 2
|
||||
|
||||
echo_i "updating primary zones for ixfr-from-differences tests"
|
||||
|
||||
$PERL -i -p -e '
|
||||
s/0\.0\.0\.0/0.0.0.1/;
|
||||
s/1397051952/1397051953/
|
||||
' ns1/sec.db
|
||||
|
||||
rndc_reload ns1 10.53.0.1
|
||||
|
||||
$PERL -i -p -e '
|
||||
s/0\.0\.0\.0/0.0.0.1/;
|
||||
s/1397051952/1397051953/
|
||||
' ns2/example.db
|
||||
|
||||
rndc_reload ns2 10.53.0.2
|
||||
|
||||
$PERL -i -p -e '
|
||||
s/0\.0\.0\.0/0.0.0.1/;
|
||||
s/1397051952/1397051953/
|
||||
' ns6/primary.db
|
||||
|
||||
rndc_reload ns6 10.53.0.6
|
||||
|
||||
$PERL -i -p -e '
|
||||
s/0\.0\.0\.0/0.0.0.1/;
|
||||
s/1397051952/1397051953/
|
||||
' ns7/primary2.db
|
||||
|
||||
rndc_reload ns7 10.53.0.7
|
||||
|
||||
sleep 3
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "testing zone is dumped after successful transfer ($n)"
|
||||
tmp=0
|
||||
$DIG $DIGOPTS +noall +answer +multi @10.53.0.2 \
|
||||
secondary. soa >dig.out.ns2.test$n || tmp=1
|
||||
grep "1397051952 ; serial" dig.out.ns2.test$n >/dev/null 2>&1 || tmp=1
|
||||
grep "1397051952 ; serial" ns2/sec.db >/dev/null 2>&1 || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "testing ixfr-from-differences yes; ($n)"
|
||||
tmp=0
|
||||
|
||||
echo_i "wait for reloads..."
|
||||
wait_for_reloads() (
|
||||
$DIG $DIGOPTS @10.53.0.6 +noall +answer soa primary >dig.out.soa1.ns6.test$n
|
||||
grep "1397051953" dig.out.soa1.ns6.test$n >/dev/null || return 1
|
||||
$DIG $DIGOPTS @10.53.0.1 +noall +answer soa secondary >dig.out.soa2.ns1.test$n
|
||||
grep "1397051953" dig.out.soa2.ns1.test$n >/dev/null || return 1
|
||||
$DIG $DIGOPTS @10.53.0.2 +noall +answer soa example >dig.out.soa3.ns2.test$n
|
||||
grep "1397051953" dig.out.soa3.ns2.test$n >/dev/null || return 1
|
||||
return 0
|
||||
)
|
||||
retry_quiet 20 wait_for_reloads || tmp=1
|
||||
|
||||
echo_i "wait for transfers..."
|
||||
wait_for_transfers() (
|
||||
a=0 b=0 c=0 d=0
|
||||
$DIG $DIGOPTS @10.53.0.3 +noall +answer soa example >dig.out.soa1.ns3.test$n
|
||||
grep "1397051953" dig.out.soa1.ns3.test$n >/dev/null && a=1
|
||||
$DIG $DIGOPTS @10.53.0.3 +noall +answer soa primary >dig.out.soa2.ns3.test$n
|
||||
grep "1397051953" dig.out.soa2.ns3.test$n >/dev/null && b=1
|
||||
$DIG $DIGOPTS @10.53.0.6 +noall +answer soa secondary >dig.out.soa3.ns6.test$n
|
||||
grep "1397051953" dig.out.soa3.ns6.test$n >/dev/null && c=1
|
||||
[ $a -eq 1 -a $b -eq 1 -a $c -eq 1 ] && return 0
|
||||
|
||||
# re-notify if necessary
|
||||
$RNDCCMD 10.53.0.6 notify primary 2>&1 | sed 's/^/ns6 /' | cat_i
|
||||
$RNDCCMD 10.53.0.1 notify secondary 2>&1 | sed 's/^/ns1 /' | cat_i
|
||||
$RNDCCMD 10.53.0.2 notify example 2>&1 | sed 's/^/ns2 /' | cat_i
|
||||
return 1
|
||||
)
|
||||
retry_quiet 20 wait_for_transfers || tmp=1
|
||||
|
||||
$DIG $DIGOPTS example. \
|
||||
@10.53.0.3 axfr >dig.out.ns3.test$n || tmp=1
|
||||
grep "^;" dig.out.ns3.test$n | cat_i
|
||||
|
||||
digcomp dig2.good dig.out.ns3.test$n || tmp=1
|
||||
|
||||
# ns3 has a journal iff it received an IXFR.
|
||||
test -f ns3/example.bk || tmp=1
|
||||
test -f ns3/example.bk.jnl || tmp=1
|
||||
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "testing ixfr-from-differences primary; (primary zone) ($n)"
|
||||
tmp=0
|
||||
|
||||
$DIG $DIGOPTS primary. \
|
||||
@10.53.0.6 axfr >dig.out.ns6.test$n || tmp=1
|
||||
grep "^;" dig.out.ns6.test$n | cat_i
|
||||
|
||||
$DIG $DIGOPTS primary. \
|
||||
@10.53.0.3 axfr >dig.out.ns3.test$n || tmp=1
|
||||
grep "^;" dig.out.ns3.test$n >/dev/null && cat_i <dig.out.ns3.test$n
|
||||
|
||||
digcomp dig.out.ns6.test$n dig.out.ns3.test$n || tmp=1
|
||||
|
||||
# ns3 has a journal iff it received an IXFR.
|
||||
test -f ns3/primary.bk || tmp=1
|
||||
test -f ns3/primary.bk.jnl || tmp=1
|
||||
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "testing ixfr-from-differences primary; (secondary zone) ($n)"
|
||||
tmp=0
|
||||
|
||||
$DIG $DIGOPTS secondary. \
|
||||
@10.53.0.6 axfr >dig.out.ns6.test$n || tmp=1
|
||||
grep "^;" dig.out.ns6.test$n | cat_i
|
||||
|
||||
$DIG $DIGOPTS secondary. \
|
||||
@10.53.0.1 axfr >dig.out.ns1.test$n || tmp=1
|
||||
grep "^;" dig.out.ns1.test$n | cat_i
|
||||
|
||||
digcomp dig.out.ns6.test$n dig.out.ns1.test$n || tmp=1
|
||||
|
||||
# ns6 has a journal iff it received an IXFR.
|
||||
test -f ns6/sec.bk || tmp=1
|
||||
test -f ns6/sec.bk.jnl && tmp=1
|
||||
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "testing ixfr-from-differences secondary; (secondary zone) ($n)"
|
||||
tmp=0
|
||||
|
||||
# ns7 has a journal iff it generates an IXFR.
|
||||
test -f ns7/primary2.db || tmp=1
|
||||
test -f ns7/primary2.db.jnl && tmp=1
|
||||
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "testing ixfr-from-differences secondary; (secondary zone) ($n)"
|
||||
tmp=0
|
||||
|
||||
$DIG $DIGOPTS secondary. \
|
||||
@10.53.0.1 axfr >dig.out.ns1.test$n || tmp=1
|
||||
grep "^;" dig.out.ns1.test$n | cat_i
|
||||
|
||||
$DIG $DIGOPTS secondary. \
|
||||
@10.53.0.7 axfr >dig.out.ns7.test$n || tmp=1
|
||||
grep "^;" dig.out.ns7.test$n | cat_i
|
||||
|
||||
digcomp dig.out.ns7.test$n dig.out.ns1.test$n || tmp=1
|
||||
|
||||
# ns7 has a journal iff it generates an IXFR.
|
||||
test -f ns7/sec.bk || tmp=1
|
||||
test -f ns7/sec.bk.jnl || tmp=1
|
||||
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "check that a multi-message uncompressable zone transfers ($n)"
|
||||
$DIG axfr . -p ${PORT} @10.53.0.4 | grep SOA >axfr.out || tmp=1
|
||||
if test $(wc -l <axfr.out) != 2; then
|
||||
echo_i "failed"
|
||||
status=$((status + 1))
|
||||
fi
|
||||
|
||||
# now we test transfers with assorted TSIG glitches
|
||||
DIGCMD="$DIG $DIGOPTS @10.53.0.4"
|
||||
|
||||
sendcmd() {
|
||||
send 10.53.0.5 "$EXTRAPORT1"
|
||||
}
|
||||
|
||||
echo_i "testing that incorrectly signed transfers will fail..."
|
||||
n=$((n + 1))
|
||||
echo_i "initial correctly-signed transfer should succeed ($n)"
|
||||
|
||||
sendcmd <ans5/goodaxfr
|
||||
|
||||
# Initially, ns4 is not authoritative for anything.
|
||||
# Now that ans is up and running with the right data, we make ns4
|
||||
# a secondary for nil.
|
||||
|
||||
cat <<EOF >>ns4/named.conf
|
||||
zone "nil" {
|
||||
type secondary;
|
||||
file "nil.db";
|
||||
primaries { 10.53.0.5 key tsig_key; };
|
||||
};
|
||||
EOF
|
||||
|
||||
nextpart ns4/named.run >/dev/null
|
||||
|
||||
rndc_reload ns4 10.53.0.4
|
||||
|
||||
wait_for_soa() (
|
||||
$DIGCMD nil. SOA >dig.out.ns4.test$n
|
||||
grep SOA dig.out.ns4.test$n >/dev/null
|
||||
)
|
||||
retry_quiet 10 wait_for_soa
|
||||
|
||||
nextpart ns4/named.run | grep "Transfer status: success" >/dev/null || {
|
||||
echo_i "failed: expected status was not logged"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
$DIGCMD nil. TXT | grep 'initial AXFR' >/dev/null || {
|
||||
echo_i "failed"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "handle IXFR NOTIMP ($n)"
|
||||
|
||||
sendcmd <ans5/ixfrnotimp
|
||||
|
||||
$RNDCCMD 10.53.0.4 refresh nil | sed 's/^/ns4 /' | cat_i
|
||||
|
||||
sleep 2
|
||||
|
||||
nextpart ns4/named.run | grep "zone nil/IN: requesting IXFR from 10.53.0.5" >/dev/null || {
|
||||
echo_i "failed: expected status was not logged"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
$DIGCMD nil. TXT | grep 'IXFR NOTIMP' >/dev/null || {
|
||||
echo_i "failed"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "unsigned transfer ($n)"
|
||||
|
||||
sendcmd <ans5/unsigned
|
||||
sleep 1
|
||||
|
||||
$RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
|
||||
|
||||
sleep 2
|
||||
|
||||
nextpart ns4/named.run | grep "Transfer status: expected a TSIG or SIG(0)" >/dev/null || {
|
||||
echo_i "failed: expected status was not logged"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
$DIGCMD nil. TXT | grep 'unsigned AXFR' >/dev/null && {
|
||||
echo_i "failed"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "bad keydata ($n)"
|
||||
|
||||
sendcmd <ans5/badkeydata
|
||||
|
||||
$RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
|
||||
|
||||
sleep 2
|
||||
|
||||
nextpart ns4/named.run | grep "Transfer status: tsig verify failure" >/dev/null || {
|
||||
echo_i "failed: expected status was not logged"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
$DIGCMD nil. TXT | grep 'bad keydata AXFR' >/dev/null && {
|
||||
echo_i "failed"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "partially-signed transfer ($n)"
|
||||
|
||||
sendcmd <ans5/partial
|
||||
|
||||
$RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
|
||||
|
||||
sleep 2
|
||||
|
||||
nextpart ns4/named.run | grep "Transfer status: expected a TSIG or SIG(0)" >/dev/null || {
|
||||
echo_i "failed: expected status was not logged"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
$DIGCMD nil. TXT | grep 'partially signed AXFR' >/dev/null && {
|
||||
echo_i "failed"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "unknown key ($n)"
|
||||
|
||||
sendcmd <ans5/unknownkey
|
||||
|
||||
$RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
|
||||
|
||||
sleep 2
|
||||
|
||||
nextpart ns4/named.run | grep "tsig key 'tsig_key': key name and algorithm do not match" >/dev/null || {
|
||||
echo_i "failed: expected status was not logged"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
$DIGCMD nil. TXT | grep 'unknown key AXFR' >/dev/null && {
|
||||
echo_i "failed"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "incorrect key ($n)"
|
||||
|
||||
sendcmd <ans5/wrongkey
|
||||
|
||||
$RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
|
||||
|
||||
sleep 2
|
||||
|
||||
nextpart ns4/named.run | grep "tsig key 'tsig_key': key name and algorithm do not match" >/dev/null || {
|
||||
echo_i "failed: expected status was not logged"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
$DIGCMD nil. TXT | grep 'incorrect key AXFR' >/dev/null && {
|
||||
echo_i "failed"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "bad question section ($n)"
|
||||
|
||||
sendcmd <ans5/wrongname
|
||||
|
||||
$RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
|
||||
|
||||
sleep 2
|
||||
|
||||
nextpart ns4/named.run | grep "question name mismatch" >/dev/null || {
|
||||
echo_i "failed: expected status was not logged"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
$DIGCMD nil. TXT | grep 'wrong question AXFR' >/dev/null && {
|
||||
echo_i "failed"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "bad message id ($n)"
|
||||
|
||||
sendcmd <ans5/badmessageid
|
||||
|
||||
# Uncomment to see AXFR stream with mismatching IDs.
|
||||
# $DIG $DIGOPTS @10.53.0.5 -y "${DEFAULT_HMAC}:tsig_key:LSAnCU+Z" nil. AXFR +all
|
||||
|
||||
$RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
|
||||
|
||||
sleep 2
|
||||
|
||||
nextpart ns4/named.run | grep "Transfer status: unexpected error" >/dev/null || {
|
||||
echo_i "failed: expected status was not logged"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
$DIGCMD nil. TXT | grep 'bad message id' >/dev/null && {
|
||||
echo_i "failed"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "mismatched SOA ($n)"
|
||||
|
||||
sendcmd <ans5/soamismatch
|
||||
|
||||
$RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
|
||||
|
||||
sleep 2
|
||||
|
||||
nextpart ns4/named.run | grep "Transfer status: FORMERR" >/dev/null || {
|
||||
echo_i "failed: expected status was not logged"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
$DIGCMD nil. TXT | grep 'SOA mismatch AXFR' >/dev/null && {
|
||||
echo_i "failed"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "handle EDNS NOTIMP ($n)"
|
||||
|
||||
$RNDCCMD 10.53.0.4 null testing EDNS NOTIMP | sed 's/^/ns4 /' | cat_i
|
||||
|
||||
sendcmd <ans5/ednsnotimp
|
||||
|
||||
$RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
|
||||
|
||||
sleep 2
|
||||
|
||||
nextpart ns4/named.run | grep "Transfer status: NOTIMP" >/dev/null || {
|
||||
echo_i "failed: expected status was not logged"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "handle EDNS FORMERR ($n)"
|
||||
|
||||
$RNDCCMD 10.53.0.4 null testing EDNS FORMERR | sed 's/^/ns4 /' | cat_i
|
||||
|
||||
sendcmd <ans5/ednsformerr
|
||||
|
||||
$RNDCCMD 10.53.0.4 retransfer nil | sed 's/^/ns4 /' | cat_i
|
||||
|
||||
sleep 10
|
||||
|
||||
$DIGCMD nil. TXT | grep 'EDNS FORMERR' >/dev/null || {
|
||||
echo_i "failed"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "check that we ask for and got a EDNS EXPIRE response when transfering from a secondary ($n)"
|
||||
tmp=0
|
||||
msg="zone edns-expire/IN: zone transfer finished: success, expire=1814[0-4][0-9][0-9]"
|
||||
grep "$msg" ns7/named.run >/dev/null || tmp=1
|
||||
[ "$tmp" -ne 0 ] && echo_i "failed"
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "check that we ask for and get a EDNS EXPIRE response when refreshing ($n)"
|
||||
# force a refresh query
|
||||
$RNDCCMD 10.53.0.7 refresh edns-expire 2>&1 | sed 's/^/ns7 /' | cat_i
|
||||
sleep 10
|
||||
|
||||
# there may be multiple log entries so get the last one.
|
||||
expire=$(awk '/edns-expire\/IN: got EDNS EXPIRE of/ { x=$8 } END { print x }' ns7/named.run)
|
||||
test ${expire:-0} -gt 0 -a ${expire:-0} -lt 1814400 || {
|
||||
echo_i "failed (expire=${expire:-0})"
|
||||
status=$((status + 1))
|
||||
}
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "test smaller transfer TCP message size ($n)"
|
||||
$DIG $DIGOPTS example. @10.53.0.8 axfr \
|
||||
-y "${DEFAULT_HMAC}:key1.:1234abcd8765" >dig.out.msgsize.test$n || status=1
|
||||
|
||||
bytes=$(wc -c <dig.out.msgsize.test$n)
|
||||
if [ $bytes -ne 459357 ]; then
|
||||
echo_i "failed axfr size check"
|
||||
status=$((status + 1))
|
||||
fi
|
||||
|
||||
num_messages=$(cat ns8/named.run | grep "sending TCP message of" | wc -l)
|
||||
if [ $num_messages -le 300 ]; then
|
||||
echo_i "failed transfer message count check"
|
||||
status=$((status + 1))
|
||||
fi
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "test mapped zone with out of zone data ($n)"
|
||||
tmp=0
|
||||
$DIG -p ${PORT} txt mapped @10.53.0.3 >dig.out.1.test$n
|
||||
grep "status: NOERROR," dig.out.1.test$n >/dev/null || tmp=1
|
||||
stop_server ns3
|
||||
start_server --noclean --restart --port ${PORT} ns3
|
||||
check_mapped() {
|
||||
$DIG -p ${PORT} txt mapped @10.53.0.3 >dig.out.2.test$n
|
||||
grep "status: NOERROR," dig.out.2.test$n >/dev/null || return 1
|
||||
$DIG -p ${PORT} axfr mapped @10.53.0.3 >dig.out.3.test$n
|
||||
digcomp knowngood.mapped dig.out.3.test$n || return 1
|
||||
return 0
|
||||
}
|
||||
retry_quiet 10 check_mapped || tmp=1
|
||||
[ "$tmp" -ne 0 ] && echo_i "failed"
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "test that a zone with too many records is rejected (AXFR) ($n)"
|
||||
tmp=0
|
||||
grep "'axfr-too-big/IN'.*: too many records" ns6/named.run >/dev/null || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "test that a zone with too many records is rejected (IXFR) ($n)"
|
||||
tmp=0
|
||||
nextpart ns6/named.run >/dev/null
|
||||
$NSUPDATE <<EOF
|
||||
zone ixfr-too-big
|
||||
server 10.53.0.1 ${PORT}
|
||||
update add the-31st-record.ixfr-too-big 0 TXT this is it
|
||||
send
|
||||
EOF
|
||||
msg="'ixfr-too-big/IN' from 10.53.0.1#${PORT}: Transfer status: too many records"
|
||||
wait_for_log 10 "$msg" ns6/named.run || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "test that a zone with too many diffs (IXFR) is retried with AXFR ($n)"
|
||||
tmp=0
|
||||
nextpart ns6/named.run >/dev/null
|
||||
$NSUPDATE <<EOF
|
||||
zone ixfr-too-many-diffs
|
||||
server 10.53.0.1 ${PORT}
|
||||
update add the-31st-record.ixfr-too-many-diffs 0 TXT too
|
||||
update add the-32nd-record.ixfr-too-many-diffs 0 TXT many
|
||||
update add the-33rd-record.ixfr-too-many-diffs 0 TXT diffs
|
||||
update add the-34th-record.ixfr-too-many-diffs 0 TXT for
|
||||
update add the-35th-record.ixfr-too-many-diffs 0 TXT ixfr
|
||||
send
|
||||
EOF
|
||||
msg="'ixfr-too-many-diffs/IN' from 10.53.0.1#${PORT}: Transfer status: success"
|
||||
wait_for_log 10 "$msg" ns6/named.run || tmp=1
|
||||
msg="'ixfr-too-many-diffs/IN' from 10.53.0.1#${PORT}: too many diffs, retrying with AXFR"
|
||||
grep -F "$msg" ns6/named.run >/dev/null || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "checking whether dig calculates AXFR statistics correctly ($n)"
|
||||
tmp=0
|
||||
# Loop until the secondary server manages to transfer the "xfer-stats" zone so
|
||||
# that we can both check dig output and immediately proceed with the next test.
|
||||
# Use -b so that we can discern between incoming and outgoing transfers in ns3
|
||||
# logs later on.
|
||||
wait_for_xfer() (
|
||||
$DIG $DIGOPTS +edns +nocookie +noexpire +stat -b 10.53.0.2 @10.53.0.3 xfer-stats. AXFR >dig.out.ns3.test$n
|
||||
grep "; Transfer failed" dig.out.ns3.test$n >/dev/null || return 0
|
||||
return 1
|
||||
)
|
||||
if retry_quiet 10 wait_for_xfer; then
|
||||
get_dig_xfer_stats dig.out.ns3.test$n >stats.dig
|
||||
diff axfr-stats.good stats.dig || tmp=1
|
||||
else
|
||||
echo_i "timed out waiting for zone transfer"
|
||||
fi
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
# Note: in the next two tests, we use ns3 logs for checking both incoming and
|
||||
# outgoing transfer statistics as ns3 is both a secondary server (for ns1) and a
|
||||
# primary server (for dig queries from the previous test) for "xfer-stats".
|
||||
n=$((n + 1))
|
||||
echo_i "checking whether named calculates incoming AXFR statistics correctly ($n)"
|
||||
tmp=0
|
||||
get_named_xfer_stats ns3/named.run 10.53.0.1 xfer-stats "Transfer completed" >stats.incoming
|
||||
diff axfr-stats.good stats.incoming || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "checking whether named calculates outgoing AXFR statistics correctly ($n)"
|
||||
tmp=0
|
||||
check_xfer_stats() {
|
||||
get_named_xfer_stats ns3/named.run 10.53.0.2 xfer-stats "AXFR ended" >stats.outgoing
|
||||
diff axfr-stats.good stats.outgoing >/dev/null
|
||||
}
|
||||
retry_quiet 10 check_xfer_stats || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
wait_for_message() (
|
||||
nextpartpeek ns6/named.run >wait_for_message.$n
|
||||
grep -F "$1" wait_for_message.$n >/dev/null
|
||||
)
|
||||
|
||||
nextpart ns6/named.run >/dev/null
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "test that named tries the next primary in the list when the first one fails (XoT -> Do53) ($n)"
|
||||
tmp=0
|
||||
$RNDCCMD 10.53.0.6 retransfer xot-primary-try-next 2>&1 | sed 's/^/ns6 /' | cat_i
|
||||
msg="'xot-primary-try-next/IN' from 10.53.0.1#${PORT}: Transfer status: success"
|
||||
retry_quiet 60 wait_for_message "$msg" || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
nextpart ns6/named.run >/dev/null
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "test that named tries the next primary in the list when the first one is already marked as unreachable (XoT -> Do53) ($n)"
|
||||
tmp=0
|
||||
$RNDCCMD 10.53.0.6 retransfer xot-primary-try-next 2>&1 | sed 's/^/ns6 /' | cat_i
|
||||
msg="'xot-primary-try-next/IN' from 10.53.0.1#${PORT}: Transfer status: success"
|
||||
retry_quiet 60 wait_for_message "$msg" || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
# Restart ns1 with -T transferslowly
|
||||
stop_server ns1
|
||||
cp ns1/named2.conf ns1/named.conf
|
||||
start_server --noclean --restart --port ${PORT} ns1 -- "-D xfer-ns1 $NS_PARAMS -T transferinsecs -T transferslowly"
|
||||
sleep 1
|
||||
|
||||
nextpart ns6/named.run >/dev/null
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "test rndc retransfer -force ($n)"
|
||||
tmp=0
|
||||
$RNDCCMD 10.53.0.6 retransfer axfr-rndc-retransfer-force 2>&1 | sed 's/^/ns6 /' | cat_i
|
||||
# Wait for at least one message
|
||||
msg="'axfr-rndc-retransfer-force/IN' from 10.53.0.1#${PORT}: received"
|
||||
retry_quiet 5 wait_for_message "$msg" || tmp=1
|
||||
# Issue a retransfer-force command which should cancel the ongoing transfer and start a new one
|
||||
$RNDCCMD 10.53.0.6 retransfer -force axfr-rndc-retransfer-force 2>&1 | sed 's/^/ns6 /' | cat_i
|
||||
msg="'axfr-rndc-retransfer-force/IN' from 10.53.0.1#${PORT}: Transfer status: shutting down"
|
||||
retry_quiet 5 wait_for_message "$msg" || tmp=1
|
||||
# Wait for the new transfer to complete successfully
|
||||
msg="'axfr-rndc-retransfer-force/IN' from 10.53.0.1#${PORT}: Transfer status: success"
|
||||
retry_quiet 30 wait_for_message "$msg" || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
nextpart ns6/named.run >/dev/null
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "test min-transfer-rate-in with 5 seconds timeout ($n)"
|
||||
$RNDCCMD 10.53.0.6 retransfer axfr-min-transfer-rate 2>&1 | sed 's/^/ns6 /' | cat_i
|
||||
tmp=0
|
||||
retry_quiet 10 wait_for_message "minimum transfer rate reached: timed out" || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
nextpart ns6/named.run >/dev/null
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "test max-transfer-time-in with 1 second timeout ($n)"
|
||||
$RNDCCMD 10.53.0.6 retransfer axfr-max-transfer-time 2>&1 | sed 's/^/ns6 /' | cat_i
|
||||
tmp=0
|
||||
retry_quiet 10 wait_for_message "maximum transfer time exceeded: timed out" || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
# Restart ns1 with -T transferstuck
|
||||
stop_server ns1
|
||||
cp ns1/named3.conf ns1/named.conf
|
||||
start_server --noclean --restart --port ${PORT} ns1 -- "-D xfer-ns1 $NS_PARAMS -T transferinsecs -T transferstuck"
|
||||
sleep 1
|
||||
|
||||
nextpart ns6/named.run >/dev/null
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "test max-transfer-idle-in with 50 seconds timeout ($n)"
|
||||
start=$(date +%s)
|
||||
$RNDCCMD 10.53.0.6 retransfer axfr-max-idle-time 2>&1 | sed 's/^/ns6 /' | cat_i
|
||||
tmp=0
|
||||
retry_quiet 60 wait_for_message "maximum idle time exceeded: timed out" || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
if [ $tmp -eq 0 ]; then
|
||||
now=$(date +%s)
|
||||
diff=$((now - start))
|
||||
# we expect a timeout in 50 seconds
|
||||
test $diff -lt 50 && tmp=1
|
||||
test $diff -ge 59 && tmp=1
|
||||
if test $tmp != 0; then echo_i "unexpected diff value: ${diff}"; fi
|
||||
fi
|
||||
status=$((status + tmp))
|
||||
|
||||
nextpart ns6/named.run >/dev/null
|
||||
|
||||
sendcmd() (
|
||||
dig_with_opts "@${1}" "${2}._control." TXT +time=5 +tries=1 +tcp >/dev/null 2>&1
|
||||
)
|
||||
|
||||
# See #5307#note_558185
|
||||
n=$((n + 1))
|
||||
echo_i "test reconfiguration when zone transfer is in the middle of a SOA query (part 1) ($n)"
|
||||
tmp=0
|
||||
# Check that xfr-and-reconfig has been successfully transferred by the secondary.
|
||||
grep -F 'zone xfr-and-reconfig/IN: zone transfer finished: success' ns6/named.run 2>&1 >/dev/null || tmp=0
|
||||
# Make ans6 receive queries without responding to them.
|
||||
sendcmd 10.53.0.9 "disable.send-responses"
|
||||
sleep 1
|
||||
# Try to reload the zone from an unresponsive primary.
|
||||
$RNDCCMD 10.53.0.6 reload xfr-and-reconfig 2>&1 | sed 's/^/ns6 /' | cat_i
|
||||
sleep 1
|
||||
# Reconfigure named while zone transfer attempt is in progress.
|
||||
$RNDCCMD 10.53.0.6 reconfig 2>&1 | sed 's/^/ns6 /' | cat_i
|
||||
# Confirm that the ongoing SOA request was canceled, caused by the reconfiguratoin.
|
||||
retry_quiet 60 wait_for_message "refresh: request result: operation canceled" || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
nextpart ns6/named.run >/dev/null
|
||||
|
||||
n=$((n + 1))
|
||||
echo_i "test reconfiguration when zone transfer is in the middle of a SOA query (part 2) ($n)"
|
||||
tmp=0
|
||||
# Make ans6 receive queries and respond to them.
|
||||
sendcmd 10.53.0.9 "enable.send-responses"
|
||||
sleep 1
|
||||
# Try to reload the zone from the primary.
|
||||
$RNDCCMD 10.53.0.6 reload xfr-and-reconfig 2>&1 | sed 's/^/ns6 /' | cat_i
|
||||
retry_quiet 60 wait_for_message "zone xfr-and-reconfig/IN: Transfer started." || tmp=1
|
||||
if test $tmp != 0; then echo_i "failed"; fi
|
||||
status=$((status + tmp))
|
||||
|
||||
echo_i "exit status: $status"
|
||||
[ $status -eq 0 ] || exit 1
|
||||
62
bin/tests/system/xfer/tests_retransfer_with_force.py
Normal file
62
bin/tests/system/xfer/tests_retransfer_with_force.py
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
import isctest
|
||||
|
||||
|
||||
def bootstrap():
|
||||
isctest.log.info("Restart ns1 with -T transferslowly")
|
||||
with open("ns1/named.args", "w", encoding="utf-8") as argsfile:
|
||||
argsfile.write(
|
||||
"-D xfer-ns1 -m record -c named.conf -d 99 -g -T maxcachesize=2097152 -T transferinsecs -T transferslowly"
|
||||
)
|
||||
return {
|
||||
"enable_some_zones": False,
|
||||
}
|
||||
|
||||
|
||||
def test_wait_for_zone_retransfer(named_port, ns6):
|
||||
isctest.log.info("Wait for at least one message")
|
||||
with ns6.watch_log_from_here() as watcher:
|
||||
ns6.rndc("retransfer axfr-rndc-retransfer-force.")
|
||||
watcher.wait_for_line(
|
||||
f"'axfr-rndc-retransfer-force/IN' from 10.53.0.1#{named_port}: received"
|
||||
)
|
||||
|
||||
|
||||
def test_cancel_ongoing_retransfer(named_port, ns6):
|
||||
isctest.log.info(
|
||||
"Issue a retransfer-force command which should cancel the ongoing transfer and start a new one."
|
||||
)
|
||||
with ns6.watch_log_from_here(timeout=30) as watcher_transfer_success:
|
||||
with ns6.watch_log_from_here() as watcher_transfer_shutting_down:
|
||||
ns6.rndc("retransfer -force axfr-rndc-retransfer-force.")
|
||||
watcher_transfer_shutting_down.wait_for_line(
|
||||
f"'axfr-rndc-retransfer-force/IN' from 10.53.0.1#{named_port}: Transfer status: shutting down"
|
||||
)
|
||||
isctest.log.info("Wait for the new transfer to complete successfully")
|
||||
watcher_transfer_success.wait_for_line(
|
||||
f"'axfr-rndc-retransfer-force/IN' from 10.53.0.1#{named_port}: Transfer status: success"
|
||||
)
|
||||
|
||||
|
||||
def test_min_transfer_rate_in(ns6):
|
||||
isctest.log.info("Test min-transfer-rate-in with 5 seconds timeout")
|
||||
with ns6.watch_log_from_here() as watcher:
|
||||
ns6.rndc("retransfer axfr-min-transfer-rate.")
|
||||
watcher.wait_for_line("minimum transfer rate reached: timed out")
|
||||
|
||||
|
||||
def test_max_transfer_time_in(ns6):
|
||||
isctest.log.info("Test max-transfer-time-in with 1 second timeout")
|
||||
with ns6.watch_log_from_here() as watcher:
|
||||
ns6.rndc("retransfer axfr-max-transfer-time.")
|
||||
watcher.wait_for_line("maximum transfer time exceeded: timed out")
|
||||
38
bin/tests/system/xfer/tests_retransfer_with_transferstuck.py
Normal file
38
bin/tests/system/xfer/tests_retransfer_with_transferstuck.py
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
import time
|
||||
|
||||
import isctest
|
||||
|
||||
|
||||
def bootstrap():
|
||||
isctest.log.info("Restart ns1 with -T transferstuck")
|
||||
with open("ns1/named.args", "w", encoding="utf-8") as argsfile:
|
||||
argsfile.write(
|
||||
"-D xfer-ns1 -m record -c named.conf -d 99 -g -T maxcachesize=2097152 -T transferinsecs -T transferstuck"
|
||||
)
|
||||
return {
|
||||
"enable_some_zones": False,
|
||||
"enable_only_axfr_max_idle_time": True,
|
||||
}
|
||||
|
||||
|
||||
def test_retransfer_with_transferstuck(ns6):
|
||||
isctest.log.info("Test max-transfer-idle-in with 50 seconds timeout")
|
||||
start_time = time.time()
|
||||
with ns6.watch_log_from_here(timeout=60) as watcher:
|
||||
ns6.rndc("retransfer -force axfr-max-idle-time.")
|
||||
watcher.wait_for_line("maximum idle time exceeded: timed out")
|
||||
end_time = time.time()
|
||||
assert (
|
||||
50 <= (end_time - start_time) < 59
|
||||
), "max-transfer-idle-in did not wait for the expected time"
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
import pytest
|
||||
|
||||
pytestmark = pytest.mark.extra_artifacts(
|
||||
[
|
||||
"axfr.out",
|
||||
"dig.out.*",
|
||||
"stats.*",
|
||||
"wait_for_message.*",
|
||||
"ans*/ans.run",
|
||||
"ns1/dot-fallback.db",
|
||||
"ns1/edns-expire.db",
|
||||
"ns1/ixfr-too-big.db",
|
||||
"ns1/ixfr-too-big.db.jnl",
|
||||
"ns1/ixfr-too-many-diffs.db.jnl",
|
||||
"ns1/sec.db",
|
||||
"ns2/dot-fallback.db",
|
||||
"ns2/example.db",
|
||||
"ns2/example.db.jnl",
|
||||
"ns2/mapped.db",
|
||||
"ns2/sec.db",
|
||||
"ns2/tsigzone.db",
|
||||
"ns3/example.bk",
|
||||
"ns3/example.bk.jnl",
|
||||
"ns3/mapped.bk",
|
||||
"ns3/primary.bk",
|
||||
"ns3/primary.bk.jnl",
|
||||
"ns3/tsigzone.bk",
|
||||
"ns3/xfer-stats.bk",
|
||||
"ns4/nil.db",
|
||||
"ns4/root.db",
|
||||
"ns6/axfr-max-idle-time.bk",
|
||||
"ns6/axfr-max-transfer-time.bk",
|
||||
"ns6/axfr-min-transfer-rate.bk",
|
||||
"ns6/axfr-rndc-retransfer-force.bk",
|
||||
"ns6/edns-expire.bk",
|
||||
"ns6/ixfr-too-big.bk",
|
||||
"ns6/ixfr-too-big.bk.jnl",
|
||||
"ns6/ixfr-too-many-diffs.bk",
|
||||
"ns6/primary.db",
|
||||
"ns6/primary.db.jnl",
|
||||
"ns6/sec.bk",
|
||||
"ns6/xot-primary-try-next.bk",
|
||||
"ns6/xfr-and-reconfig.bk",
|
||||
"ns7/edns-expire.bk",
|
||||
"ns7/primary2.db",
|
||||
"ns7/sec.bk",
|
||||
"ns7/sec.bk.jnl",
|
||||
"ns8/large.db",
|
||||
"ns8/small.db",
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def test_xfer(run_tests_sh):
|
||||
run_tests_sh()
|
||||
556
bin/tests/system/xfer/tests_xfer.py
Normal file
556
bin/tests/system/xfer/tests_xfer.py
Normal file
|
|
@ -0,0 +1,556 @@
|
|||
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# SPDX-License-Identifier: MPL-2.0
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
# See the COPYRIGHT file distributed with this work for additional
|
||||
# information regarding copyright ownership.
|
||||
|
||||
|
||||
import fileinput
|
||||
import os
|
||||
from re import compile as Re
|
||||
import socket
|
||||
import time
|
||||
|
||||
import pytest
|
||||
|
||||
import isctest
|
||||
from isctest.util import param
|
||||
|
||||
import dns.message
|
||||
|
||||
NEW_SOA_SERIAL = 1397051953
|
||||
OLD_SOA_SERIAL = 1397051952
|
||||
|
||||
|
||||
def sendcmd(cmdfile):
|
||||
host = "10.53.0.5"
|
||||
port = int(isctest.vars.ALL["EXTRAPORT1"])
|
||||
cmdfile = f"ans5/{cmdfile}"
|
||||
assert os.path.exists(cmdfile)
|
||||
|
||||
sock = socket.create_connection((host, port))
|
||||
with open(cmdfile, "r", encoding="utf-8") as f:
|
||||
for line in f:
|
||||
sock.sendall(line.encode())
|
||||
sock.close()
|
||||
|
||||
|
||||
@pytest.fixture(scope="module", autouse=True)
|
||||
def after_servers_start(templates, ns4):
|
||||
# initial correctly-signed transfer should succeed
|
||||
sendcmd("goodaxfr")
|
||||
|
||||
with ns4.watch_log_from_here() as watcher:
|
||||
templates.render("ns4/named.conf", {"ns4_as_secondary_for_nil": True})
|
||||
ns4.reconfigure()
|
||||
watcher.wait_for_line("Transfer status: success")
|
||||
|
||||
with ns4.watch_log_from_here() as watcher_retransfer_nil_success:
|
||||
ns4.rndc("retransfer nil.")
|
||||
watcher_retransfer_nil_success.wait_for_line("Transfer status: success")
|
||||
|
||||
|
||||
def get_response(msg, server_ip, allow_empty_answer=False):
|
||||
res = isctest.query.tcp(msg, server_ip)
|
||||
isctest.check.noerror(res)
|
||||
if not allow_empty_answer:
|
||||
assert len(res.answer) > 0
|
||||
return res
|
||||
|
||||
|
||||
def check_rdata_in_txt_record(rdata, should_exist=True):
|
||||
def check_data():
|
||||
qname = "nil."
|
||||
msg = dns.message.make_query(qname, "TXT")
|
||||
res = get_response(msg, "10.53.0.4")
|
||||
rrset = res.get_rrset(
|
||||
dns.message.ANSWER, qname, dns.rdataclass.IN, dns.rdatatype.TXT
|
||||
)
|
||||
found = rdata in rrset.to_text()
|
||||
if found == should_exist:
|
||||
return True
|
||||
status = "not found" if should_exist else "found"
|
||||
assert False, f"TXT rdata '{rdata}' {status} in the response\n{res}"
|
||||
|
||||
isctest.run.retry_with_timeout(check_data, timeout=10)
|
||||
|
||||
|
||||
def nsupdate(config):
|
||||
isctest.run.cmd(isctest.vars.ALL["NSUPDATE"], input_text=config.encode("utf-8"))
|
||||
|
||||
|
||||
def validate_axfr_from_query_and_file(msg, server_ip, filename):
|
||||
res = get_response(msg, server_ip)
|
||||
with open(filename, "r", encoding="utf-8") as file:
|
||||
expected = dns.message.from_file(file)
|
||||
isctest.check.rrsets_equal(expected.answer, res.answer)
|
||||
|
||||
|
||||
def test_zone_transfer_fallback_to_dns_after_dot_failed():
|
||||
msg = dns.message.make_query("dot-fallback.", "AXFR")
|
||||
validate_axfr_from_query_and_file(msg, "10.53.0.2", "response3.good")
|
||||
|
||||
|
||||
def test_tsig_signed_zone_transfer():
|
||||
key = dns.tsig.Key(
|
||||
name="tsigzone.",
|
||||
secret="1234abcd8765",
|
||||
algorithm=isctest.vars.ALL["DEFAULT_HMAC"],
|
||||
)
|
||||
msg = dns.message.make_query("tsigzone.", "AXFR")
|
||||
msg.use_tsig(keyring=key)
|
||||
res2 = get_response(msg, "10.53.0.2")
|
||||
res3 = get_response(msg, "10.53.0.3")
|
||||
isctest.check.rrsets_equal(res2.answer, res3.answer)
|
||||
|
||||
|
||||
def test_zone_is_dumped_after_transfer(ns1, ns2, ns3, ns6, ns7):
|
||||
def check_soa_serial_with_retry(checked_zones, recovery_function):
|
||||
def get_soa_serial(qname, server_ip, serial):
|
||||
msg = dns.message.make_query(qname, "SOA")
|
||||
res = get_response(msg, server_ip)
|
||||
rrset = res.get_rrset(
|
||||
dns.message.ANSWER, qname, dns.rdataclass.IN, dns.rdatatype.SOA
|
||||
)
|
||||
return rrset[0].serial == serial
|
||||
|
||||
def find_serial_in_responses():
|
||||
serial_found_in_responses = 0
|
||||
for server, zone in checked_zones:
|
||||
if get_soa_serial(zone, server, NEW_SOA_SERIAL):
|
||||
serial_found_in_responses += 1
|
||||
if serial_found_in_responses == len(checked_zones):
|
||||
return True
|
||||
recovery_function()
|
||||
return False
|
||||
|
||||
isctest.run.retry_with_timeout(
|
||||
find_serial_in_responses,
|
||||
timeout=20,
|
||||
msg=f"SOA serial {NEW_SOA_SERIAL} not found in responses",
|
||||
)
|
||||
|
||||
def validate_axfr_from_query_and_query(msg, server_ip1, server_ip2):
|
||||
res1 = get_response(msg, server_ip1)
|
||||
res2 = get_response(msg, server_ip2)
|
||||
isctest.check.rrsets_equal(res1.answer, res2.answer)
|
||||
|
||||
def rndc_reload(*servers):
|
||||
for server in servers:
|
||||
server.reload()
|
||||
|
||||
isctest.log.info("reload servers for preparation of ixfr-from-differences tests")
|
||||
rndc_reload(ns1, ns2, ns3, ns6, ns7)
|
||||
|
||||
isctest.log.info("basic zone transfer")
|
||||
msg = dns.message.make_query("example.", "AXFR")
|
||||
validate_axfr_from_query_and_file(msg, "10.53.0.2", "response1.good")
|
||||
validate_axfr_from_query_and_file(msg, "10.53.0.3", "response1.good")
|
||||
|
||||
isctest.log.info("update primary zones for ixfr-from-differences tests")
|
||||
for zone_file in [
|
||||
"ns1/sec.db",
|
||||
"ns2/example.db",
|
||||
"ns6/primary.db",
|
||||
"ns7/primary2.db",
|
||||
]:
|
||||
with fileinput.FileInput(zone_file, inplace=True) as file:
|
||||
for line in file:
|
||||
print(
|
||||
line.replace(" 0.0.0.0", " 0.0.0.1").replace(
|
||||
str(OLD_SOA_SERIAL), str(NEW_SOA_SERIAL)
|
||||
),
|
||||
end="",
|
||||
)
|
||||
rndc_reload(ns1, ns2, ns6, ns7)
|
||||
|
||||
qname = "secondary."
|
||||
msg = dns.message.make_query(qname, "SOA")
|
||||
res = get_response(msg, "10.53.0.2")
|
||||
rrset = res.get_rrset(
|
||||
dns.message.ANSWER, qname, dns.rdataclass.IN, dns.rdatatype.SOA
|
||||
)
|
||||
assert (
|
||||
rrset[0].serial == OLD_SOA_SERIAL
|
||||
), f"SOA serial {OLD_SOA_SERIAL} not found in the response"
|
||||
|
||||
sec_db = isctest.text.TextFile("ns2/sec.db")
|
||||
assert (
|
||||
f"{OLD_SOA_SERIAL} ; serial" in sec_db
|
||||
), f"{OLD_SOA_SERIAL} not found in ns2/sec.db"
|
||||
|
||||
isctest.log.info("wait for reloads")
|
||||
reloaded_zones = (
|
||||
("10.53.0.6", "primary."),
|
||||
("10.53.0.1", "secondary."),
|
||||
("10.53.0.2", "example."),
|
||||
)
|
||||
check_soa_serial_with_retry(reloaded_zones, lambda: time.sleep(1))
|
||||
|
||||
def notify_some_servers():
|
||||
ns6.rndc("notify primary.")
|
||||
ns1.rndc("notify secondary.")
|
||||
ns2.rndc("notify example.")
|
||||
time.sleep(2)
|
||||
|
||||
isctest.log.info("wait for transfers")
|
||||
transfered_zones = (
|
||||
("10.53.0.3", "example."),
|
||||
("10.53.0.3", "primary."),
|
||||
("10.53.0.6", "secondary."),
|
||||
)
|
||||
check_soa_serial_with_retry(transfered_zones, notify_some_servers)
|
||||
|
||||
msg = dns.message.make_query("example.", "AXFR")
|
||||
validate_axfr_from_query_and_file(msg, "10.53.0.3", "response2.good")
|
||||
|
||||
isctest.log.info("ns3 has a journal iff it received an IXFR.")
|
||||
assert os.path.exists("ns3/example.bk")
|
||||
assert os.path.exists("ns3/example.bk.jnl")
|
||||
|
||||
isctest.log.info("testing ixfr-from-differences primary; (primary zone)")
|
||||
msg = dns.message.make_query("primary.", "AXFR")
|
||||
validate_axfr_from_query_and_query(msg, "10.53.0.6", "10.53.0.3")
|
||||
|
||||
isctest.log.info("ns3 has a journal iff it received an IXFR.")
|
||||
assert os.path.exists("ns3/primary.bk")
|
||||
assert os.path.exists("ns3/primary.bk.jnl")
|
||||
|
||||
isctest.log.info("testing ixfr-from-differences primary; (secondary zone)")
|
||||
msg = dns.message.make_query("secondary.", "AXFR")
|
||||
validate_axfr_from_query_and_query(msg, "10.53.0.6", "10.53.0.1")
|
||||
|
||||
isctest.log.info("ns6 has a journal iff it received an IXFR.")
|
||||
assert os.path.exists("ns6/sec.bk")
|
||||
assert not os.path.exists("ns6/sec.bk.jnl")
|
||||
|
||||
isctest.log.info("testing ixfr-from-differences secondary; (primary zone)")
|
||||
|
||||
isctest.log.info("ns7 has a journal iff it generates an IXFR.")
|
||||
assert os.path.exists("ns7/primary2.db")
|
||||
assert not os.path.exists("ns7/primary2.db.jnl")
|
||||
|
||||
isctest.log.info("testing ixfr-from-differences secondary; (secondary zone)")
|
||||
msg = dns.message.make_query("secondary.", "AXFR")
|
||||
validate_axfr_from_query_and_query(msg, "10.53.0.1", "10.53.0.7")
|
||||
|
||||
isctest.log.info("ns7 has a journal iff it generates an IXFR.")
|
||||
assert os.path.exists("ns7/sec.bk")
|
||||
assert os.path.exists("ns7/sec.bk.jnl")
|
||||
|
||||
|
||||
# check that a multi-message uncompressable zone transfers
|
||||
def test_multi_message_uncompressable_zone_transfers(named_port):
|
||||
zone = dns.zone.Zone(".")
|
||||
isctest.log.info("Initiate a zone transfer from the server")
|
||||
dns.query.inbound_xfr("10.53.0.4", zone, port=named_port, timeout=10, lifetime=10)
|
||||
|
||||
for name, node in zone.nodes.items():
|
||||
label = name.to_text()
|
||||
fqdn = name.derelativize(zone.origin).to_text()
|
||||
|
||||
for rdataset in node.rdatasets:
|
||||
rtype = dns.rdatatype.to_text(rdataset.rdtype)
|
||||
for rdata in rdataset:
|
||||
if rtype == "A":
|
||||
# The A records name is either "." or in the format "xN",
|
||||
# where N is a number between 0 and 9999
|
||||
assert fqdn == "." or (
|
||||
label.startswith("x")
|
||||
and label[1:].isdigit()
|
||||
and 0 <= int(label[1:]) < 10000
|
||||
)
|
||||
elif rtype in ("SOA", "NS"):
|
||||
assert fqdn == "."
|
||||
else:
|
||||
assert (
|
||||
False
|
||||
), f"Unexpected RRset: {fqdn} {rdataset.ttl} IN {rtype} {rdata}"
|
||||
|
||||
|
||||
# Initially, ns4 is not authoritative for anything.
|
||||
# Now that ans is up and running with the right data, we make ns4
|
||||
# a secondary for nil.
|
||||
def test_make_ns4_secondary_for_nil():
|
||||
# now we test transfers with assorted TSIG glitches.
|
||||
# testing that incorrectly signed transfers will fail.
|
||||
|
||||
def wait_for_soa():
|
||||
def _wait_for_soa():
|
||||
qname = "nil."
|
||||
msg = dns.message.make_query(qname, "SOA")
|
||||
res = isctest.query.tcp(msg, "10.53.0.4")
|
||||
rrset = res.get_rrset(
|
||||
dns.message.ANSWER, qname, dns.rdataclass.IN, dns.rdatatype.SOA
|
||||
)
|
||||
return True if rrset else time.sleep(1)
|
||||
|
||||
isctest.run.retry_with_timeout(_wait_for_soa, timeout=10)
|
||||
return True
|
||||
|
||||
sendcmd("goodaxfr")
|
||||
assert wait_for_soa(), "SOA not found in the response"
|
||||
check_rdata_in_txt_record("initial AXFR")
|
||||
|
||||
|
||||
def test_handle_ixfr_notimp(ns4):
|
||||
sendcmd("ixfrnotimp")
|
||||
with ns4.watch_log_from_here() as watcher_transfer_success:
|
||||
with ns4.watch_log_from_here() as watcher_requesting_ixfr:
|
||||
ns4.rndc("refresh nil.")
|
||||
watcher_requesting_ixfr.wait_for_line(
|
||||
"zone nil/IN: requesting IXFR from 10.53.0.5"
|
||||
)
|
||||
watcher_transfer_success.wait_for_line("Transfer status: success")
|
||||
|
||||
check_rdata_in_txt_record("IXFR NOTIMP")
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"command_file,expected_rdata,named_log_line",
|
||||
[
|
||||
param(
|
||||
"unsigned",
|
||||
"unsigned AXFR",
|
||||
"Transfer status: expected a TSIG or SIG(0)",
|
||||
),
|
||||
param(
|
||||
"badkeydata",
|
||||
"bad keydata AXFR",
|
||||
"Transfer status: tsig verify failure",
|
||||
),
|
||||
param(
|
||||
"partial",
|
||||
"partially signed AXFR",
|
||||
"Transfer status: expected a TSIG or SIG(0)",
|
||||
),
|
||||
param(
|
||||
"unknownkey",
|
||||
"unknown key AXFR",
|
||||
"tsig key 'tsig_key': key name and algorithm do not match",
|
||||
),
|
||||
param(
|
||||
"wrongkey",
|
||||
"incorrect key AXFR",
|
||||
"tsig key 'tsig_key': key name and algorithm do not match",
|
||||
),
|
||||
param(
|
||||
"wrongname",
|
||||
"wrong question AXFR",
|
||||
"question name mismatch",
|
||||
),
|
||||
param(
|
||||
"badmessageid",
|
||||
"bad message id",
|
||||
"Transfer status: unexpected error",
|
||||
),
|
||||
param(
|
||||
"soamismatch",
|
||||
"SOA mismatch AXFR",
|
||||
"Transfer status: FORMERR",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_under_signed_transfer(command_file, expected_rdata, named_log_line, ns4):
|
||||
sendcmd(command_file)
|
||||
with ns4.watch_log_from_here() as watcher:
|
||||
ns4.rndc("retransfer nil.")
|
||||
watcher.wait_for_line(named_log_line)
|
||||
check_rdata_in_txt_record(expected_rdata, should_exist=False)
|
||||
|
||||
|
||||
def test_handle_edns_notimp(ns4):
|
||||
sendcmd("ednsnotimp")
|
||||
with ns4.watch_log_from_here() as watcher:
|
||||
ns4.rndc("retransfer nil.")
|
||||
watcher.wait_for_line("Transfer status: NOTIMP")
|
||||
|
||||
|
||||
def test_handle_edns_formerr(ns4):
|
||||
sendcmd("ednsformerr")
|
||||
with ns4.watch_log_from_here() as watcher:
|
||||
ns4.rndc("retransfer nil.")
|
||||
watcher.wait_for_line("Transfer status: success")
|
||||
check_rdata_in_txt_record("EDNS FORMERR")
|
||||
|
||||
|
||||
# check that we asked for and received a EDNS EXPIRE response when transfering from a secondary
|
||||
def test_edns_expire_from_secondary(ns7):
|
||||
pattern = Re(
|
||||
"zone edns-expire/IN: zone transfer finished: success, expire=1814[0-4][0-9][0-9]"
|
||||
)
|
||||
with ns7.watch_log_from_start() as watcher:
|
||||
watcher.wait_for_line(pattern)
|
||||
|
||||
|
||||
# check that we ask for and get a EDNS EXPIRE response when refreshing
|
||||
def test_edns_expire_refresh(ns7):
|
||||
time.sleep(1)
|
||||
with ns7.watch_log_from_here() as watcher:
|
||||
ns7.rndc("refresh edns-expire.")
|
||||
isctest.log.info("make sure the EDNS EXPIRE of 1814400 decreases a slightly")
|
||||
pattern = Re("zone edns-expire/IN: got EDNS EXPIRE of 1814[0-3][0-9][0-9]")
|
||||
watcher.wait_for_line(pattern)
|
||||
|
||||
|
||||
# test small transfer TCP message size (transfer-message-size 1024;)
|
||||
def test_tcp_message_compression_makes_difference(named_port, ns8):
|
||||
key = dns.tsig.Key(
|
||||
name="key1.",
|
||||
secret="1234abcd8765",
|
||||
algorithm=isctest.vars.ALL["DEFAULT_HMAC"],
|
||||
)
|
||||
msg = dns.message.make_query("example.", "AXFR")
|
||||
msg.use_tsig(keyring=key)
|
||||
zone = dns.zone.Zone("example.")
|
||||
dns.query.inbound_xfr(
|
||||
"10.53.0.8", zone, query=msg, port=named_port, timeout=10, lifetime=10
|
||||
)
|
||||
|
||||
xfr_size = 0
|
||||
for name, node in zone.nodes.items():
|
||||
fqdn = name.derelativize(zone.origin).to_text()
|
||||
for rdataset in node.rdatasets:
|
||||
xfr_size += len(f"{fqdn} {rdataset}")
|
||||
assert xfr_size >= 452172, f"XFR size {xfr_size} seems too small"
|
||||
|
||||
assert len(ns8.log.grep("sending TCP message of")) > 300
|
||||
|
||||
|
||||
# test mapped. zone with out zone data
|
||||
def test_mapped_zone(named_port, ns3):
|
||||
msg_txt = dns.message.make_query("mapped.", "TXT")
|
||||
get_response(msg_txt, "10.53.0.3", allow_empty_answer=True)
|
||||
|
||||
ns3.stop()
|
||||
ns3.start(["--noclean", "--restart", "--port", str(named_port)])
|
||||
|
||||
get_response(msg_txt, "10.53.0.3", allow_empty_answer=True)
|
||||
|
||||
msg_axfr = dns.message.make_query("mapped.", "AXFR")
|
||||
validate_axfr_from_query_and_file(msg_axfr, "10.53.0.3", "knowngood.mapped")
|
||||
|
||||
|
||||
# test that a zone with too many records is rejected (AXFR)
|
||||
def test_axfr_too_many_records(ns6):
|
||||
with ns6.watch_log_from_start() as watcher:
|
||||
watcher.wait_for_line(Re("'axfr-too-big/IN'.*: too many records"))
|
||||
|
||||
|
||||
# test that a zone with too many records is rejected (IXFR)
|
||||
def test_ixfr_too_many_records(named_port, ns6):
|
||||
with ns6.watch_log_from_here(timeout=20) as watcher:
|
||||
nsupdate_config = f"""
|
||||
zone ixfr-too-big
|
||||
server 10.53.0.1 {named_port}
|
||||
update add the-31st-record.ixfr-too-big 0 TXT this is it
|
||||
send
|
||||
"""
|
||||
nsupdate(nsupdate_config)
|
||||
watcher.wait_for_line("Transfer status: too many records")
|
||||
|
||||
|
||||
# test that a zone with too many diffs (IXFR) is retried with AXFR
|
||||
def test_ixfr_too_many_diffs(named_port, ns6):
|
||||
nsupdate_config = f"""
|
||||
zone ixfr-too-many-diffs
|
||||
server 10.53.0.1 {named_port}
|
||||
update add the-31st-record.ixfr-too-many-diffs 0 TXT too
|
||||
update add the-32nd-record.ixfr-too-many-diffs 0 TXT many
|
||||
update add the-33rd-record.ixfr-too-many-diffs 0 TXT diffs
|
||||
update add the-34th-record.ixfr-too-many-diffs 0 TXT for
|
||||
update add the-35th-record.ixfr-too-many-diffs 0 TXT ixfr
|
||||
send
|
||||
"""
|
||||
log_sequence = ["too many diffs, retrying with AXFR", "Transfer status: success"]
|
||||
with ns6.watch_log_from_here() as watcher_transfer_status:
|
||||
nsupdate(nsupdate_config)
|
||||
watcher_transfer_status.wait_for_sequence(log_sequence)
|
||||
|
||||
|
||||
# checking whether dig calculates AXFR statistics correctly
|
||||
def test_dig_and_named_axfr_stats(named_port, ns3):
|
||||
# Use ns3 logs for checking incoming transfer statistics as ns3 is a
|
||||
# secondary server (for ns1) for "xfer-stats".
|
||||
with ns3.watch_log_from_start() as watcher_transfer_completed:
|
||||
pattern_transfer_completed = (
|
||||
"Transfer completed: 16 messages, 10003 records, 218403 bytes"
|
||||
)
|
||||
watcher_transfer_completed.wait_for_line(pattern_transfer_completed)
|
||||
|
||||
# Loop until the secondary server manages to transfer the "xfer-stats" zone so
|
||||
# that we can both check dig output and immediately proceed with the next test.
|
||||
# Use -b so that we can discern between incoming and outgoing transfers in ns3
|
||||
# logs later on.
|
||||
dig_source_port = os.getenv("EXTRAPORT1")
|
||||
dig = isctest.run.isctest.run.EnvCmd("DIG", f"-p {str(named_port)}")
|
||||
output = dig(
|
||||
f"+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd +edns +nocookie +noexpire +stat -b 10.53.0.2#{dig_source_port} @10.53.0.3 xfer-stats. AXFR"
|
||||
).out
|
||||
|
||||
assert "; Transfer failed" not in output
|
||||
assert ";; XFR size: 10003 records (messages 16, bytes 218403)" in output
|
||||
|
||||
# Use ns3 logs for checking outgoing transfer statistics as ns3 is a
|
||||
# primary server (for dig queries from the previous test) for "xfer-stats".
|
||||
isctest.log.info(
|
||||
"checking whether named calculates outgoing AXFR statistics correctly"
|
||||
)
|
||||
with ns3.watch_log_from_start() as watcher_axfr_ended:
|
||||
pattern_axfr_ended = f"10.53.0.2#{dig_source_port} (xfer-stats): transfer of 'xfer-stats/IN': AXFR ended: 16 messages, 10003 records, 218403 bytes"
|
||||
watcher_axfr_ended.wait_for_line(pattern_axfr_ended)
|
||||
|
||||
|
||||
# First, test that named tries the next primary in the list when the first one
|
||||
# fails (XoT -> Do53). Then, test that named tries the next primary in the list
|
||||
# when the first one is already marked as unreachable (XoT -> Do53).
|
||||
def test_xot_primary_try_next(ns6):
|
||||
def retransfer_and_check_log():
|
||||
with ns6.watch_log_from_here(timeout=60) as watcher:
|
||||
ns6.rndc("retransfer xot-primary-try-next.")
|
||||
watcher.wait_for_line("Transfer status: success")
|
||||
|
||||
retransfer_and_check_log()
|
||||
retransfer_and_check_log()
|
||||
|
||||
|
||||
# See #5307#note_558185
|
||||
def test_reconfiguration_when_zone_transfer_is_in_the_middle_of_soa_query(ns6):
|
||||
isctest.log.info(
|
||||
"Check that xfr-and-reconfig has been successfully transferred by the secondary"
|
||||
)
|
||||
with ns6.watch_log_from_start() as watcher_transfer_completed:
|
||||
watcher_transfer_completed.wait_for_line(
|
||||
"zone xfr-and-reconfig/IN: zone transfer finished: success"
|
||||
)
|
||||
|
||||
isctest.log.info("Make ans6 receive queries without responding to them")
|
||||
msg = dns.message.make_query("disable.send-responses._control.", "TXT")
|
||||
get_response(msg, "10.53.0.9")
|
||||
|
||||
isctest.log.info("Try to reload the zone from an unresponsive primary")
|
||||
ns6.rndc("reload xfr-and-reconfig")
|
||||
|
||||
isctest.log.info("Reconfigure named while zone transfer attempt is in progress")
|
||||
ns6.reconfigure()
|
||||
|
||||
isctest.log.info(
|
||||
"Confirm that the ongoing SOA request was canceled, caused by the reconfiguration"
|
||||
)
|
||||
with ns6.watch_log_from_start() as watcher_transfer_cancelled:
|
||||
watcher_transfer_cancelled.wait_for_line(
|
||||
"refresh: request result: operation canceled"
|
||||
)
|
||||
|
||||
isctest.log.info("Make ans6 receive queries and respond to them")
|
||||
msg = dns.message.make_query("enable.send-responses._control.", "TXT")
|
||||
with ns6.watch_log_from_here() as watcher_transfer_started:
|
||||
get_response(msg, "10.53.0.9")
|
||||
isctest.log.info("Try to reload the zone from the primary")
|
||||
ns6.rndc("reload xfr-and-reconfig")
|
||||
watcher_transfer_started.wait_for_line("Transfer started")
|
||||
Loading…
Reference in a new issue