diff options
author | Aleš Mrázek <ales.mrazek@nic.cz> | 2024-06-20 14:25:30 +0200 |
---|---|---|
committer | Aleš Mrázek <ales.mrazek@nic.cz> | 2024-08-26 14:28:10 +0200 |
commit | 40187578c630b97fd003d687d25ab9793b3893ce (patch) | |
tree | 0290a9eaee54882d0da5dc644d7f3d8429f55c77 | |
parent | Merge !1596: modules/serve_stale: drop the unused arguments again (diff) | |
download | knot-resolver-40187578c630b97fd003d687d25ab9793b3893ce.tar.xz knot-resolver-40187578c630b97fd003d687d25ab9793b3893ce.zip |
README.md: minor improvements and the manager added
-rw-r--r-- | README.md | 64 |
1 files changed, 35 insertions, 29 deletions
@@ -4,24 +4,23 @@ [![Coverage Status](https://gitlab.nic.cz/knot/knot-resolver/badges/nightly/coverage.svg?x)](https://www.knot-resolver.cz/documentation/latest) [![Packaging status](https://repology.org/badge/tiny-repos/knot-resolver.svg)](https://repology.org/project/knot-resolver/versions) -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://www.knot-resolver.cz/documentation/latest/config-overview.html) are written in Lua(JIT) and C. Batteries are included, but optional. +Knot Resolver is a full caching DNS resolver implementation. The core architecture is tiny and efficient, written in C and [LuaJIT][luajit], providing a foundation and a state-machine-like API for extension modules. There are three built-in modules - *iterator*, *validator* and *cache* - which provide the main functionality of the resolver. A few other modules are automatically loaded by default to extend the resolver's functionality. -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. +Since Knot Resolver version 6, it also includes a so-called [manager][manager]. It is a new component written in [Python][python] that hides the complexity of older versions and makes it more user friendly. For example, new features include declarative configuration in YAML format and HTTP API for dynamic changes in the resolver and more. -Strong filtering rules, and auto-configuration with etcd make it a great large-scale resolver solution. +Knot Resolver uses a [different scaling strategy][scaling] than the rest of the DNS resolvers - no threading, shared-nothing architecture (except MVCC cache which can be shared), which allows you to pin workers to available CPU cores and grow by self-replication. You can start and stop additional workers based on the contention without downtime, which is automated by the [manager][manager] by default. -The server adopts a [different scaling strategy][scaling] than the rest of the DNS recursors - no threading, shared-nothing architecture (except MVCC cache that may be shared) that allows you to pin instances on available CPU cores and grow by self-replication. You can start and stop additional nodes depending on the contention without downtime, which is by default automated by the included [manager][manager]. +The LuaJIT modules, support for 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. Strong filtering rules, and auto-configuration with etcd make it a great large-scale resolver solution. It also has strong support for DNS over TCP, in particular TCP Fast-Open, query pipelining and deduplication, and response reordering. -It also has strong support for DNS over TCP, notably TCP Fast-Open, query pipelining and deduplication, and response reordering. +For more on using the resolver, see the [User Documentation][doc]. See the [Developer Documentation][doc-dev] for detailed architecture and development. -### Packages +## Packages The latest stable packages for various distributions are available in our [upstream repository](https://pkg.labs.nic.cz/doc/?project=knot-resolver). Follow the installation instructions to add this repository to your system. -Knot Resolver is also available from the following distributions' repositories. +Knot Resolver is also available from the following distributions' repositories: * [Fedora and Fedora EPEL](https://src.fedoraproject.org/rpms/knot-resolver) * [Debian stable](https://packages.debian.org/stable/knot-resolver), @@ -31,43 +30,50 @@ Knot Resolver is also available from the following distributions' repositories. * [Arch Linux](https://archlinux.org/packages/extra/x86_64/knot-resolver/) * [Alpine Linux](https://pkgs.alpinelinux.org/packages?name=knot-resolver) -### Building from sources +### Packaging -Knot Resolver mainly [depends][depends] on Knot DNS libraries, [LuaJIT][luajit], and [libuv][libuv]. -See the [Building project][depends] documentation page for more information. +The project uses [`apkg`](https://gitlab.nic.cz/packaging/apkg) for packaging. +See [`distro/README.md`](distro/README.md) for packaging specific instructions. -### Docker image +## Building from sources -This is simple and doesn't require any dependencies or system modifications, just run: +Knot Resolver mainly depends on [KnotDNS][knot-dns] libraries, [LuaJIT][luajit], [libuv][libuv] and [Python][python]. + +See the [Building project][build] documentation page for more information. + +## Running + +By default, Knot Resolver comes with [systemd][systemd] integration and you just need to start its service. It requires no configuration changes to run a server on localhost. ``` -$ docker run -Pit cznic/knot-resolver +# systemctl start knot-resolver ``` -The images are meant as an easy way to try knot-resolver, and they're not designed for production use. +See the documentation at [knot-resolver.cz/documentation/latest][doc] for more information. -### Running +## Running the Docker image -The project builds a resolver library in the `lib` directory, and a daemon in the `daemon` directory. It requires no configuration or parameters to run a server on localhost. +Running the Docker image is simple and doesn't require any dependencies or system modifications, just run: ``` -$ kresd +$ docker run -Pit cznic/knot-resolver ``` -See the documentation at [knot-resolver.cz/documentation/latest][doc] for more options. - -[depends]: https://www.knot-resolver.cz/documentation/latest/dev/build.html -[doc]: https://www.knot-resolver.cz/documentation/latest/ -[scaling]: https://www.knot-resolver.cz/documentation/latest/config-multiple-workers.html -[manager]: https://www.knot-resolver.cz/documentation/latest/architecture-manager.html -[deckard]: https://gitlab.nic.cz/knot/deckard -[luajit]: https://luajit.org/ -[libuv]: http://libuv.org -[openresty]: https://openresty.org/ +The images are meant as an easy way to try the resolver, and they're not designed for production use. -### Contacting us +## Contacting us - [GitLab issues](https://gitlab.nic.cz/knot/knot-resolver/issues) (you may authenticate via GitHub) - [mailing list](https://lists.nic.cz/postorius/lists/knot-resolver-announce.lists.nic.cz/) - [![Join the chat at https://gitter.im/CZ-NIC/knot-resolver](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/CZ-NIC/knot-resolver?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[build]: https://www.knot-resolver.cz/documentation/latest/dev/build.html +[doc]: https://www.knot-resolver.cz/documentation/latest/ +[doc-dev]: https://www.knot-resolver.cz/documentation/latest/dev +[knot-dns]: https://www.knot-dns.cz/ +[luajit]: https://luajit.org/ +[libuv]: http://libuv.org +[python]: https://www.python.org/ +[systemd]: https://systemd.io/ +[scaling]: https://www.knot-resolver.cz/documentation/latest/config-multiple-workers.html +[manager]: https://www.knot-resolver.cz/documentation/latest/dev/architecture.html |