$ sudo sed -i "/^options {/ r $FILE" /etc/bind/named.conf.options
$ cat <<EOF | sudo tee -a /etc/bind/named.conf.local
zone "example.tld" IN {
type master;
file "/etc/bind/example.tld.db";
};
EOF
$ cat <<"EOF" | sudo tee -a /etc/bind/example.tld.db
$TTL 5m
@ IN SOA ns.example.tld. email.example.tld. 90 4h 15m 8h 4m
@ IN NS ns.example.tld.
ns IN A 1.1.1.1
test IN A 1.2.3.4
EOF
$ sudo systemctl restart named.service
Check:
-----
$ dig +noall +authority @127.0.0.1 -p 12753 example.tld
example.tld. 240 IN SOA ns.example.tld. email.example.tld. 90 14400 900 28800 240
$ dig +noall +answer @127.0.0.1 -p 12753 ns.example.tld
ns.example.tld. 300 IN A 1.1.1.1
$ dig +noall +answer @127.0.0.1 -p 12753 test.example.tld
test.example.tld. 300 IN A 1.2.3.4
$ dig +noall +answer @127.0.0.1 -p 12753 example.tld axfr
example.tld. 300 IN SOA ns.example.tld. email.example.tld. 90 14400 900 28800 240
example.tld. 300 IN NS ns.example.tld.
ns.example.tld. 300 IN A 1.1.1.1
test.example.tld. 300 IN A 1.2.3.4
example.tld. 300 IN SOA ns.example.tld. email.example.tld. 90 14400 900 28800 240
$ python3 -q -c \
"import dns.query
import dns.zone
axfr = dns.zone.from_xfr(dns.query.xfr(where='127.0.0.1', port=12753, zone='example.tld', rdtype=dns.rdatatype.AXFR, lifetime=None, timeout=30))
for node in axfr.nodes.keys() : print(axfr.nodes[node].to_text(node))"
@ 300 IN SOA ns email 90 14400 900 28800 240
@ 300 IN NS ns
ns 300 IN A 1.1.1.1
test 300 IN A 1.2.3.4
Verification done on focal-proposed with python3-dnspython only.
Setup:
-----
$ sudo apt install -y bind9
$ FILE=/tmp/ bind-options
$ cat <<EOF >"$FILE"
listen-on port 12753 { 127.0.0.1/32; };
allow-query { any; };
allow-transfer { any; };
EOF
$ sudo sed -i "/^options {/ r $FILE" /etc/bind/ named.conf. options
$ cat <<EOF | sudo tee -a /etc/bind/ named.conf. local example. tld.db" ;
zone "example.tld" IN {
type master;
file "/etc/bind/
};
EOF
$ cat <<"EOF" | sudo tee -a /etc/bind/ example. tld.db
$TTL 5m
@ IN SOA ns.example.tld. email.example.tld. 90 4h 15m 8h 4m
@ IN NS ns.example.tld.
ns IN A 1.1.1.1
test IN A 1.2.3.4
EOF
$ sudo systemctl restart named.service
Check:
-----
$ dig +noall +authority @127.0.0.1 -p 12753 example.tld
example.tld. 240 IN SOA ns.example.tld. email.example.tld. 90 14400 900 28800 240
$ dig +noall +answer @127.0.0.1 -p 12753 ns.example.tld
ns.example.tld. 300 IN A 1.1.1.1
$ dig +noall +answer @127.0.0.1 -p 12753 test.example.tld
test.example.tld. 300 IN A 1.2.3.4
$ dig +noall +answer @127.0.0.1 -p 12753 example.tld axfr
example.tld. 300 IN SOA ns.example.tld. email.example.tld. 90 14400 900 28800 240
example.tld. 300 IN NS ns.example.tld.
ns.example.tld. 300 IN A 1.1.1.1
test.example.tld. 300 IN A 1.2.3.4
example.tld. 300 IN SOA ns.example.tld. email.example.tld. 90 14400 900 28800 240
Before: (fails)
------
$ sudo apt install -y python3-dnspython
$ dpkg -s python3-dnspython | grep Version:
Version: 1.16.0-1build1
$ python3 -q -c \ from_xfr( dns.query. xfr(where= '127.0. 0.1', port=12753, zone='example.tld', rdtype= dns.rdatatype. AXFR, lifetime=None, timeout=30)) nodes[node] .to_text( node))"
"import dns.query
import dns.zone
axfr = dns.zone.
for node in axfr.nodes.keys() : print(axfr.
TypeError: '>' not supported between instances of 'float' and 'NoneType'
After: (works)
-----
$ sudo add-apt-repository 'deb http:// archive. ubuntu. com/ubuntu focal-proposed main'
$ sudo apt install -y python3-dnspython
$ dpkg -s python3-dnspython | grep Version:
Version: 1.16.0-1ubuntu1
$ python3 -q -c \ from_xfr( dns.query. xfr(where= '127.0. 0.1', port=12753, zone='example.tld', rdtype= dns.rdatatype. AXFR, lifetime=None, timeout=30)) nodes[node] .to_text( node))"
"import dns.query
import dns.zone
axfr = dns.zone.
for node in axfr.nodes.keys() : print(axfr.
@ 300 IN SOA ns email 90 14400 900 28800 240
@ 300 IN NS ns
ns 300 IN A 1.1.1.1
test 300 IN A 1.2.3.4