mirror of
https://gitlab.nic.cz/knot/knot-dns.git
synced 2026-02-03 18:49:28 -05:00
102 lines
3.1 KiB
Python
102 lines
3.1 KiB
Python
#!/usr/bin/env python3
|
|
|
|
"""
|
|
Test of autogenerating reverse zone.
|
|
"""
|
|
|
|
from dnstest.utils import *
|
|
from dnstest.test import Test
|
|
import random
|
|
|
|
t = Test()
|
|
|
|
knot = t.server("knot")
|
|
zones = t.zone("example.com.", storage=".") + \
|
|
t.zone("example2.com.", storage=".") + \
|
|
t.zone("2.0.192.in-addr.arpa.", storage=".") + \
|
|
t.zone("0.8.b.d.1.0.0.2.ip6.arpa.", storage=".")
|
|
t.link(zones, knot)
|
|
|
|
knot.zones[zones[2].name].reverse_from = [ zones[0], zones[1] ]
|
|
knot.zones[zones[3].name].reverse_from = [ zones[0], zones[1] ]
|
|
|
|
for z in zones:
|
|
knot.dnssec(z).enable = random.choice([False, True])
|
|
|
|
t.start()
|
|
t.sleep(5)
|
|
|
|
r = knot.dig("mail.0.8.b.d.1.0.0.2.ip6.arpa.", "A")
|
|
r.check(rcode="NOERROR", rdata="192.0.2.3")
|
|
|
|
r = knot.dig("3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.1.0.0.2.ip6.arpa.", "PTR")
|
|
r.check(rcode="NOERROR", rdata="mail.example.com.")
|
|
r.check(rcode="NOERROR", rdata="mail.example2.com.")
|
|
|
|
r = knot.dig("2.2.0.192.in-addr.arpa.", "PTR")
|
|
r.check(rcode="NOERROR", rdata="dns2.example.com.")
|
|
|
|
r = knot.dig("5.2.0.192.in-addr.arpa.", "PTR")
|
|
r.check(rcode="NXDOMAIN", nordata="added.example.com.")
|
|
|
|
r = knot.dig("8.2.0.192.in-addr.arpa.", "PTR")
|
|
r.check(rcode="NOERROR", rdata="dns1.example2.com.")
|
|
|
|
knot.update_zonefile(zones[0], version=1)
|
|
knot.ctl("zone-reload %s" % zones[0].name)
|
|
t.sleep(5)
|
|
|
|
r = knot.dig("5.2.0.192.in-addr.arpa.", "PTR")
|
|
r.check(rcode="NOERROR", rdata="added.example.com.")
|
|
|
|
r = knot.dig("2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.1.0.0.2.ip6.arpa.", "PTR")
|
|
r.check(rcode="NXDOMAIN", nordata="dns2.example.com.")
|
|
|
|
r = knot.dig("1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.1.0.0.2.ip6.arpa.", "PTR")
|
|
r.check(rcode="NOERROR", rdata="dns1.example.com.")
|
|
|
|
serials = knot.zones_wait(zones)
|
|
knot.ctl("zone-reload %s" % zones[3].name)
|
|
t.sleep(5)
|
|
|
|
r = knot.dig("1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.1.0.0.2.ip6.arpa.", "PTR")
|
|
r.check(rcode="NOERROR", rdata="dns1.example.com.")
|
|
knot.zones_wait(zones, serials, equal=True, greater=False)
|
|
|
|
knot.ctl("zone-reload %s" % zones[1].name)
|
|
t.sleep(5)
|
|
knot.zones_wait(zones, serials, equal=True, greater=False) # check that sole reload does not increment any SOAs
|
|
|
|
r = knot.dig("8.2.0.192.in-addr.arpa.", "PTR")
|
|
r.check(rcode="NOERROR", rdata="dns1.example2.com.")
|
|
|
|
knot.zones.pop(zones[2].name)
|
|
knot.gen_confile()
|
|
knot.reload()
|
|
t.sleep(5)
|
|
|
|
knot.update_zonefile(zones[0], version=2)
|
|
knot.ctl("zone-reload %s" % zones[0].name)
|
|
t.sleep(5)
|
|
|
|
r = knot.dig("2.2.0.192.in-addr.arpa.", "PTR")
|
|
r.check(rcode="REFUSED", nordata="dns2.example.com.")
|
|
|
|
r = knot.dig("5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.1.0.0.2.ip6.arpa.", "PTR")
|
|
r.check(rcode="NOERROR", rdata="added2.example.com.")
|
|
|
|
knot.zones.pop(zones[0].name)
|
|
knot.gen_confile()
|
|
knot.reload()
|
|
t.sleep(5)
|
|
|
|
r = knot.dig("1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.1.0.0.2.ip6.arpa.", "PTR")
|
|
r.check(rcode="NOERROR", rdata="dns1.example.com.")
|
|
|
|
knot.ctl("zone-reload %s" % zones[3].name)
|
|
t.sleep(5)
|
|
|
|
r = knot.dig("1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.1.0.0.2.ip6.arpa.", "PTR")
|
|
r.check(rcode="NXDOMAIN", nordata="dns1.example.com.")
|
|
|
|
t.end()
|