# Overview
info:
- $(info Target: Knot DNS Resolver $(VERSION)-$(PLATFORM))
+ $(info Target: Knot Resolver $(VERSION)-$(PLATFORM))
$(info Compiler: $(CC) $(BUILD_CFLAGS))
$(info Linker: $(CCLD) $(BUILD_LDFLAGS))
$(info )
-# Knot DNS Resolver
+# Knot Resolver
[](https://gitlab.labs.nic.cz/knot/knot-resolver/commits/master)
[](https://knot.pages.labs.nic.cz/knot-resolver/)
[](https://scan.coverity.com/projects/3912)
[](https://readthedocs.org/projects/knot-resolver/?badge=latest)
-Knot DNS Resolver is a caching full resolver implementation written in C and [LuaJIT][luajit], both a resolver library and a daemon. The core architecture is tiny and efficient, and provides a foundation and
+Knot Resolver is a caching full resolver implementation written in C and [LuaJIT][luajit], both a resolver library and a daemon. The core architecture is tiny and efficient, and provides a foundation and
a state-machine like API for extensions. There are three modules built-in - *iterator*, *validator*, *cache*, and a few more are loaded by default. Most of the [rich features](https://knot-resolver.readthedocs.io/en/latest/modules.html) are written in Lua(JIT) and C. Batteries are included, but optional.
The LuaJIT modules, support DNS privacy and DNSSEC, and persistent cache with low memory footprint make it a great personal DNS resolver or a research tool to tap into DNS data. TL;DR it's the [OpenResty][openresty] of DNS.
### Building from sources
-Knot DNS Resolver mainly [depends][depends] on Knot DNS libraries, [LuaJIT][luajit] and [libuv][libuv].
+Knot Resolver mainly [depends][depends] on Knot DNS libraries, [LuaJIT][luajit] and [libuv][libuv].
See the [Building project][depends] documentation page for more information.
### Docker image
coverage:
@$(LCOV) $(addprefix --add-tracefile ,$(wildcard $(COVERAGE_STAGE)*.info)) --output-file coverage.info
- @$(GENHTML) --no-function-coverage --no-branch-coverage -q -o coverage -p '$(realpath $(CURDIR))' -t 'Knot DNS Resolver $(VERSION)-$(PLATFORM) coverage report' --legend coverage.info
+ @$(GENHTML) --no-function-coverage --no-branch-coverage -q -o coverage -p '$(realpath $(CURDIR))' -t 'Knot Resolver $(VERSION)-$(PLATFORM) coverage report' --legend coverage.info
coverage-clean:
@$(RM) -rf '$(COVERAGE_STATSDIR)'
************************
-Knot DNS Resolver daemon
+Knot Resolver daemon
************************
The server is in the `daemon` directory, it works out of the box without any configuration.
If not, you can read the `Learn Lua in 15 minutes`_ for a syntax overview. Spending just a few minutes
will allow you to break from static configuration, write more efficient configuration with iteration, and
leverage events and hooks. Lua is heavily used for scripting in applications ranging from embedded to game engines,
- but in DNS world notably in `PowerDNS Recursor`_. Knot DNS Resolver does not simply use Lua modules, but it is
+ but in DNS world notably in `PowerDNS Recursor`_. Knot Resolver does not simply use Lua modules, but it is
the heart of the daemon for everything from configuration, internal events and user interaction.
Dynamic configuration
Cache configuration
^^^^^^^^^^^^^^^^^^^
-The default cache in Knot DNS Resolver is persistent with LMDB backend, this means that the daemon doesn't lose
+The default cache in Knot Resolver is persistent with LMDB backend, this means that the daemon doesn't lose
the cached data on restart or crash to avoid cold-starts. The cache may be reused between cache
daemons or manipulated from other processes, making for example synchronised load-balanced recursors possible.
args->quiet = true;
break;
case 'V':
- kr_log_info("%s, version %s\n", "Knot DNS Resolver", PACKAGE_VERSION);
+ kr_log_info("%s, version %s\n", "Knot Resolver", PACKAGE_VERSION);
return EXIT_SUCCESS;
case 'h':
case '?':
[Unit]
-Description=Knot DNS Resolver control socket
+Description=Knot Resolver control socket
Documentation=man:kresd.systemd(7)
Documentation=man:kresd(8)
Before=sockets.target
[Unit]
-Description=Knot DNS Resolver TLS network listener
+Description=Knot Resolver TLS network listener
Documentation=man:kresd.systemd(7)
Documentation=man:kresd(8)
Before=sockets.target
[Unit]
-Description=Knot DNS Resolver network listeners
+Description=Knot Resolver network listeners
Documentation=man:kresd.systemd(7)
Documentation=man:kresd(8)
Before=sockets.target
-.TH "kresd.systemd" "7" "2018-06-04" "CZ.NIC" "Knot DNS Resolver Systemd Units"
+.TH "kresd.systemd" "7" "2018-06-04" "CZ.NIC" "Knot Resolver Systemd Units"
.\"
.\" kresd.systemd.7 -- man page for systemd units for kresd
.\"
.\"
.SH "NAME"
kresd.systemd
-\- managing Knot DNS Resolver through systemd.
+\- managing Knot Resolver through systemd.
.SH "SYNOPSIS"
.nf
[Unit]
-Description=Knot DNS Resolver daemons
+Description=Knot Resolver daemons
Documentation=man:kresd.systemd(7)
Documentation=man:kresd(8)
After=syslog.target network-online.target
[Unit]
-Description=Knot DNS Resolver daemon
+Description=Knot Resolver daemon
Documentation=man:kresd.systemd(7)
Documentation=man:kresd(8)
Recommends:
knot-resolver-module-http,
Description: caching, DNSSEC-validating DNS resolver
- The Knot DNS Resolver is a caching full resolver implementation
+ The Knot Resolver is a caching full resolver implementation
written in C and LuaJIT, including both a resolver library and a
daemon. Modular architecture of the library keeps the core tiny and
efficient, and provides a state-machine like API for
Breaks:
knot-resolver-module-tinyweb (<< 1.1.0~git20160713-1~),
Description: HTTP/2 module for Knot Resolver
- The Knot DNS Resolver is a caching full resolver implementation
+ The Knot Resolver is a caching full resolver implementation
written in C and LuaJIT, including both a resolver library and a
daemon. Modular architecture of the library keeps the core tiny and
efficient, and provides a state-machine like API for
libjs-underscore,
${misc:Depends},
Description: Documentation for Knot Resolver
- The Knot DNS Resolver is a caching full resolver implementation
+ The Knot Resolver is a caching full resolver implementation
written in C and LuaJIT, including both a resolver library and a
daemon. Modular architecture of the library keeps the core tiny and
efficient, and provides a state-machine like API for
Replaces:
knot-resolver (<< 1.5.0-5),
Description: caching, DNSSEC-validating DNS resolver (shared library)
- The Knot DNS Resolver is a caching full resolver implementation
+ The Knot Resolver is a caching full resolver implementation
written in C and LuaJIT, including both a resolver library and a
daemon. Modular architecture of the library keeps the core tiny and
efficient, and provides a state-machine like API for
Replaces:
knot-resolver (<< 1.5.0-5),
Description: caching, DNSSEC-validating DNS resolver (shared library development files)
- The Knot DNS Resolver is a caching full resolver implementation
+ The Knot Resolver is a caching full resolver implementation
written in C and LuaJIT, including both a resolver library and a
daemon. Modular architecture of the library keeps the core tiny and
efficient, and provides a state-machine like API for
Document: knot-resolver
-Title: Knot DNS Resolver documentation
+Title: Knot Resolver documentation
Author: CZ.NIC labs
-Abstract: Documentation for the Knot DNS resolver,
+Abstract: Documentation for the Knot Resolver,
including building from source, using the library,
and configuration and operation of the daemon.
Section: Network/Communication
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
-# Short-Description: Knot DNS Resolver
-# Description: Knot DNS Resolver
+# Short-Description: Knot Resolver
+# Description: Knot Resolver
### END INIT INFO
# Author: Ondřej Surý <ondrej@debian.org>
NAME=kresd
-DESC="Knot DNS Resolver"
+DESC="Knot Resolver"
DAEMON=/usr/sbin/kresd
START_ARGS="--background --make-pidfile"
Requires(postun): systemd
%description
-The Knot DNS Resolver is a caching full resolver implementation written in C
+The Knot Resolver is a caching full resolver implementation written in C
and LuaJIT, including both a resolver library and a daemon. Modular
architecture of the library keeps the core tiny and efficient, and provides
a state-machine like API for extensions.
$ systemctl start kresd@1.service
%package devel
-Summary: Development headers for Knot DNS Resolver
+Summary: Development headers for Knot Resolver
Requires: %{name}%{?_isa} = %{version}-%{release}
%description devel
-The package contains development headers for Knot DNS Resolver.
+The package contains development headers for Knot Resolver.
%if 0%{?fedora}
%package doc
-Summary: Documentation for Knot DNS Resolver
+Summary: Documentation for Knot Resolver
BuildArch: noarch
Requires: %{name} = %{version}-%{release}
%description doc
-Documentation for Knot DNS Resolver
+Documentation for Knot Resolver
%endif
%prep
%pre
getent group knot-resolver >/dev/null || groupadd -r knot-resolver
-getent passwd knot-resolver >/dev/null || useradd -r -g knot-resolver -d %{_sysconfdir}/knot-resolver -s /sbin/nologin -c "Knot DNS Resolver" knot-resolver
+getent passwd knot-resolver >/dev/null || useradd -r -g knot-resolver -d %{_sysconfdir}/knot-resolver -s /sbin/nologin -c "Knot Resolver" knot-resolver
%post
%systemd_post 'kresd@*.service'
-PROJECT_NAME = Knot DNS Resolver library
+PROJECT_NAME = Knot Resolver library
GENERATE_HTML = NO
GENERATE_XML = YES
GENERATE_LATEX = NO
Requirements
------------
-The following is a list of software required to build Knot DNS Resolver from sources.
+The following is a list of software required to build Knot Resolver from sources.
.. csv-table::
:header: "Requirement", "Required by", "Notes"
"libuv_ 1.7+", "``daemon``", "Multiplatform I/O and services (libuv_ 1.0 with limitations [#]_)."
"lmdb", "``daemon``", "If missing, a static version is embedded."
-There are also *optional* packages that enable specific functionality in Knot DNS Resolver, they are useful mainly for developers to build documentation and tests.
+There are also *optional* packages that enable specific functionality in Knot Resolver, they are useful mainly for developers to build documentation and tests.
.. csv-table::
:header: "Optional", "Needed for", "Notes"
$ git submodule update --init --recursive
-The Knot DNS Resolver depends on the the Knot DNS library, recent version of libuv_, and LuaJIT_.
+The Knot Resolver depends on the the Knot DNS library, recent version of libuv_, and LuaJIT_.
.. code-block:: bash
Building with security compiler flags
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Knot DNS Resolver enables certain `security compile-time flags <https://wiki.debian.org/Hardening#Notes_on_Memory_Corruption_Mitigation_Methods>`_ that do not affect performance.
+Knot Resolver enables certain `security compile-time flags <https://wiki.debian.org/Hardening#Notes_on_Memory_Corruption_Mitigation_Methods>`_ that do not affect performance.
You can add more flags to the build by appending them to `CFLAGS` variable, e.g. ``make CFLAGS="-fstack-protector"``.
.. csv-table::
master_doc = 'index'
# General information about the project.
-project = u'Knot DNS Resolver'
+project = u'Knot Resolver'
copyright = u'2014-2018 CZ.NIC labs'
version = { k[0][0]: k[0][1] for k in filter(None, [re.findall(r'(MAJOR|MINOR|PATCH) := ([0-9]+)',line) for line in open('../config.mk')])}
version = '%s.%s.%s' % (version['MAJOR'], version['MINOR'], version['PATCH'])
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
- ('index', 'format.tex', u'Knot DNS Resolver',
+ ('index', 'format.tex', u'Knot Resolver',
u'CZ.NIC Labs', 'manual'),
]
-#################
-Knot DNS Resolver
-#################
+#############
+Knot Resolver
+#############
Knot Resolver is a minimalistic implementation of a caching validating DNS resolver.
Modular architecture keeps the core tiny and efficient,
-.TH "kresd" "8" "@DATE@" "CZ.NIC" "Knot DNS Resolver @VERSION@"
+.TH "kresd" "8" "@DATE@" "CZ.NIC" "Knot Resolver @VERSION@"
.\"
.\" kresd.8 -- kresd daemon manpage
.\"
.\"
.SH "NAME"
.B kresd
-\- Knot DNS @VERSION@ full caching resolver.
+\- Knot @VERSION@ full caching resolver.
.SH "SYNOPSIS"
.B kresd
.RB [ \-a | \-\-addr
.RB [ \-h | \-\-help ]
.IR [rundir]
.SH "DESCRIPTION"
-.B Knot DNS Resolver is a DNSSEC-enabled full caching resolver.
+.B Knot Resolver is a DNSSEC-enabled full caching resolver.
.P
Default mode of operation: when it receives a DNS query it iteratively
asks authoritative nameservers starting from root zone (.) and ending
.. _modules-implemented:
-*************************
-Knot DNS Resolver modules
-*************************
+*********************
+Knot Resolver modules
+*********************
.. contents::
:depth: 1
-*************************
-Knot DNS Resolver library
-*************************
+*********************
+Knot Resolver library
+*********************
Requirements
============
@echo 'libdir='$(LIBDIR) >> $@
@echo 'includedir='$(INCLUDEDIR) >> $@
@echo 'Name: libkres' >> $@
- @echo 'Description: Knot DNS Resolver library' >> $@
+ @echo 'Description: Knot Resolver library' >> $@
@echo 'URL: https://www.knot-resolver.cz' >> $@
@echo 'Version: $(VERSION)' >> $@
@echo 'Libs: -L$${libdir} -lkres' >> $@
Graphite module
---------------
-The module sends statistics over the Graphite_ protocol to either Graphite_, Metronome_, InfluxDB_ or any compatible storage. This allows powerful visualization over metrics collected by Knot DNS Resolver.
+The module sends statistics over the Graphite_ protocol to either Graphite_, Metronome_, InfluxDB_ or any compatible storage. This allows powerful visualization over metrics collected by Knot Resolver.
.. tip:: The Graphite server is challenging to get up and running, InfluxDB_ combined with Grafana_ are much easier, and provide richer set of options and available front-ends. Metronome_ by PowerDNS alternatively provides a mini-graphite server for much simpler setups.