kr_pkt_make_auth_header: Assertion `pkt && pkt->wire' failed
Hi, I am using knot-resolver on Debian 9 and after upgrade to apt package version 5.2.1-1. I am not able to run daemons because of this error:
Jan 14 07:32:57 dnsr-res2 kresd[19169]: kresd: ../lib/utils.c:320: kr_pkt_make_auth_header: Assertion `pkt && pkt->wire' failed.
My configuration file:
-- Config file example useable for multi-user ISP resolver
-- Refer to manual: https://knot-resolver.readthedocs.io/en/latest/daemon.html#configuration
-- Drop root privileges
user('knot-resolver', 'knot-resolver')
-- Set Internal hostname
hostname("xxxxxx")
net.listen('127.0.0.1', 53, { kind = 'dns' })
net.listen('109.202.xx.xx', 53, { kind = 'dns' })
net.listen('::1', 53, { kind = 'dns', freebind = true })
net.listen('2a06:x:x:x::x', 53, { kind = 'dns', freebind = true })
-- Auto-maintain root TA
--trust_anchors.file = 'root.keys'
-- Large cache size, so we don't need to flush often
-- This can be larger than available RAM, least frequently accessed
-- records will be paged out
cache.size = 500 * MB
-- Load Useful modules
modules = {
'hints > iterate',
'bogus_log',
'view',
'stats',
'predict',
graphite = {
prefix = 'xxx',
host = 'xxx',
tcp = false
}
}
view:addr('127.0.0.1', policy.all(policy.PASS))
view:addr('::1', policy.all(policy.PASS))
view:addr('10.0.0.0/8', policy.all(policy.PASS))
view:addr('172.20.0.0/21', policy.all(policy.PASS))
view:addr('172.29.0.0/16', policy.all(policy.PASS))
view:addr('172.30.15.42', policy.all(policy.PASS))
view:addr('192.168.0.0/16', policy.all(policy.PASS))
view:addr('100.64.0.0/10', policy.all(policy.PASS))
view:addr('0.0.0.0/0', policy.all(policy.DROP))
view:addr('::/0', policy.all(policy.DROP))
local rpz_hazard = require('rpz-hazard_xxxxx')
-- Apply RPZ for all clients
policy.add(policy.suffix(rpz_hazard.genRPZ_RR, {
kres.str2dname('1-x-bet.com.'),
kres.str2dname('1x-bet.com.'),
kres.str2dname('1x-02.com.'),
kres.str2dname('1xbet.com.'),
kres.str2dname('1xbet1.com.'),
kres.str2dname('1xbet10.com.'),
kres.str2dname('1xbet101.com.'),
kres.str2dname('1xbet102.com.'),
kres.str2dname('1xbet103.com.'),
kres.str2dname('1xbet104.com.'),
kres.str2dname('1xbet105.com.'),
kres.str2dname('1xbet106.com.'),
kres.str2dname('1xbet107.com.'),
kres.str2dname('1xbet108.com.'),
kres.str2dname('1xbet109.com.'),
kres.str2dname('1xbet11.com.'),
kres.str2dname('1xbet110.com.'),
kres.str2dname('1xbet12.com.'),
kres.str2dname('1xbet13.com.'),
kres.str2dname('1xbet14.com.'),
kres.str2dname('1xbet15.com.'),
kres.str2dname('1xbet16.com.'),
kres.str2dname('1xbet17.com.'),
kres.str2dname('1xbet18.com.'),
kres.str2dname('1xbet19.com.'),
kres.str2dname('1xbet2.com.'),
kres.str2dname('1xbet20.com.'),
kres.str2dname('1xbet21.com.'),
kres.str2dname('1xbet23.com.'),
kres.str2dname('1xbet24.com.'),
kres.str2dname('1xbet25.com.'),
kres.str2dname('1xbet26.com.'),
kres.str2dname('1xbet27.com.'),
kres.str2dname('1xbet28.com.'),
kres.str2dname('1xbet29.com.'),
kres.str2dname('1xbet3.com.'),
kres.str2dname('1xbet30.com.'),
kres.str2dname('1xbet31.com.'),
kres.str2dname('1xbet32.com.'),
kres.str2dname('1xbet34.com.'),
kres.str2dname('1xbet35.com.'),
kres.str2dname('1xbet36.com.'),
kres.str2dname('1xbet37.com.'),
kres.str2dname('1xbet38.com.'),
kres.str2dname('1xbet39.com.'),
kres.str2dname('1xbet4.com.'),
kres.str2dname('1xbet40.com.'),
kres.str2dname('1xbet41.com.'),
kres.str2dname('1xbet42.com.'),
kres.str2dname('1xbet43.com.'),
kres.str2dname('1xbet45.com.'),
kres.str2dname('1xbet46.com.'),
kres.str2dname('1xbet47.com.'),
kres.str2dname('1xbet48.com.'),
kres.str2dname('1xbet49.com.'),
kres.str2dname('1xbet5.com.'),
kres.str2dname('1xbet50.com.'),
kres.str2dname('1xbet51.com.'),
kres.str2dname('1xbet52.com.'),
kres.str2dname('1xbet53.com.'),
kres.str2dname('1xbet54.com.'),
kres.str2dname('1xbet6.com.'),
kres.str2dname('1xbet60.com.'),
kres.str2dname('1xbet61.com.'),
kres.str2dname('1xbet62.com.'),
kres.str2dname('1xbet63.com.'),
kres.str2dname('1xbet64.com.'),
kres.str2dname('1xbet65.com.'),
kres.str2dname('1xbet67.com.'),
kres.str2dname('1xbet68.com.'),
kres.str2dname('1xbet69.com.'),
kres.str2dname('1xbet7.com.'),
kres.str2dname('1xbet70.com.'),
kres.str2dname('1xbet71.com.'),
kres.str2dname('1xbet72.com.'),
kres.str2dname('1xbet73.com.'),
kres.str2dname('1xbet74.com.'),
kres.str2dname('1xbet75.com.'),
kres.str2dname('1xbet76.com.'),
kres.str2dname('1xbet78.com.'),
kres.str2dname('1xbet79.com.'),
kres.str2dname('1xbet8.com.'),
kres.str2dname('1xbet80.com.'),
kres.str2dname('1xbet82.com.'),
kres.str2dname('1xbet84.com.'),
kres.str2dname('1xbet86.com.'),
kres.str2dname('1xbet87.com.'),
kres.str2dname('1xbet9.com.'),
kres.str2dname('1xbet90.com.'),
kres.str2dname('1xbet91.com.'),
kres.str2dname('1xbet92.com.'),
kres.str2dname('1xbet94.com.'),
kres.str2dname('1xbet95.com.'),
kres.str2dname('1xbetbk6.com.'),
kres.str2dname('1xbetbk13.com.'),
kres.str2dname('1xbkbet-1.com.'),
kres.str2dname('1xhov.xyz.'),
kres.str2dname('1xiiv.xyz.'),
kres.str2dname('betworld.com.'),
kres.str2dname('bk-1x-bet.com.'),
kres.str2dname('bosscasino.eu.'),
kres.str2dname('eatsleepbet.com.'),
kres.str2dname('sportingbull.com.'),
kres.str2dname('thelotter.com.'),
kres.str2dname('webmoneycasino.com.'),
kres.str2dname('xbet-1.com.'),
kres.str2dname('betworld1.com.'),
kres.str2dname('betworld2.com.'),
kres.str2dname('betworld3.com.'),
kres.str2dname('betworld4.com.'),
kres.str2dname('betworld5.com.'),
kres.str2dname('betworld6.com.'),
kres.str2dname('betworld7.com.'),
kres.str2dname('betworld8.com.'),
kres.str2dname('betworld9.com.'),
kres.str2dname('betworld10.com.'),
kres.str2dname('cz.sportingbull174.com.'),
kres.str2dname('agentlotto3.ru.'),
kres.str2dname('agentlotto.com.'),
kres.str2dname('lottoevents.com.'),
kres.str2dname('bet2u.com.'),
kres.str2dname('gunsbet.com.'),
kres.str2dname('playamo.com.'),
kres.str2dname('lokicasino.com.'),
}))
and lua script:
local policy = require('kres_modules/policy')
local ffi = require('ffi')
local rpz = {}
function rpz.gen_answer_section(answer, sname, cname, answer_type, ip)
answer:begin(kres.section.ANSWER)
answer:put(sname, 5, answer:qclass(), kres.type.CNAME, kres.str2dname(cname))
answer:put(kres.str2dname(cname), 900, answer:qclass(), answer_type, kres.str2ip(ip))
end
function rpz.gen_authority_section(answer)
answer:begin(kres.section.AUTHORITY)
answer:put(kres.str2dname('xxxx'), 900, answer:qclass(), kres.type.NS, kres.str2dname('dnsa1.xxxx'))
answer:put(kres.str2dname('xxxx'), 900, answer:qclass(), kres.type.NS, kres.str2dname('dnsa2.xxxx'))
answer:put(kres.str2dname('xxxx'), 900, answer:qclass(), kres.type.NS, kres.str2dname('dnsa3.xxxx'))
end
function rpz.gen_additional_section(answer)
answer:begin(kres.section.ADDITIONAL)
answer:put(kres.str2dname('dnsa1.xxxx'), 900, answer:qclass(), kres.type.A, kres.str2ip('109.202.xxxx'))
answer:put(kres.str2dname('dnsa1.xxxx'), 900, answer:qclass(), kres.type.AAAA, kres.str2ip('2a06:xxx'))
answer:put(kres.str2dname('dnsa2.xxxx'), 900, answer:qclass(), kres.type.A, kres.str2ip('109.202.xxx'))
answer:put(kres.str2dname('dnsa2.xxxx'), 900, answer:qclass(), kres.type.AAAA, kres.str2ip('2a06:xxx'))
answer:put(kres.str2dname('dnsa3.xxxx'), 900, answer:qclass(), kres.type.A, kres.str2ip('85.xxxxx'))
answer:put(kres.str2dname('dnsa3.xxxx'), 900, answer:qclass(), kres.type.AAAA, kres.str2ip('2a02xxxx'))
end
function rpz.genRPZ_RR (state, req)
local answer = req.answer
local qry = req:current()
if qry.stype == kres.type.A then
ffi.C.kr_pkt_make_auth_header(answer)
answer:rcode(kres.rcode.NOERROR)
rpz.gen_answer_section(answer, qry.sname, 'hazard.xxxx', kres.type.A, '109.xxxxx')
rpz.gen_authority_section(answer)
rpz.gen_additional_section(answer)
return kres.DONE
elseif qry.stype == kres.type.AAAA then
ffi.C.kr_pkt_make_auth_header(answer)
answer:rcode(kres.rcode.NOERROR)
rpz.gen_answer_section(answer, qry.sname, 'hazard.xxxxx', kres.type.AAAA, '2a06:xxxxx')
rpz.gen_authority_section(answer)
rpz.gen_additional_section(answer)
return kres.DONE
else
return state
end
end
return rpz
Can you tell me where I should look to find some bug, please?