Knot DNS is a high-performance authoritative-only DNS server.
  • C 84.6%
  • Python 10.9%
  • Roff 1.2%
  • Ragel 1%
  • Makefile 0.7%
  • Other 1.4%
Find a file
Daniel Salzman 5181f02ef1 Merge branch 'stats_fix' into 'master'
stats: fix dumper thread cleanup

Closes #972

See merge request knot/knot-dns!1875
2026-06-03 07:16:19 +02:00
distro distro/deb: add knot_deleg_info_names symbol 2026-05-09 19:19:52 +02:00
doc doc/reference: a basic description of 'policy.trash-delay' 2026-05-20 09:10:38 +02:00
m4
python libknot+kdig: support for EDNS DE flag (DELEG-aware signal) 2026-05-06 12:14:06 +02:00
samples
scripts Makefile.docker: prevent automatic creating tag HEAD 2026-06-01 15:21:31 +02:00
src stats: fix dumper thread cleanup 2026-06-02 20:06:13 +02:00
tests bugfix/timerDB: zone-backup inhibits later timerDB dump, messing timers 2026-05-30 08:52:52 +02:00
tests-extra Merge branch 'geoip_any' into 'master' 2026-06-02 15:57:27 +02:00
tests-fuzz tests-fuzz: remove AFL support 2026-05-01 20:56:37 +02:00
tests-redis tests-redis: 'make test' depends on 'make env' 2026-05-18 14:00:02 +02:00
.dir-locals.el
.dockerignore
.gitattributes
.gitignore
.gitlab-ci.yml CI: remove Debian 11 (EOL 2026-08-31) 2026-05-04 09:09:42 +02:00
.gitmodules
autogen.sh
configure.ac configure: add 'with_' prefix to socket_polling and memory_allocator fix automatic setting 2026-05-31 18:54:53 +02:00
COPYING
Dockerfile
Doxyfile.in
Knot.config
Knot.creator
Knot.files libngtcp2: update embedded library to v1.23.0 2026-05-31 15:22:14 +02:00
Knot.includes
Makefile.am
NEWS
README.md

Coverity Status Fuzzing Status

Requirements

doc/requirements.rst

Installation

doc/installation.rst

1. Install prerequisites

Debian based distributions

Update the system:

sudo apt-get update
sudo apt-get upgrade

Install prerequisites:

sudo apt-get install \
  libtool autoconf automake make pkg-config liburcu-dev libgnutls28-dev libedit-dev liblmdb-dev

Install optional packages:

sudo apt-get install \
  libcap-ng-dev libsystemd-dev libidn2-dev libprotobuf-c-dev protobuf-c-compiler protobuf-compiler libfstrm-dev libmaxminddb-dev libnghttp2-dev libbpf-dev libxdp-dev libmnl-dev python3-sphinx python3-sphinx-panels softhsm2

Fedora like distributions

Update the system:

dnf upgrade

Install basic development tools:

dnf install @buildsys-build

Install prerequisites:

dnf install \
  libtool autoconf automake pkgconfig userspace-rcu-devel gnutls-devel libedit-devel lmdb-devel

Install optional packages:

dnf install \
  libcap-ng-devel systemd-devel libidn2-devel protobuf-c-devel fstrm-devel libmaxminddb-devel libnghttp2-devel libbpf-devel libxdp-devel libmnl-devel python-sphinx python-sphinx-panels softhsm

When compiling on RHEL based system, the Fedora EPEL repository has to be enabled.

2. Install Knot DNS

Get the source code:

git clone https://gitlab.nic.cz/knot/knot-dns.git

Or extract source package to knot-dns directory.

Compile the source code:

cd knot-dns
autoreconf -if
./configure
make

Note that ./configure accepts various parameters (see ./configure --help). The following examples assume --sysconfdir=/etc and --localstatedir=/var/lib.

Install Knot DNS into system:

sudo make install
sudo ldconfig

Running

1. Ensure some configuration

doc/configuration.rst

Please see samples/knot.sample.conf, project documentation, or man 5 knot.conf for more details. Basically the configuration should specify:

  • network interfaces
  • served zones

E.g. use the default configuration file:

cd /etc/knot
mv knot.sample.conf knot.conf

Modify the configuration file:

editor knot.conf

2. Prepare working directory

mv example.com.zone /var/lib/knot/

3. Start the server

doc/operation.rst

This can be done by running the knotd command. Alternatively, your distribution should have an init script available, if you installed Knot DNS from a binary package.

Start the server in foreground to see if it runs:

knotd -c /etc/knot/knot.conf