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
Libor Peltan 13a80033f9 Merge branch 'keymgr_digest_option' into 'master'
keymgr: Add ds command digest options (bis)

See merge request knot/knot-dns!1882
2026-08-13 10:35:39 +02:00
distro keymgr: DS hash options refactoring and improvements 2026-08-12 14:59:25 +02:00
doc keymgr: DS hash options refactoring and improvements 2026-08-12 14:59:25 +02:00
m4
python handle disconnected knotd socket 2026-06-16 14:21:41 +02:00
samples
scripts zone/timers: make XFRout freeze persistent by setting it in timers 2026-06-04 19:25:36 +02:00
src Merge branch 'keymgr_digest_option' into 'master' 2026-08-13 10:35:39 +02:00
tests yparser: add percent unit support to YP_INT 2026-08-07 14:32:12 +02:00
tests-extra tests-extra: call keymgr keystore test if not ASAN 2026-08-09 19:09:23 +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 gitignore: newer qtcreator stuff 2026-06-04 19:25:36 +02:00
.gitlab-ci.yml CI: update Fedora versions 2026-07-31 16:27:13 +02:00
.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 tests: cover device keying in conn_pool and the unreachable cache 2026-08-04 17:43:46 +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