diff --git a/README.md b/README.md index f21dbcb59..e7d62735c 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,47 @@ # 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. In fact to similar that CoreDNS is now a server type plugin for -CAddy, i.e. you'll need Caddy to compile CoreDNS. +CoreDNS is a DNS server that started as a fork of [Caddy](https://github.com/mholt/caddy/). It has the +same model: it chains middleware. In fact it's so similar that CoreDNS is now a server type plugin for +Caddy, i.e., you'll need Caddy to compile CoreDNS. -CoreDNS is the successor of [SkyDNS](https://github.com/skynetservices/skydns). SkyDNS is a thin +CoreDNS is the successor to [SkyDNS](https://github.com/skynetservices/skydns). SkyDNS is a thin layer that exposes services in etcd in the DNS. CoreDNS builds on this idea and is a generic DNS server that can talk to multiple backends (etcd, consul, kubernetes, etc.). -CoreDNS aims to be a fast and flexible DNS server. The keyword here is *flexible*, with CoreDNS you -are able to do what you want with your DNS data. And if not: write a middleware! +CoreDNS aims to be a fast and flexible DNS server. The keyword here is *flexible*: with CoreDNS you +are able to do what you want with your DNS data. And if not: write some middleware! Currently CoreDNS is able to: -* Serve zone data from a file, both DNSSEC (NSEC only) and DNS is supported (middleware/file). -* Retrieve zone data from primaries, i.e. act as a secondary server (AXFR only) (middleware/secondary). +* Serve zone data from a file; both DNSSEC (NSEC only) and DNS are supported (middleware/file). +* Retrieve zone data from primaries, i.e., act as a secondary server (AXFR only) (middleware/secondary). * Sign zone data on-the-fly (middleware/dnssec). -* Loadbalancing of responses (middleware/loadbalance). -* Allow for zone transfers, i.e. act as a primary server (middleware/file). +* Load balancing of responses (middleware/loadbalance). +* Allow for zone transfers, i.e., act as a primary server (middleware/file). * Caching (middleware/cache). * Health checking (middleware/health). -* Use etcd as a backend, i.e. a 101.5% replacement for +* Use etcd as a backend, i.e., a 101.5% replacement for [SkyDNS](https://github.com/skynetservices/skydns) (middleware/etcd). * Use k8s (kubernetes) as a backend (middleware/kubernetes). * Serve as a proxy to forward queries to some other (recursive) nameserver (middleware/proxy). -* Rewrite queries (both qtype, qclass and qname) (middleware/rewrite). +* Rewrite queries (qtype, qclass and qname) (middleware/rewrite). * Provide metrics (by using Prometheus) (middleware/metrics). * Provide Logging (middleware/log). -* Has support for the CH class: `version.bind` and friends (middleware/chaos). +* Support the CH class: `version.bind` and friends (middleware/chaos). * Profiling support (middleware/pprof). -Each of the middlewares has a README.md of their own. +Each of the middlewares has a README.md of its own. ## Status I'm using CoreDNS is my primary, authoritative, nameserver for my domains (`miek.nl`, `atoom.net` -and a few others). CoreDNS should be stable enough to provide you with a good DNS(SEC) service. +and a few others). CoreDNS should be stable enough to provide you with good DNS(SEC) service. There are still few [issues](https://github.com/miekg/coredns/issues), and work is ongoing on making -things fast and reduce the memory usage. +things fast and to reduce the memory usage. All in all, CoreDNS should be able to provide you with enough functionality to replace parts of -BIND9, Knot, NSD or PowerDNS and SkyDNS. +BIND 9, Knot, NSD or PowerDNS and SkyDNS. Most documentation is in the source and some blog articles can be [found here](https://miek.nl/tags/coredns/). If you do want to use CoreDNS in production, please let us know and how we can help. @@ -52,7 +52,7 @@ Caddyfile when I forked it). ## Compilation CoreDNS (as a servertype plugin for Caddy) has a dependency on Caddy - this is *almost* like -the normal Go dependencies, but with a small twist, caddy (the source) need to know that CoreDNS +the normal Go dependencies, but with a small twist: caddy (the source) need to know that CoreDNS exists and for this we need to add 1 line `_ "github.com/miekg/coredns/core"` to file in caddy. You have the source of CoreDNS, this should preferably be downloaded under your `$GOPATH`. Get all @@ -60,13 +60,13 @@ dependencies: go get ./... -Then, execute `go generate`, this will patch Caddy to add CoreDNS (and remove the HTTP server +Then, execute `go generate`. This will patch Caddy to add CoreDNS (and remove the HTTP server plugin), and then `go build` as you would normally do: go generate go build -Should yield a `coredns` binary. +This should yield a `coredns` binary. ## Examples @@ -82,10 +82,10 @@ Start a simple proxy, you'll need to be root to start listening on port 53. ~~~ Just start CoreDNS: `./coredns`. -And then just query on that port (53), the query should be forwarded to 8.8.8.8 and the response +And then just query on that port (53). The query should be forwarded to 8.8.8.8 and the response will be returned. Each query should also show up in the log. -Serve the (NSEC) DNSSEC signed `example.org` on port 1053, errors and logging to stdout. Allow zone +Serve the (NSEC) DNSSEC-signed `example.org` on port 1053, with errors and logging sent to stdout. Allow zone transfers to everybody, but specically mention 1 IP address so that CoreDNS can send notifies to it. ~~~ txt