Knot DNS 3.6.1 介绍与选型指南

Knot DNS 3.6.1 权威域名服务器介绍与选型指南:官方资料溯源的定位、架构、功能特性与快速上手,以及与 BIND9、PowerDNS、NSD 的量化选型对比(2026-10-20 实查,未做本地安装实测)。

Knot DNSKnotDNS2026/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):

工具所在包职责
knotdknot权威服务器守护进程本体
knotcknot控制工具:经 Unix 套接字对运行中的 knotd 做配置/zone/统计全生命周期操作
kxdpgunknot基于 XDP 的高性能压测流量生成器(与 knotd 的 XDP 模式配套)
kjournalprintknot打印 zone journal(日志库)中的变更集
kcatalogprintknot打印 catalog zone(目录域)成员
kdigknot-dnsutilsDNS 查询工具,支持 UDP/TCP/TLS(DoT)/HTTPS(DoH)/QUIC(DoQ)
knsupdateknot-dnsutilsRFC 2136 动态更新客户端(类 BIND 的 nsupdate)
keymgrknot-keymgrDNSSEC 密钥管理:KASP 数据库中密钥的生成、列表、导入、滚动
knsec3hashknot计算 NSEC3 哈希(用于人工核对 NSEC3 链)
kzonesignknot对 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.1BIND 9.20.29PowerDNS AuthoritativeNSD 4.15.3
维护方CZ.NICISCOpen-Xchange/PowerDNSNLnet Labs
许可证GPL-3.0+MPL-2.0GPL-2.0BSD-3-Clause
实现语言CC++C++C
角色定位纯权威权威+递归一体纯权威(递归/前端是另两个产品)纯权威
zone 存储zone 文件 + LMDB journal文件(LZ 压缩格式)为主数据库后端(MySQL/PostgreSQL/Lua/remote/REST API)纯 zone 文件
DNSSECKASP 自动签名+自动滚动(内置)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 特有机制无对等物,需架构级重评估。

八、参考链接