Hello everyone!
Knot DNS 2.2.0 by CZ.NIC Labs has been just released! This release
brings only a few new features, but it contains a bunch of important
bugs fixes and many significant changes under the hood.
Let's start with the bug fixes and improvements:
- We have resolved build dependency issues on FreeBSD. And we have fixed
a problem when detecting PKCS #11 support in GnuTLS.
- Some bugs related to Dnstap were resolved as well. The logging module
now correctly sets query/response message type. And kdig properly uses
the remote address when showing the capture.
- The global instances of query modules were not executed for queries
hitting existing zones. This problem is fixed in the new release.
- We have enabled execution of semantic checks after IXFR to unify the
behavior with AXFR. Also the logging of messages related to transfers
was improved a little bit.
- The DNSSEC signing produces correct NSEC/NSEC3 bitmap for delegations
where a glue record has the same name as the delegated zone.
- We have added some fixes hopefully improving compatibility with
PKCS #11 devices. The most significant change is that the generated
keys are marked as sensitive. It makes perfect sense and some devices
(e.g. Luna SA) actually require this attribute to be set.
- The configuration transaction is not aborted when some consistency
check fails. This is particularly useful, if you make a typo when
changing the server configuration with knotc. We have also eliminated
an incorrect error when the last zone was being removed from the
server.
- There are also some bug fixes and improvements in the utilities. The
keymgr utility should provide more sensible error messages, new
consistency checks were added, and some commands were extended
a little bit. The kdig utility now properly handles AXFR responses
containing only the SOA record in the first message. And kdig will
also use a local resolver if the resolv.conf file is empty.
- The zone event scheduler was improved. And we hope that it will speed
up the event lookup if you have many many zones.
And finally the new features:
- We have added RRL white listing. This allows to exempt some clients
from rate limiting, for example your monitoring hosts. See the
rate-limit-whitelist configuration option for details.
- We have added support for URI (RFC 7553) and CAA (RFC 6844) resource
record types.
- The knotc utility now supports interactive mode with command line
editing, tab completion, and history. Just start knotc without any
command and give it a try.
- And the server has a new control interface we will be extending in the
future. The knotc utility already uses this interface. And we also
have a simple Python binding for this interface. We are definitely
looking for some feedback.
That's all folks. Thank you for using Knot DNS.
Full changelog:
https://gitlab.labs.nic.cz/labs/knot/raw/2.2/NEWS
Source archive:
https://secure.nic.cz/files/knot-dns/knot-2.2.0.tar.xz
GPG signature:
https://secure.nic.cz/files/knot-dns/knot-2.2.0.tar.xz.asc
Cheers,
Jan
--
Jan Včelák, Knot DNS
CZ.NIC Labs https://www.knot-dns.cz
--------------------------------------------
Milešovská 5, 130 00 Praha 3, Czech Republic
WWW: https://labs.nic.czhttps://www.nic.cz
Hey,
I was wondering if any work has been done on a statistics module for Knot DNS? I have read the mailing list and saw the conversation between Daniel and Julian, but haven’t seen anything on the list since then and I don’t see anything the documentation.
Best regards,
/rog
Good morning,
it is able to run knot resolver daemon with knot 1.6.x ?
Thanks and best regards
J.Karliak
--
Ma domena pouziva zabezpeceni a kontrolu SPF (www.openspf.org) a
DomainKeys/DKIM (s ADSP) a implementaci DMARC. Pokud mate problemy s
dorucenim emailu, zacnete pouzivat metody overeni puvody emailu
zminene vyse. Dekuji.
My domain use SPF (www.openspf.org) and DomainKeys/DKIM (with ADSP)
policy and implementation of the DMARC. If you've problem with sending
emails to me, start using email origin methods mentioned above. Thank
you.
Good morning,
I run knot2 on opensuse, configuration was migrated from 1.6. to 2.1.1,
I run step by step configuration by manual to keymgr and after command :
"keymgr policy add secure keystore hsm"
I get a message:
celer:/var/lib/knot/kasp # keymgr policy add secure keystore hsm
Policy with given name alredy exists.
Neoprávněný přístup do paměti (SIGSEGV) (core dumped [obraz paměti uložen])
Previos command was
keymgr keystore add hsm backend pkcs11 config
"pkcs11:token=knot;pin-value=4587 libsofthsm2.so"
and was successfull.
On the testing "server" with knot all works fine, testing server is
opensuse 42.1 x64. Problem is on opensuse 13.2 x64
There is a core dump in the attachment. In the /var/log/messages were
complains to libc:
Apr 11 10:25:49 celer kernel: [7927072.584757] keymgr[13591]: segfault at
7fff18000000 ip 00007f3f59c20ca4 sp 00007fff18064f18 error 4 in
libc-2.19.so[7f3f59ba5000+19e000]
For sure I made upgrade of glib by zypper, but no success.
Any ideas ?
Thanks and best regards
J.Karliak
--
Ma domena pouziva zabezpeceni a kontrolu SPF (www.openspf.org) a
DomainKeys/DKIM (s ADSP) a implementaci DMARC. Pokud mate problemy s
dorucenim emailu, zacnete pouzivat metody overeni puvody emailu
zminene vyse. Dekuji.
My domain use SPF (www.openspf.org) and DomainKeys/DKIM (with ADSP)
policy and implementation of the DMARC. If you've problem with sending
emails to me, start using email origin methods mentioned above. Thank
you.
Hi,
we're using knot DNS (2.0.2) on one of our primaries, to balance out
"BIND is used everywhere". So far, we're quite happy, but today I got
a complaint from our hostmaster team - triggered by a warning from DENIC
that "our SOA records are inconsistent".
Turns out they are, if you look at uppercase/lowercase...
$ dig +short @ns.space.net space.net soa
ns.space.net. hostmaster.space.net. 2016040601 28800 3600 864000 1800
$ dig +short @ns3.dns.space.net space.net soa
ns.Space.Net. hostmaster.Space.Net. 2016040601 28800 3600 864000 1800
first one is knot, second is BIND, and the "mixed case" spelling is
what the zone master (hidden primary) is distributing.
(I understand that DNS is not case-significant, but we're using upper
case in DNS labels because we like it that way...)
Looking at labels inside the zone (dig axfr) shows that knot is lowercasing
*everything*, not only the SOA records.
So, I started looking whether there is a switch that can change knot's
behaviour to just leave the labels alone, and do not lowercase everything.
Google did not find anything, neither did "man knotd" or "man knot.conf".
So, is there a hidden switch or compile-time feature to achieve this?
thanks in advance,
Gert Doering
-- NetMaster
--
have you enabled IPv6 on something today...?
SpaceNet AG Vorstand: Sebastian v. Bomhard
Joseph-Dollinger-Bogen 14 Aufsichtsratsvors.: A. Grundner-Culemann
D-80807 Muenchen HRB: 136055 (AG Muenchen)
Tel: +49 (0)89/32356-444 USt-IdNr.: DE813185279
Hello to all,
I tried to look a little bit to the codes but can I ask how concurrent
update is avoided? I mean RCU is used to avoid concurrent read and write.
But how concurrent update is avoided?
Thank you!
masoud
Good morning,
I've migrated to knot2, configuration file was migrated by knot1to2
tool. Knot 2 loads, but to not load my DNSSEC signed zone (NSEC, not
NSEC3). Knot2 is installed from suse dns server repo, version
"knot2-2.1.1-1.1.x86_64".
Error message:
Apr 7 08:57:39 celer knotd[21676]: info: reloading configuration file
'/etc/knot/knot.conf'
Apr 7 08:57:39 celer knotd[21676]: info: configuration reloaded
Apr 7 08:57:39 celer knotd[21676]: info: [domain.cz] zone loader,
semantic check, completed
Apr 7 08:57:39 celer knotd[21676]: error: [domain.cz] DNSSEC, failed to
initialize (not found)
Apr 7 08:57:39 celer knotd[21676]: error: [domain.cz] failed to store
changes into journal (not found)
Apr 7 08:57:39 celer knotd[21676]: error: [domain.cz] zone event 'load'
failed (not found)
Part of the configuration file:
...
...
template:
- id: "default"
storage: "/var/lib/knot"
zone:
- domain: "domain.cz."
file: "domain.cz"
notify: "slave"
acl: "acl_slave"
semantic-checks: "on"
ixfr-from-differences: "on"
max-journal-size: "1073741824"
dnssec-signing: "on"
kasp-db: "/var/lib/knot/domain.cz.keys"
...
...
Directory "/var/lib/knot/domain.cz.keys" contains zone private and
public keys.
What did I missed ?
Thanks and best regards
J.Karliak
--
Ma domena pouziva zabezpeceni a kontrolu SPF (www.openspf.org) a
DomainKeys/DKIM (s ADSP) a implementaci DMARC. Pokud mate problemy s
dorucenim emailu, zacnete pouzivat metody overeni puvody emailu
zminene vyse. Dekuji.
My domain use SPF (www.openspf.org) and DomainKeys/DKIM (with ADSP)
policy and implementation of the DMARC. If you've problem with sending
emails to me, start using email origin methods mentioned above. Thank
you.
I'm fairly new to knot so this may be a strange question that I am
just not quite getting the config for notify somewhere.
I have this in my config:
remotes {
dnsp61 { address 192.168.1.173; }
}
zones {
storage "/var/lib/knot";
dnssec-keydir "keys";
dnssec-enable off;
brettcarr.uk {
file "brettcarr.uk";
xfr-in dnsp61; # define 'master' for this zone
notify-in dnsp61; # also allow NOTIFY from 'master'
}
The zone axfr's at startup no problems.
The master (dnsp61) is sending notifies to the knot server
(192.168.1.170) as you can see from tcpdump output below
18:24:55.310553 IP 192.168.1.173.42438 > 192.168.1.170.domain: 27743
notify [b2&3=0x2400] [1a] SOA? brettcarr.uk. (89)
but the knot server is not reacting to the notify.
Am I missing something?
TIA
--
Brett
Hi,
I tried to install Knot 2.x deb on Debian Jessie. Following the instructions for Knot 2.x, I got Knot 1.6 installed. Any advice how to install Knot 2 deb on Jessie?
Regards
Volker
LOC records are special. The first octet of a LOC record is a version
number. According to RFC 1876:
VERSION Version number of the representation. This must be zero.
Implementations are required to check this field and make
no assumptions about the format of unrecognized versions.
This means that if a LOC record's VERSION field is not zero, the RR
cannot be presented in the canonical presentation format, but it is
still a valid wire-format RR.
Currently, kdig prints a warning message "can't print whole section" and
a LOC record with a blank RDATA when it attempts to dump a LOC record
with a non-zero VERSION field.
This commit modifies the version check in wire_loc_to_str() to fall back
to the generic presentation format if the VERSION field is not 0. This
particular case is even explicitly described as a use case for the
generic presentation format in RFC 3597:
Using the generic representation for the RDATA of an RR of known type
can also be useful in the case of an RR type where the text format
varies depending on a version, protocol, or similar field (or
several) embedded in the RDATA when such a field has a value for
which no text format is known, e.g., a LOC RR [RFC1876] with a
VERSION other than 0.
---
src/libknot/rrset-dump.c | 95 +++++++++++++++++++++++++-----------------------
1 file changed, 49 insertions(+), 46 deletions(-)
diff --git a/src/libknot/rrset-dump.c b/src/libknot/rrset-dump.c
index c71eae1..ffdd825 100644
--- a/src/libknot/rrset-dump.c
+++ b/src/libknot/rrset-dump.c
@@ -508,6 +508,47 @@ static void wire_len_data_encode_to_str(rrset_dump_params_t *p,
p->ret = 0;
}
+static void wire_unknown_to_str(rrset_dump_params_t *p)
+{
+ int ret;
+ size_t in_len = p->in_max;
+ size_t out_len = 0;
+
+ // Write unknown length header.
+ if (in_len > 0) {
+ ret = snprintf(p->out, p->out_max, "\\# %zu ", in_len);
+ } else {
+ ret = snprintf(p->out, p->out_max, "\\# 0");
+ }
+ if (ret <= 0 || (size_t)ret >= p->out_max) {
+ return;
+ }
+ out_len = ret;
+
+ // Fill in output.
+ p->out += out_len;
+ p->out_max -= out_len;
+ p->total += out_len;
+
+ // Write hex data if any.
+ if (in_len > 0) {
+ // If wrap mode wrap line.
+ if (p->style->wrap) {
+ dump_string(p, BLOCK_INDENT);
+ if (p->ret != 0) {
+ return;
+ }
+ }
+
+ wire_data_encode_to_str(p, &hex_encode, &hex_encode_alloc);
+ if (p->ret != 0) {
+ return;
+ }
+ }
+
+ p->ret = 0;
+}
+
static void wire_text_to_str(rrset_dump_params_t *p)
{
// First byte is string length.
@@ -938,6 +979,14 @@ static void wire_loc_to_str(rrset_dump_params_t *p)
// Read values.
wire_ctx_t wire = wire_ctx_init_const(p->in, p->in_max);
uint8_t version = wire_ctx_read_u8(&wire);
+
+ // Version check.
+ if (version != 0) {
+ wire_unknown_to_str(p);
+ return;
+ }
+
+ // Continue to read values.
uint8_t size_w = wire_ctx_read_u8(&wire);
uint8_t hpre_w = wire_ctx_read_u8(&wire);
uint8_t vpre_w = wire_ctx_read_u8(&wire);
@@ -953,11 +1002,6 @@ static void wire_loc_to_str(rrset_dump_params_t *p)
p->in += wire_ctx_offset(&wire);
p->in_max = wire_ctx_available(&wire);
- // Version check.
- if (version != 0) {
- return;
- }
-
// Latitude calculation.
char lat_mark;
uint32_t lat;
@@ -1210,47 +1254,6 @@ static void wire_tsig_rcode_to_str(rrset_dump_params_t *p)
p->ret = 0;
}
-static void wire_unknown_to_str(rrset_dump_params_t *p)
-{
- int ret;
- size_t in_len = p->in_max;
- size_t out_len = 0;
-
- // Write unknown length header.
- if (in_len > 0) {
- ret = snprintf(p->out, p->out_max, "\\# %zu ", in_len);
- } else {
- ret = snprintf(p->out, p->out_max, "\\# 0");
- }
- if (ret <= 0 || (size_t)ret >= p->out_max) {
- return;
- }
- out_len = ret;
-
- // Fill in output.
- p->out += out_len;
- p->out_max -= out_len;
- p->total += out_len;
-
- // Write hex data if any.
- if (in_len > 0) {
- // If wrap mode wrap line.
- if (p->style->wrap) {
- dump_string(p, BLOCK_INDENT);
- if (p->ret != 0) {
- return;
- }
- }
-
- wire_data_encode_to_str(p, &hex_encode, &hex_encode_alloc);
- if (p->ret != 0) {
- return;
- }
- }
-
- p->ret = 0;
-}
-
static size_t dnskey_len(const uint8_t *rdata,
const size_t rdata_len)
{
--
2.7.0