README.md 3.01 KB
Newer Older
Jan Včelák's avatar
Jan Včelák committed
1 2
# Knot DNS Resolver

3
[![Build Status](https://img.shields.io/travis/CZ-NIC/knot-resolver/master.svg)](https://travis-ci.org/CZ-NIC/knot-resolver)
Marek Vavruša's avatar
Marek Vavruša committed
4 5
[![Coverage Status](https://img.shields.io/coveralls/CZ-NIC/knot-resolver.svg)](https://coveralls.io/r/CZ-NIC/knot-resolver)
[![Coverity](https://img.shields.io/coverity/scan/3912.svg)](https://scan.coverity.com/projects/3912)
Marek Vavruša's avatar
Marek Vavruša committed
6
[![Documentation Status](https://readthedocs.org/projects/knot-resolver/badge/?version=latest)](https://readthedocs.org/projects/knot-resolver/?badge=latest)
7

8

9 10
The 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
a state-machine like API for extensions. There are three of those built-in - *iterator*, *cache*, *validator*, and most of the [rich features](http://knot-resolver.readthedocs.org/en/latest/modules.html) are written in LuaJIT, Go and C. Batteries are included, but optional. 
Marek Vavruša's avatar
Marek Vavruša committed
11

12
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. TL;DR it's the [OpenResty][openresty] of DNS.
Marek Vavruša's avatar
Marek Vavruša committed
13

14
Several cache backends (LMDB, Redis and Memcached), strong filtering rules, and auto-configuration with etcd make it a great large-scale resolver solution. 
15

16
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.
Marek Vavruša's avatar
Marek Vavruša committed
17 18 19

### Building from sources

20
The Knot DNS Resolver [depends][depends] on the 2.1 version of the Knot DNS library, [LuaJIT][luajit] and [libuv][libuv].
Marek Vavruša's avatar
Marek Vavruša committed
21
See the [Building project][depends] documentation page for more information.
Marek Vavruša's avatar
Marek Vavruša committed
22 23 24 25

### Docker image

This is simple and doesn't require any dependencies or system modifications, just run:
26 27

```
Pavel Valach's avatar
Pavel Valach committed
28
$ docker run -it cznic/knot-resolver
29 30
```

31
See the build page [hub.docker.com/r/cznic/knot-resolver](https://hub.docker.com/r/cznic/knot-resolver/) for more information and options.
Marek Vavruša's avatar
Marek Vavruša committed
32 33

### Running
34

35
The project builds a resolver library in the `lib` directory, and a daemon in the `daemon` directory.
36 37

```
Marek Vavruša's avatar
Marek Vavruša committed
38
$ kresd -h
39
```
Marek Vavruša's avatar
Marek Vavruša committed
40 41 42 43

See the documentation at [knot-resolver.readthedocs.org][doc].

[depends]: http://knot-resolver.readthedocs.org/en/latest/build.html
The Gitter Badger's avatar
The Gitter Badger committed
44
[doc]: http://knot-resolver.readthedocs.org/en/latest/index.html
Marek Vavruša's avatar
Marek Vavruša committed
45
[scaling]: http://knot-resolver.readthedocs.org/en/latest/daemon.html#scaling-out
Marek Vavruša's avatar
Marek Vavruša committed
46
[deckard]: https://gitlab.labs.nic.cz/knot/deckard
Marek Vavruša's avatar
Marek Vavruša committed
47 48 49
[luajit]: http://luajit.org/
[libuv]: https://github.com/libuv/libuv
[openresty]: https://openresty.org/
The Gitter Badger's avatar
The Gitter Badger committed
50 51 52 53

### Contacting us

[![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)