Configure insecure master zone “inline.test.” and allow dynamic updates for it.
zone "inline.test" in {
type master;
file "inline.test.db";
allow-update { any; };
};
Do a dynamic update:
# nsupdate << EOF
update add a.inline.test. 3600 IN A 10.0.0.1
send
EOF
Shutdown server:
# rndc halt
Enable in-line signing for zone inline.test.
and start server.
zone "inline.test" in {
type master;
file "inline.test.db";
key-directory "/var/named/keys";
allow-update { any; };
auto-dnssec maintain;
inline-signing yes;
};
Shutdown server again.
# rndc halt
Disable in-line signing for zone inline.test.
and start server.
Do more dynamic updates:
# nsupdate << EOF
update del a.inline.test. 3600 IN A 10.0.0.1
send
update add a.inline.test. 3600 IN A 10.0.0.2
send
EOF
Shutdown server once again.
# rndc halt
Enable in-line signing for zone inline.test.
and start server.
See what happened:
# dig a.inline.test
;; ANSWER SECTION:
a.inline.test. 3600 IN A 10.0.0.1
a.inline.test. 3600 IN A 10.0.0.2
IMHO the problem is that receive_secure_db()
doesn’t record source
serial to secure zone’s journal.
Consequently, receive_secure_serial()
re-reads more journal records
than it should. As a result, dns_diff_appendminimal()
calls in
sync_secure_journal()
coalesce changes which should not be
coalesced.
In the example above it means that sequence:
update add a.inline.test. 3600 IN A 10.0.0.1
update del a.inline.test. 3600 IN A 10.0.0.1
is deleted from diff to-be-applied to secure zone.