Hi,
I just upgraded knot-resolver from 5.7.5 to 6.4.1 and now I'm seeing the
following error message regularly:
kresd[48937]: [cache ] [16128.01] stash failed, ret = 1
kresd[48937]: [cache ] [37316.01] stash failed, ret = 1
Can someone explain what that means?
--
Stefan Schweizer
Dear Knot Resolver users,
Knot Resolver 6.4.1 has been released!
Security:
- DNS-over-QUIC (DoQ) had severe issues, allowing even RCE
Many people reported (some of) these issues to us.
- DNSSEC correctness issues, acting mainly through the aggressive cache:
* dealing with Labels field in RRSIGs being smaller than the signer's
* dealing with NSEC's next-name pointing outside of the zone
Special thanks to Qifan Zhang from Palo Alto Networks.
Improvements:
- docker: upgrade to Debian 13 (!1856)
- update IANA's certificate for root trust anchor bootstrapping (!1845)
Bugfixes:
- /local-data/addresses*: make multiple addresses work (#808, #954)
- views: fix protocol-based matching for DoQ
Full changelog:
https://gitlab.nic.cz/knot/knot-resolver/raw/v6.4.1/NEWS
Sources:
https://knot-resolver.nic.cz/release/knot-resolver-6.4.1.tar.xz
GPG signature:
https://knot-resolver.nic.cz/release/knot-resolver-6.4.1.tar.xz.asc
Documentation:
https://www.knot-resolver.cz/documentation/v6.4.1/
--
Ales Mrazek
PGP: 3057 EE9A 448F 362D 7420 5A77 9AB1 20DA 0A76 F6DE
Dear Knot Resolver users,
Knot Resolver 5.7.7 has been released!
Security:
- DNSSEC correctness issues, acting mainly through the aggressive cache:
* dealing with Labels field in RRSIGs being smaller than the signer's
* dealing with NSEC's next-name pointing outside of the zone
Special thanks to Qifan Zhang from Palo Alto Networks.
Improvements:
- support cmocka 2.0.0
- avoid AD=1 in reply if ANSWER+AUTHORITY are empty (#914)
- packaging: rpm: require python3-setuptools (!1831)
- packaging: rpm: provide user/group (!1838)
This should also resolve the issue with user and group
configuration during installation (GH#130).
- make DoH cache-control header respect our cache's TTL limits (!1832)
- support libdnssec merged into libknot, as planned for knot >= 3.6 (!1833)
- update IANA's certificate for root trust anchor bootstrapping (!1862)
Bugfixes:
- respect disablement of QNAME case randomization even after TCP issues
- cache: fix wrong TTL in some cases, typically 32768
- reduce excessive caching of some uncommon failed answers (!1832)
- dns64: fix CNAME problems again (#797, !1862)
Full changelog:
https://gitlab.nic.cz/knot/knot-resolver/raw/v5.7.7/NEWS
Sources:
https://knot-resolver.nic.cz/release/knot-resolver-5.7.7.tar.xz
GPG signature:
https://knot-resolver.nic.cz/release/knot-resolver-5.7.7.tar.xz.asc
Documentation:
https://www.knot-resolver.cz/documentation/v5.7.7/
--
Ales Mrazek
PGP: 3057 EE9A 448F 362D 7420 5A77 9AB1 20DA 0A76 F6DE
Hi,
is it somehow possible to disable RFC 8198 - aggressive caching in knot-resolver 6?
I cannot find any information about that in docs. Unnamed chatbot is sure that it can be done with "cache.aggressive = false" in LUA script. But since it is undocumented, I would like to confirm that.
Regards
Jiri Masek
On 12/01/2026 00.11, * wrote:
> However, I cannot use it in my production environment as this returns
> NODATA globally (all views) for security.ubuntu.com.
> I have several views not using dns64 for which the AAAA record should
> be the existing original answer.
While on Lua level it's not ergonomic, tags are supported in these APIs,
so you can do a tiny change, e.g.:
lua:
policy-script: |
assert(C.kr_rule_local_data_ins(
kres.rrset(kres.str2dname('security.ubuntu.com.'),
kres.type.AAAA, nil, C.KR_RULE_TTL_DEFAULT),
nil, policy.get_tagset({'myTag'}), C.KR_RULE_OPTS_DEFAULT
) == 0)
and then you just need to add myTag to the views where you want to apply
this rule (in YAML).
You can read more about tags and views in the docs, around page
https://www.knot-resolver.cz/documentation/latest/config-policy-new.html
Hello,
I'm using this config.yaml with Knot Resolver 6 (on Debian 13):
workers: auto
network:
listen:
- interface: 127.0.0.1@53
logging:
level: info
options:
violators-workarounds: true
cache:
size-max: 100M
prefetch:
expiring: true
dnssec:
log-bogus: true
local-data:
rpz:
- file: /var/lib/rpz/urlhaus.abuse.ch.rpz
- file: /var/lib/rpz/threatfox.abuse.ch.rpz
lua:
script: |
policy.add(policy.suffix(policy.DENY, {todname('use-application-dns.net.')}))
policy.add(policy.suffix(policy.PASS, policy.todnames({
'uribl.com',
'zen.spamhaus.org',
'dbl.spamhaus.org',
'list.dnswl.org',
'sa-trusted.bondedsender.org',
'sa-accredit.habeas.com',
'bl.score.senderscore.com',
'dnsbl-1.uceprotect.net',
'dnsbl-2.uceprotect.net',
'dnsbl-3.uceprotect.net'
})))
policy.add(policy.all(policy.TLS_FORWARD({
{'9.9.9.9', hostname='dns.quad9.net', ca_file='/etc/ssl/certs/ca-certificates.crt' },
{'149.112.112.112', hostname='dns.quad9.net', ca_file='/etc/ssl/certs/ca-certificates.crt' },
})))
This results in this endless loop in the logs:
Apr 10 11:56:49 supervisord[56300]: captured stdio output from policy-loader[56777] (stderr): [system] config 'policy-loader.conf' (workdir '/run/knot-resolver'): No such file or directory
Apr 10 11:56:49 supervisord[56300]: success: policy-loader entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
Apr 10 11:56:49 supervisord[56300]: exited: policy-loader (exit status 1; not expected)
Apr 10 11:56:49 supervisord[56300]: spawned: 'policy-loader' with pid 56778
Apr 10 11:56:49 supervisord[56300]: captured stdio output from policy-loader[56778] (stderr): [system] config 'policy-loader.conf' (workdir '/run/knot-resolver'): No such file or directory
Apr 10 11:56:49 supervisord[56300]: success: policy-loader entered RUNNING state, process has stayed up for > than 0 seconds (startsecs)
Apr 10 11:56:50 supervisord[56300]: exited: policy-loader (exit status 1; not expected)
When using only one rpz file, thus removing the whole line
- file: /var/lib/rpz/threatfox.abuse.ch.rpz
it works fine.
What am I doing wrong here?
--
Frederik Himpe <frederik(a)frehi.be>
Hi,
I reported an issue in Knot Resolver 6.20 that is causing some problems for me.
After a short outage of authoritative servers, the resolver returns SERVFAIL + EDE 22 (No Reachable Authority) and keeps this state for a few minutes even after connectivity is restored.
Also, after switching to TCP, it does not go back to UDP.
You can find the full description and steps to reproduce here:
→ https://gitlab.nic.cz/knot/knot-resolver/-/issues/949
Has anyone else seen this issue ?
Do you have any better workaround than clearing the cache ?