Files
coredns/README.md

92 lines
2.4 KiB
Markdown
Raw Normal View History

2016-03-18 21:25:47 +00:00
# CoreDNS
CoreDNS is DNS server that started as a fork of [Caddy](https://github.com/mholt/caddy/). It has the
same model: it chains middleware.
2016-04-03 19:05:49 +01:00
## Status
Currently CoreDNS is able to:
* Serve zone data from a file, both DNSSEC (NSEC only atm) and DNS is supported.
* Retrieve zone data from primaries, i.e. act as a secondary server.
* Allow for zone transfers, i.e. act as a primary server.
* Use Etcd as a backend, i.e. a 90% replacement for
[SkyDNS](https://github.com/skynetservices/skydns).
* Serve as a proxy to forward queries to some other (recursive) nameserver.
2016-04-08 07:04:23 +01:00
* Rewrite queries (both qtype, qclass and qname).
* Provide metrics (by using Prometheus)
2016-04-03 19:05:49 +01:00
* Provide Logging.
2016-04-08 07:04:23 +01:00
There are corner cases not implemented and a few [issues](https://github.com/miekg/coredns/issues).
2016-04-03 20:13:33 +01:00
2016-04-03 19:05:49 +01:00
But all in all, CoreDNS should already be able to provide you with enough functionality to replace
parts of BIND9, Knot, NSD or PowerDNS.
2016-04-08 07:04:23 +01:00
However CoreDNS is still in the early stages of development and should **not** be used on production
servers yet. For now most documentation is in the source and some blog articles can be [found
2016-04-03 19:05:49 +01:00
here](https://miek.nl/tags/coredns/). If you do want to use CoreDNS in production, please let us
know and how we can help.
<https://caddyserver.com/> is also full of examples on how to structure a Corefile (renamed from
Caddyfile when I forked it).
2016-03-18 21:36:42 +00:00
2016-04-03 20:30:37 +01:00
## Examples
2016-03-18 21:36:42 +00:00
2016-04-03 19:05:49 +01:00
Start a simple proxy:
2016-03-18 21:36:42 +00:00
`Corefile` contains:
2016-04-03 20:30:37 +01:00
~~~ txt
2016-03-18 21:36:42 +00:00
.:1053 {
proxy . 8.8.8.8:53
}
~~~
Just start CoreDNS: `./coredns`.
And then just query on that port (1053), the query should be forwarded to 8.8.8.8 and the response
will be returned.
2016-03-20 08:45:21 +00:00
2016-04-03 20:30:37 +01:00
Serve the (NSEC) DNSSEC signed `miek.nl` on port 1053, errors and logging to stdout. Allow zone
transfers to everybody.
~~~ txt
miek.nl:1053 {
file /var/lib/bind/miek.nl.signed {
transfer to *
}
errors stdout
log stdout
}
~~~
Serve `miek.nl` on port 1053, but forward everything that does *not* match `miek.nl` to a recursive
nameserver *and* rewrite ANY queries to HINFO.
~~~ txt
.:1053 {
rewrite ANY HINFO
proxy . 8.8.8.8:53
file /var/lib/bind/miek.nl.signed miek.nl {
transfer to *
}
errors stdout
log stdout
}
~~~
All the above examples are possible with the *current* CoreDNS.
## What remains to be done
* Website?
* Logo?
* Code simplifications/refactors.
* Optimizations.
* Load testing.
* All the [issues](https://github.com/miekg/coredns/issues).
## Blog
2016-03-20 08:45:21 +00:00
<https://miek.nl/tags/coredns/>