Hi André,

thank you for your report and the detailed information you provided.

I was able to reproduce your issue and it occurs to be a bug. We will fix it for the next 3.0.x version.

You might use any of two possible workarounds:

1) after changing the configuration file by setting journal-content: all, you can stop and cold-start knotd instead of reloading the configuration.

2) before changing the configuration, you can stop the single affected zone by `knotc -f purge +expire example.net.` and proceed with `knotc reload`.

Cheers,

Libor

Dne 19. 03. 21 v 23:05 André Keller napsal(a):
Hi Libor

On 19.03.21 19:20, libor.peltan wrote:
However, I found rather little information.
I understand, I thought there might be some standard procedure that one
needs to follow when changing the journal-content setting that I missed.


Could you please provide some more info about you configuration (at
least zonefile-sync and zonefile-load) and longer log snippets
uncovering what was going on after the configuration change?

I'm afraid the log is not much more verbose, I can try to reproduce the
issue with a higher log level if that would help.

So after the config change:

Mar 19 14:35:24 master1 knotd[1018]: info: reloading configuration file
'/etc/knot/knot.conf'
Mar 19 14:35:24 master1 knotd[1018]: info: configuration reloaded
Mar 19 14:35:24 master1 knotd[1018]: info: [example.net.] DNSSEC,
signing zone
Mar 19 14:35:24 master1 knotd[1018]: info: [example.net.] DNSSEC, key,
tag  9671, algorithm ECDSAP256SHA256, KSK, public, ready, active+
Mar 19 14:35:24 master1 knotd[1018]: info: [example.net.] DNSSEC, key,
tag  1496, algorithm ECDSAP256SHA256, public, active
Mar 19 14:35:24 master1 knotd[1018]: info: [example.net.] DNSSEC,
signing started
Mar 19 14:35:24 master1 knotd[1018]: info: [example.net.] DNSSEC, zone
is up-to-date
Mar 19 14:35:24 master1 knotd[1018]: info: [example.net.] DNSSEC, next
signing at 2021-03-23T14:29:04+0100


Then when adding a record to the zonefile:

Mar 19 14:44:34 master1 knotd[1018]: info: [example.net.] control,
received command 'zone-reload'
Mar 19 14:44:34 master1 knotd[1018]: info: [example.net.] zone file
parsed, serial corrected 1616161474 -> 1616161474
Mar 19 14:44:34 master1 knotd[1018]: info: [example.net.] zone stored to
journal, serial 1616161474
Mar 19 14:44:34 master1 knotd[1018]: info: [example.net.] DNSSEC, key,
tag  9671, algorithm ECDSAP256SHA256, KSK, public, ready, active+
Mar 19 14:44:34 master1 knotd[1018]: info: [example.net.] DNSSEC, key,
tag  1496, algorithm ECDSAP256SHA256, public, active
Mar 19 14:44:34 master1 knotd[1018]: info: [example.net.] DNSSEC,
signing started
Mar 19 14:44:34 master1 knotd[1018]: info: [example.net.] DNSSEC,
successfully signed
Mar 19 14:44:34 master1 knotd[1018]: error: [example.net.] zone event
'load' failed (semantic check)

Removing the entry again:

Mar 19 14:48:44 master1 knotd[1018]: info: [example.net.] control,
received command 'zone-reload'
Mar 19 14:48:44 master1 knotd[1018]: info: [example.net.] zone file
parsed, serial corrected 1616161723 -> 1616161724
Mar 19 14:48:44 master1 knotd[1018]: info: [example.net.] DNSSEC, key,
tag  9671, algorithm ECDSAP256SHA256, KSK, public, ready, active+
Mar 19 14:48:44 master1 knotd[1018]: info: [example.net.] DNSSEC, key,
tag  1496, algorithm ECDSAP256SHA256, public, active
Mar 19 14:48:44 master1 knotd[1018]: info: [example.net.] DNSSEC,
signing started
Mar 19 14:48:44 master1 knotd[1018]: info: [example.net.] DNSSEC,
successfully signed
Mar 19 14:48:44 master1 knotd[1018]: info: [example.net.] loaded, serial
1615901344 -> 1616161724 -> 1615901344, 2107 bytes
Mar 19 14:48:44 master1 knotd[1018]: info: [example.net.] DNSSEC, next
signing at 2021-03-23T14:29:04+0100


But me initial statement, that subsequent changes work was wrong. The
zone that loaded, was the original zone. If I now make changes to the
zone it always fail to load, if I revert the zone-file to the original
state and reload, the changes go through. So currently with the new
journat-content: all setting, I cannot make changes to this zone.

(And the change is syntactically correct, zone-check and named-checkzone
do not have any issue with the new zonefile)


Configuration (knotd (Knot DNS), version 3.0.4):

server:
     user: knot:knot
     listen: ["0.0.0.0@53", "::@53"]
     version:

policy:
     - id: default_ecdsa
       algorithm: ecdsap256sha256

template:
     - id: default
       file: /var/lib/knot/zones/%s.zone
       storage: /var/lib/knot
     - id: master_default
       acl: ["transfer_to_slaves"]
       file: /var/lib/knot/zones/%s.zone
       notify: ["slave1", "slave2", "slave3"]
       serial-policy: unixtime
       storage: /var/lib/knot
       zonefile-load: difference
     - id: master_dnssec
       acl: ["transfer_to_slaves"]
       dnssec-policy: default_ecdsa
       dnssec-signing: on
       file: /var/lib/knot/zones/%s.zone
       journal-content: all
       notify: ["slave1", "slave2", "slave3"]
       serial-policy: unixtime
       storage: /var/lib/knot
       zonefile-load: difference-no-serial
       zonefile-sync: -1

zone:
     - domain: example.net
       template: master_dnssec


Zonefile is rather simple for this zone:

$ORIGIN example.net.
$TTL 3600
@                         IN       SOA    (
                                             ns1.example.com.
                                             dnsadmin.example.com.
                                             1616161723
                                             3600
                                             600
                                             1209600
                                             3600
                                           )
;
;  Nameserver
;
@                         IN       NS     ns1.example.com.
@                         IN       NS     ns2.example.com.
@                         IN       NS     ns3.example.com.

@                         IN       A      192.0.2.100
@                         IN       AAAA   2001:db8::100
www                       IN       A      192.0.2.100
www                       IN       AAAA   2001:db8::1010

I omitted the acl/remote/key section as well as the definition of the
other zones, as I do not think this is relevant information for the
issue at hand. Please let me know if you need this information.
-> journal-content: allin the master_dnssec template is the only change
I did. There was no journal-content configuration before. There are
other zones using this template that show the same behavior, zones using
using the master_default template work normally.

Does this information suffice or would you need to know anything else?


Regards
André

--
https://lists.nic.cz/mailman/listinfo/knot-dns-users

Reply via email to