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
2026-07-27 08:05:43 +02:00
distro libs: transform mdb_dump and mdb_load to functions 2026-07-23 15:08:11 +02:00
doc man/knotd: mention SIGTERM as a handled signal 2026-07-23 17:31:46 +02:00
m4
python
samples
scripts
src libngtcp2: update embedded library to v1.25.0 2026-07-27 08:05:43 +02:00
tests Merge branch 'lmdb_migration' into 'master' 2026-07-25 10:35:49 +02:00
tests-extra tests: DDNS forwarding over QUIC incl not using 0-RTT 2026-07-20 11:48:13 +02:00
tests-fuzz
tests-redis tests-redis: remove RLTest lockfile in tmp to avoid problems with removing when user changes 2026-06-22 15:36:42 +02:00
.dir-locals.el
.dockerignore
.gitattributes
.gitignore
.gitlab-ci.yml
.gitmodules
autogen.sh
configure.ac Merge branch 'lmdb_migration' into 'master' 2026-07-25 10:35:49 +02:00
COPYING
Dockerfile
Doxyfile.in
Knot.config
Knot.creator
Knot.files libs: transform mdb_dump and mdb_load to functions 2026-07-23 15:08:11 +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