Knot DNS 3.6.1 介绍与选型指南
Knot DNS 3.6.1 权威域名服务器介绍与选型指南:官方资料溯源的定位、架构、功能特性与快速上手,以及与 BIND9、PowerDNS、NSD 的量化选型对比(2026-10-20 实查,未做本地安装实测)。
Knot DNS 3.6.1 介绍与选型指南
目标:基于官方公开资料(knot-dns.cz 官网、官方下载页与版本公告、CZ.NIC GitLab 仓库、knot.conf(5) 手册、CZ.NIC 官方软件包仓库)溯源介绍 Knot DNS 3.6.1 的定位、架构、功能与选型对比。本文为认知篇,不做本地安装与运行实测,全部版本号、日期与基准数据逐项标注来源与查询日期(2026-10-20);部署、配置、命令的逐条实测见本专栏《Ubuntu 22.04 安装 Knot DNS 指南》《Knot DNS 3.6.1 配置参数详解》《Knot DNS 3.6.1 常用 CLI 命令与工具详解》三篇。
一、环境信息
1.1 查询说明
- 查询日期:2026-10-20。
- 信息获取方式:纯官方资料溯源,未做本地安装与运行实测。来源清单:
- 官网首页与版本公告:knot-dns.cz(含《Version 3.6.1》发布公告,2026-10-09);
- 官方下载页:knot-dns.cz/download/(稳定分支版本表、源码 tarball、GPG 签名);
- 官方软件包仓库:pkg.labs.nic.cz/doc/?project=knot-dns(DEB/RPM 仓库接入方式,支持 Ubuntu 22.04 LTS jammy);
- 配置手册:knot.conf(5)(随软件包分发,版本 3.6.1);
- 性能基准:knot-dns.cz/benchmark-400G/(CZ.NIC 官方 400GbE 权威服务器基准,2026-06-21 测量);
- 同类软件官方站点:isc.org(BIND 9,版本经本平台《BIND9 9.20.29 介绍与选型指南》于 2026-10-20 实查)、nlnetlabs.nl(NSD)、doc.powerdns.com(PowerDNS Authoritative)。
1.2 版本与许可依据
| 项目 | 实查结果(2026-10-20) | 来源 |
|---|---|---|
| 当前版本 | Knot DNS 3.6.1(2026-10-09 发布,含 mod-ecs 新模块与十余项缺陷修复) | knot-dns.cz 首页版本公告 |
| 当前稳定分支 | 3.6 分支(接收新特性与全部修复) | knot-dns.cz/download/ |
| 上一稳定分支 | 3.5 分支(3.5.4,2026-04-02 发布,EOL 2027 年 Q3;仓库内最新 3.5.9) | knot-dns.cz/download/、pkg.labs.nic.cz 仓库索引 |
| 维护分支 | 3.4 分支(3.4.10,2026-04-02 发布,EOL 2026 年 Q3) | knot-dns.cz/download/ |
| 许可证 | GPL-3.0-or-later,完全开源免费 | knot-dns.cz 官网「Open source」栏目 |
| 开发方 | CZ.NIC(.cz 国家顶级域注册管理局),开发过程公开透明 | knot-dns.cz 官网 |
| 目标平台 | Linux、BSD、macOS 等 POSIX 系统 | knot-dns.cz 官网 |
💡 技术拓展:DNS 服务器的角色分权威(Authoritative)与递归解析(Recursive/Resolver)两类。权威服务器只回答自己管辖 zone 的数据(Knot DNS、NSD、BIND9 的 named、PowerDNS Authoritative);递归解析器替客户端遍历解析全域名空间(Unbound、Knot Resolver、BIND9 亦可兼任)。本文主角 Knot DNS 是纯权威服务器;递归需求由同门的 Knot Resolver(knot-resolver.cz)承担,两者由同一团队开发但相互独立发布。
二、软件概述
Knot DNS 是 CZ.NIC 开发的高性能纯权威 DNS 服务器,用 C 语言编写,主打三张牌:高并发响应性能、完整的现代 DNS 功能集(IXFR 增量传输、DDNS 动态更新、RRL 响应限速、自动 DNSSEC 签名)、以及对 root/TLD 级别部署场景的针对性优化。官网对其一句话定位是「High-performance authoritative-only DNS server」,并明确称其「exceptionally well」适合作为根服务器或 TLD 域名服务器——这不是营销话术:.cz 顶级域即由 CZ.NIC 运营,Knot DNS 是其生产系统,多个 DNS 根节点与 TLD 注册局也是其用户。
一个容易混淆的点需要澄清:Knot DNS 与 Knot Resolver 是两个软件。Knot DNS(knot-dns.cz)是权威服务器,配置体系是单文件 knot.conf;Knot Resolver(knot-resolver.cz)是缓存递归解析器,采用 LuaJIT 模块化架构。本系列文档只覆盖 Knot DNS。
2.1 组件套件
Knot DNS 不是单个二进制,而是一套工具(以 CZ.NIC 官方仓库 deb 包 3.6.1 的实际打包为准,包分为 knot、knot-dnsutils、knot-keymgr):
| 工具 | 所在包 | 职责 |
|---|---|---|
| knotd | knot | 权威服务器守护进程本体 |
| knotc | knot | 控制工具:经 Unix 套接字对运行中的 knotd 做配置/zone/统计全生命周期操作 |
| kxdpgun | knot | 基于 XDP 的高性能压测流量生成器(与 knotd 的 XDP 模式配套) |
| kjournalprint | knot | 打印 zone journal(日志库)中的变更集 |
| kcatalogprint | knot | 打印 catalog zone(目录域)成员 |
| kdig | knot-dnsutils | DNS 查询工具,支持 UDP/TCP/TLS(DoT)/HTTPS(DoH)/QUIC(DoQ) |
| knsupdate | knot-dnsutils | RFC 2136 动态更新客户端(类 BIND 的 nsupdate) |
| keymgr | knot-keymgr | DNSSEC 密钥管理:KASP 数据库中密钥的生成、列表、导入、滚动 |
| knsec3hash | knot | 计算 NSEC3 哈希(用于人工核对 NSEC3 链) |
| kzonesign | knot | 对 zone 文件做离线 DNSSEC 签名(与运行时自动签名互补) |
2.2 版本分支策略
官方采用双稳定分支策略(knot-dns.cz/download/ 实查):
- Current Stable Branch:3.6 分支,接收新特性、增强与全部缺陷修复,相对现代但时间验证较浅;
- Previous Stable Branch:3.5 分支,不再接收新特性,但持续接收重要修复,时间验证充分,EOL 2027 年 Q3;
- 同一分支生命周期内库的 API/ABI 保持兼容(除非必要的小幅兼容性调整),这对把 libknot 作为库集成的下游是重要承诺;
- 3.4 分支处于维护末期(EOL 2026 年 Q3),新部署不应选择。
发布节奏上,从 pkg.labs.nic.cz 仓库索引可看到 3.5.4→3.5.9→3.6.0→3.6.1 的连续滚动,小版本(bugfix)以月为单位发布,3.6.1 与 3.6.0 间隔约两个月。
三、核心架构
以下内容基于官方文档与 knot.conf(5) 手册的结构化描述(无本地代码剖析),设计要点按配置体系反推。
3.1 单进程多线程 + 无锁查询路径
Knot DNS 采用单进程多线程模型:knotd 启动后按 CPU 能力派生 UDP workers 与 TCP workers(默认等于 CPU 核数,如 knotc status workers 报告的「UDP workers: 12, TCP workers: 12」即 12 核机器的默认形态),另有一组 background workers 处理 zone 加载、签名、传输等异步任务。官方称响应代码路径完全无锁(lock-free),这是其高并发响应率的设计根基——查询处理不需要跨线程加锁,配合每 worker 独立套接字(SO_REUSEPORT + socket affinity)避免惊群。
3.2 数据面:zone 文件 + LMDB journal 双存储
Knot DNS 的 zone 数据体系由三层构成(knot.conf(5) DATABASE SECTION):
- zone file:管理员维护的权威源文件(如
/var/lib/knot/<zone>.zone),默认zonefile-load: difference-no-serial——加载时与 journal 差异合并,而非整体覆盖; - journal(LMDB):zone 的动态状态库,承载 DDNS 更新、入站传输差异、DNSSEC 签名结果,按变更集(changeset)记录;
- timer DB / KASP DB:分别是 zone 事件定时器库与 DNSSEC 密钥状态库(KASP = Key And Signing Policy)。
这一设计让 DDNS 更新先落 journal 保住性能,再按策略回写 zone 文件;kjournalprint 可直接审计 journal 里的每次变更。
3.3 控制面:Unix 套接字 + 热配置
knotd 与 knotc 之间走本地 Unix 控制套接字(默认 /run/knot/knot.sock,CONTROL SECTION 可改)。配置存放在二进制配置数据库 confdb(默认 /var/lib/knot/confdb,LMDB 实现):服务启动时读取 confdb 而非文本文件,文本 knot.conf 在首次初始化或 knotc conf-import 时导入;运行期可用 knotc conf-set/conf-read 事务式改配置并即时生效(多数参数免重启),这是 Knot「rapid on-the-fly reconfiguration」卖点的实现层。
3.4 查询模块化
knotd 内置查询处理模块,编译集随发行包而定:对本环境 3.6.1 CZ.NIC deb 包实测 knotc conf-list,列出全部 14 个可用模块——mod-alias(ALIAS 记录合成应答)、mod-authsignal(RFC 9615 自动 DNSSEC 引导记录)、mod-cookies(DNS Cookie)、mod-dnserr(RFC 9567 DNS 错误上报)、mod-dnsproxy(微型 DNS 代理转发)、mod-ecs(EDNS Client Subnet,3.6.1 新增 scope 控制能力)、mod-noudp、mod-onlinesign、mod-probe(DNS 流量探针)、mod-queryacl、mod-rrl(响应限速)、mod-stats(统计计数)、mod-synthrecord(合成 A/PTR 记录)、mod-whoami(回显查询源 IP 的 A/AAAA 合成应答)。mod-dnstap 与 mod-geoip 在该 deb 包中未编译(需要 dnstap/geoip 时应改用源码编译并带对应 configure 开关,或确认发行版包构建参数)。
💡 技术拓展:权威 DNS 对恶意流量的常见防线有三类——响应限速(RRL:对同源放大攻击超限只回 slip/truncate)、查询访问控制(按地址/密钥放行查询、传输、更新动作)、应用层加固(DNS Cookie 防伪源)。Knot DNS 三者齐备:mod-rrl、ACL 体系、mod-cookies。生产公网权威至少应启用 RRL 与 transfer/update ACL。
四、功能特性
按官方文档与 3.6.1 发布公告归纳(均为软件实际具备的能力,其中标注「实测」的项在本专栏部署/配置/命令篇有完整验证记录):
4.1 权威服务核心
- 全类型资源记录与完整权威语义(aa 应答、NXDOMAIN/NODATA 区分、wildcard、CNAME/DNAME);
- IXFR/AXFR 出站与入站:增量传输(IXFR)与全量传输,master/slave 双角色,catalog zone(RFC 9432)批量管理成员域;
- DDNS(RFC 2136):动态更新,支持 TSIG 密钥认证与 ACL 白名单,更新落 journal 并自动推进 SOA serial(实测验证:带 TSIG 更新成功、无密钥被拒);
- notify/transfer 事件体系:主从 NOTIFY、可按 remote/ACL 精细控制。
4.2 DNSSEC 自动化
- 自动签名:zone 开启
dnssec-signing: on后按 POLICY 自动生成 KSK/ZSK(实测默认策略生成 ECDSAP256SHA256 一对)、自动维护签名周期、NSEC/NSEC3 链; - KASP 密钥策略:算法、生命周期、滚动(rollover)计划全部声明式配置,keymgr 可查询/干预;KSK 就绪后等待 DS 确认(CDS/CDNSKEY 子母确认体系),配套 SUBMISSION 与 DNSKEY-SYNC 节;
- 离线签名:kzonesign 对 zone 文件离线签名,适合「签名与发布分离」的合规流程。
4.3 传输加密与高性能路径
- DoT/DoH/DoQ:knotd 原生支持 DNS over TLS/HTTPS/QUIC 监听(配置 listen 的 tls/quic 端口),kdig 客户端可全协议验证;
- XDP:knotd 可将查询面挂到内核 eXpress Data Path(XDP SECTION 配置),官方 400GbE 基准中 Knot XDP 模式是响应率的领先形态;配套 kxdpgun 压测器可在同一套体系内完成发压。
4.4 运维与可观测
- 热配置:knotc 控制通道对多数参数(zone、ACL、模块、日志)即时生效;
listen监听地址变更等少数项需要重启进程(实测验证:reload 后新监听不生效,restart 才绑定); - 统计:mod-stats 按协议/操作/响应码计数(实测:
knotc stats输出mod-stats.request-protocol[udp4]等计数器),statistics 节支持周期性 YAML 导出;另有社区 knot-exporter(Python/Go,PyPI/GitHub)接 Prometheus; - 备份恢复:
knotc zone-backup/zone-restore一条命令打包 zone 数据+密钥+定时器(实测:backup 目录生成 zonefiles/keys/timers 三件套)。
五、快速开始(最小可用示例)
本节给出官方文档形态的最小可用配置(来源:knot.conf(5) 手册与官方软件包自带样例
/etc/knot/knot.conf,2026-10-20),用于建立直觉。本篇为认知篇不携带实测回显;从安装到解析验证的完整实测流程(含每条命令真实输出)见《Ubuntu 22.04 安装 Knot DNS 指南》。
第一步,安装(Ubuntu 22.04 直接走发行版仓库,或接入 CZ.NIC 官方仓库获取 3.6.1):
sudo apt update && sudo apt install -y knot knot-dnsutils
第二步,最小配置 /etc/knot/knot.conf——一个 lab.example 主域:
server:
rundir: "/run/knot"
user: knot:knot
listen: [ 127.0.0.1@53, ::1@53 ]
log:
- target: syslog
any: info
database:
storage: "/var/lib/knot"
zone:
- domain: lab.example
storage: "/var/lib/knot"
file: "lab.example.zone"
第三步,准备 zone 文件 /var/lib/knot/lab.example.zone:
$ORIGIN lab.example.
$TTL 3600
@ IN SOA ns1.lab.example. admin.lab.example. ( 2026102001 86400 7200 3600000 3600 )
@ IN NS ns1.lab.example.
ns1 IN A 127.0.0.1
www IN A 192.0.2.10
第四步,校验配置、生效并验证解析:
sudo knotc conf-check # 配置语法校验
sudo systemctl restart knot # listen 变更需重启(reload 不重建监听,见配置篇)
kdig @127.0.0.1 www.lab.example A +short
预期 kdig 返回 192.0.2.10。四步闭环在实测篇中有逐条真实回显,包括安装回显、knotd -V 版本输出、ss -ltn 监听核验与 SOA/A 记录查询结果。
六、适用场景与限制
6.1 高适用场景
- TLD / 根 / 大型托管权威:Knot 的设计目标场景,官方基准(400GbE 直连、EPYC 9745、2026-06-21 测量)将其定位为响应率第一梯队的权威实现,XDP 模式为其独有优势;.cz 等 TLD 生产验证;
- DNSSEC 重度用户:KASP 自动滚动、CDS 子母确认、离线签名三条路线完整,比 BIND9 的手工 dnssec-policy 更省心,比 NSD(无内置自动签名体系)省掉整套外置签名流水线;
- 主从规模化管理:catalog zone + 模板 + IXFR 的组合适合管理成百上千 zone 的托管/企业环境;
- 需要 DoT/DoH/DoQ 对外服务的权威:三协议原生监听,无需前置网关。
6.2 不适用/限制
- 需要递归解析:Knot DNS 是纯权威,不带任何递归能力,客户端侧解析需求需另配 Knot Resolver/Unbound(可同机异端口部署);
- 数据库驱动 zone 存储:Knot 只认 zone 文件 + journal,没有 PowerDNS 那样的 MySQL/PostgreSQL/Lua 后端体系——DNS 记录由业务系统高频写入库的场景,PowerDNS 的 backend 架构更对口;
- dnstap/geoip 开箱可用性:官方 deb 包默认未编译 mod-dnstap/mod-geoip(3.6.1 CZ.NIC 包实测),需要时应源码编译;
- 配置心智:confdb 机制意味着「改了 knot.conf 但没导入配置库则不生效」,从 BIND9 迁移来的运维需要适应(详见配置篇常见问题)。
七、同类选型对比
7.1 四款主流权威服务器横向对比
以下数据全部实查官方站点(查询日期 2026-10-20),基准数据引用 CZ.NIC 官方 400GbE 基准页(BIND 9.20.24 / Knot DNS 3.5.5 / NSD 4.14.2,2026-06-21 测量,AMD EPYC 9745 + Mellanox ConnectX-7):
| 维度 | Knot DNS 3.6.1 | BIND 9.20.29 | PowerDNS Authoritative | NSD 4.15.3 |
|---|---|---|---|---|
| 维护方 | CZ.NIC | ISC | Open-Xchange/PowerDNS | NLnet Labs |
| 许可证 | GPL-3.0+ | MPL-2.0 | GPL-2.0 | BSD-3-Clause |
| 实现语言 | C | C++ | C++ | C |
| 角色定位 | 纯权威 | 权威+递归一体 | 纯权威(递归/前端是另两个产品) | 纯权威 |
| zone 存储 | zone 文件 + LMDB journal | 文件(LZ 压缩格式)为主 | 数据库后端(MySQL/PostgreSQL/Lua/remote/REST API) | 纯 zone 文件 |
| DNSSEC | KASP 自动签名+自动滚动(内置) | dns-policy 可自动化,组件分散 | 在线签名 | 无内置自动签名(外部流水线) |
| 动态更新/增量传输 | DDNS + IXFR,journal 化 | 支持 | DDNS + IXFR(后端相关) | IXFR/DDNS 支持,动态能力弱化 |
| 控制面 | knotc(Unix socket,热配置事务) | rndc(TCP 953) | REST API + 内置 Web 服务 | nsd-control |
| 高性能路径 | XDP 内核旁路(kxdpgun 配套) | 常规多线程 | 常规多线程 | 常规多线程(simdzone 加速 zone 加载) |
| 400GbE 基准参与 | 参与(含 XDP 形态,官方图表领先项) | 参与 | 未参与该基准 | 参与 |
| 典型用户 | .cz 等 TLD、多个根节点 | 企业存量最大、递归场景事实标准 | API 驱动的动态 DNS/托管平台 | 根服务器(3 个)、TLD |
7.2 量化解读与选型建议
- 性能维度:唯一可横比的公开量化数据是 CZ.NIC 官方 400GbE 基准(同机同压测器 kxdpgun、TLD 场景 445 万记录、随机 QNAME)。其 Response Rate 图表中 Knot DNS 3.5.5(XDP 模式)与 NSD 4.14.2 处于第一梯队,BIND 9.20.24 相对靠后——注意这是 CZ.NIC 主导的基准(官方亦声明其只图表化了「配置到最优」的实现),NSD 方与 BIND 方对自家调优另有说法,引用时保持这一前提;
- 纯静态权威、追求极简与极致吞吐(根/TLD/大型静态域):NSD 与 Knot 二选一;需要自动 DNSSEC、catalog、DoT/DoQ、XDP 或更活跃的功能迭代 → Knot;NSD 的优势是无 DNSSEC 状态机的零心智负担与 NLnet Labs 的极简哲学;
- DNS 数据库化/业务驱动(面板建站、域名商、自动化平台高频写记录):PowerDNS 是唯一正解,其 gmysql/gpgsql 后端 + REST API + Lua 记录体系无可替代;Knot 的 DDNS + catalog 只覆盖「批量托管」不覆盖「库表级集成」;
- 既要权威又要递归一台搞定:BIND9(named 一进程双角色)或 Knot+Knot Resolver 同机分端口组合;无历史包袱的新部署,建议权威用 Knot、递归用 Knot Resolver/Unbound 分离部署;
- 从 BIND9 迁移:zone 文件可直接复用(Knot 支持标准 presentation 格式),rndc 习惯迁移到 knotc,动态库/视图(view)等 BIND 特有机制无对等物,需架构级重评估。
八、参考链接
- 官网与文档:https://www.knot-dns.cz/
- 版本公告(3.6.1):https://www.knot-dns.cz/2026-10-09-version-361.html
- 官方下载与分支表:https://www.knot-dns.cz/download/
- 官方 DEB 仓库接入:https://pkg.labs.nic.cz/doc/?project=knot-dns
- 官方 400GbE 基准:https://www.knot-dns.cz/benchmark-400G/
- 源码仓库:https://gitlab.nic.cz/knot/knot-dns
- knot.conf(5) 手册(随包分发,3.6.1):
man knot.conf - 同门递归解析器 Knot Resolver:https://knot-resolver.cz/
- 本系列实测篇:《Ubuntu 22.04 安装 Knot DNS 指南》《Knot DNS 3.6.1 配置参数详解》《Knot DNS 3.6.1 常用 CLI 命令与工具详解》
- 站内同类对比:《BIND9 9.20.29 介绍与选型指南》(https://www.quzuo.net/document/scK3W4fM933i)