| 
									
										
										
										
											2017-08-12 23:34:56 -07:00
										 |  |  |  | [](https://coredns.io) | 
					
						
							| 
									
										
										
										
											2016-03-18 21:31:55 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-09 09:58:32 -07:00
										 |  |  |  | [](https://godoc.org/github.com/coredns/coredns) | 
					
						
							|  |  |  |  | [](https://travis-ci.org/coredns/coredns) | 
					
						
							| 
									
										
										
										
											2019-08-18 11:40:59 +03:00
										 |  |  |  | [](https://fuzzit.dev) | 
					
						
							| 
									
										
										
										
											2017-08-09 09:58:32 -07:00
										 |  |  |  | [](https://codecov.io/github/coredns/coredns?branch=master) | 
					
						
							| 
									
										
										
										
											2018-01-03 23:03:29 +08:00
										 |  |  |  | [](https://hub.docker.com/r/coredns/coredns) | 
					
						
							| 
									
										
										
										
											2017-08-09 09:58:32 -07:00
										 |  |  |  | [](https://goreportcard.com/report/coredns/coredns) | 
					
						
							| 
									
										
										
										
											2017-09-12 09:38:14 -04:00
										 |  |  |  | [](https://bestpractices.coreinfrastructure.org/projects/1250) | 
					
						
							| 
									
										
										
										
											2016-09-25 08:39:20 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-01 07:52:37 +01:00
										 |  |  |  | CoreDNS is a DNS server/forwarder, written in Go, that chains [plugins](https://coredns.io/plugins). | 
					
						
							|  |  |  |  | Each plugin performs a (DNS) function. | 
					
						
							| 
									
										
										
										
											2017-03-19 09:12:18 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-25 08:17:54 -05:00
										 |  |  |  | CoreDNS is a [Cloud Native Computing Foundation](https://cncf.io) graduated project. | 
					
						
							| 
									
										
										
										
											2016-03-18 21:31:55 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-01 07:52:37 +01:00
										 |  |  |  | CoreDNS is a fast and flexible DNS server. The key word here is *flexible*: with CoreDNS you | 
					
						
							| 
									
										
										
										
											2018-02-21 09:21:04 -05:00
										 |  |  |  | are able to do what you want with your DNS data by utilizing plugins. If some functionality is not | 
					
						
							| 
									
										
										
										
											2018-02-21 12:33:22 +00:00
										 |  |  |  | provided out of the box you can add it by [writing a plugin](https://coredns.io/explugins). | 
					
						
							| 
									
										
										
										
											2016-04-24 08:11:00 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-21 15:15:17 +08:00
										 |  |  |  | CoreDNS can listen for DNS requests coming in over UDP/TCP (go'old DNS), TLS ([RFC | 
					
						
							| 
									
										
										
										
											2019-04-01 07:52:37 +01:00
										 |  |  |  | 7858](https://tools.ietf.org/html/rfc7858)), also called DoT, DNS over HTTP/2 - DoH - | 
					
						
							| 
									
										
										
										
											2019-09-09 23:22:43 -07:00
										 |  |  |  | ([RFC 8484](https://tools.ietf.org/html/rfc8484)) and [gRPC](https://grpc.io) (not a standard). | 
					
						
							| 
									
										
										
										
											2017-03-13 20:24:37 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-03 19:05:49 +01:00
										 |  |  |  | Currently CoreDNS is able to: | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-27 18:02:25 +00:00
										 |  |  |  | * Serve zone data from a file; both DNSSEC (NSEC only) and DNS are supported (*file* and *auto*). | 
					
						
							| 
									
										
										
										
											2016-10-18 07:47:18 +01:00
										 |  |  |  | * Retrieve zone data from primaries, i.e., act as a secondary server (AXFR only) (*secondary*). | 
					
						
							|  |  |  |  | * Sign zone data on-the-fly (*dnssec*). | 
					
						
							|  |  |  |  | * Load balancing of responses (*loadbalance*). | 
					
						
							|  |  |  |  | * Allow for zone transfers, i.e., act as a primary server (*file*). | 
					
						
							| 
									
										
										
										
											2017-03-29 08:24:08 +00:00
										 |  |  |  | * Automatically load zone files from disk (*auto*). | 
					
						
							| 
									
										
										
										
											2019-04-01 07:52:37 +01:00
										 |  |  |  | * Caching of DNS responses (*cache*). | 
					
						
							| 
									
										
										
										
											2019-08-08 15:17:53 +01:00
										 |  |  |  | * Use etcd as a backend (replacing [SkyDNS](https://github.com/skynetservices/skydns)) (*etcd*). | 
					
						
							| 
									
										
										
										
											2016-10-18 07:47:18 +01:00
										 |  |  |  | * Use k8s (kubernetes) as a backend (*kubernetes*). | 
					
						
							| 
									
										
										
										
											2019-01-27 18:02:25 +00:00
										 |  |  |  | * Serve as a proxy to forward queries to some other (recursive) nameserver (*forward*). | 
					
						
							| 
									
										
										
										
											2020-03-26 10:24:56 -04:00
										 |  |  |  | * Provide metrics (by using Prometheus) (*prometheus*). | 
					
						
							| 
									
										
										
										
											2018-08-14 17:55:55 +02:00
										 |  |  |  | * Provide query (*log*) and error (*errors*) logging. | 
					
						
							| 
									
										
										
										
											2019-08-08 15:17:53 +01:00
										 |  |  |  | * Integrate with cloud providers (*route53*). | 
					
						
							| 
									
										
										
										
											2016-10-18 07:47:18 +01:00
										 |  |  |  | * Support the CH class: `version.bind` and friends (*chaos*). | 
					
						
							| 
									
										
										
										
											2018-01-13 08:17:59 -08:00
										 |  |  |  | * Support the RFC 5001 DNS name server identifier (NSID) option (*nsid*). | 
					
						
							| 
									
										
										
										
											2016-10-18 07:47:18 +01:00
										 |  |  |  | * Profiling support (*pprof*). | 
					
						
							| 
									
										
										
										
											2018-02-21 12:33:22 +00:00
										 |  |  |  | * Rewrite queries (qtype, qclass and qname) (*rewrite* and *template*). | 
					
						
							| 
									
										
										
										
											2019-08-08 15:17:53 +01:00
										 |  |  |  | * Block ANY queries (*any*). | 
					
						
							| 
									
										
										
										
											2020-03-26 08:42:23 +01:00
										 |  |  |  | * Provide DNS64 IPv6 Translation (*dns64*). | 
					
						
							| 
									
										
										
										
											2016-04-20 12:46:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-21 12:33:22 +00:00
										 |  |  |  | And more. Each of the plugins is documented. See [coredns.io/plugins](https://coredns.io/plugins) | 
					
						
							| 
									
										
										
										
											2017-10-27 20:08:25 +01:00
										 |  |  |  | for all in-tree plugins, and [coredns.io/explugins](https://coredns.io/explugins) for all | 
					
						
							|  |  |  |  | out-of-tree plugins. | 
					
						
							| 
									
										
										
										
											2016-08-22 07:47:03 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-21 12:33:22 +00:00
										 |  |  |  | ## Compilation from Source
 | 
					
						
							| 
									
										
										
										
											2016-08-19 17:14:17 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-08 15:17:53 +01:00
										 |  |  |  | To compile CoreDNS, we assume you have a working Go setup. See various tutorials if you don’t have | 
					
						
							|  |  |  |  | that already configured. | 
					
						
							| 
									
										
										
										
											2016-08-19 17:14:17 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-03 23:30:15 -08:00
										 |  |  |  | First, make sure your golang version is 1.12 or higher as `go mod` support is needed. | 
					
						
							|  |  |  |  | See [here](https://github.com/golang/go/wiki/Modules) for `go mod` details. | 
					
						
							|  |  |  |  | Then, check out the project and run `make` to compile the binary: | 
					
						
							| 
									
										
										
										
											2019-08-08 15:17:53 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-21 12:33:22 +00:00
										 |  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2019-02-09 09:40:54 -05:00
										 |  |  |  | $ git clone https://github.com/coredns/coredns | 
					
						
							|  |  |  |  | $ cd coredns | 
					
						
							|  |  |  |  | $ make | 
					
						
							| 
									
										
										
										
											2018-02-21 12:33:22 +00:00
										 |  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2016-08-19 17:14:17 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-22 13:48:23 -07:00
										 |  |  |  | This should yield a `coredns` binary. | 
					
						
							| 
									
										
										
										
											2016-08-19 17:14:17 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-15 23:49:20 +01:00
										 |  |  |  | ## Compilation with Docker
 | 
					
						
							| 
									
										
										
										
											2017-09-13 16:36:20 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-08 15:17:53 +01:00
										 |  |  |  | CoreDNS requires Go to compile. However, if you already have docker installed and prefer not to | 
					
						
							|  |  |  |  | setup a Go environment, you could build CoreDNS easily: | 
					
						
							| 
									
										
										
										
											2017-09-13 16:36:20 -07:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2020-03-31 08:03:11 -07:00
										 |  |  |  | $ docker run --rm -i -t -v $PWD:/v -w /v golang:1.14 make | 
					
						
							| 
									
										
										
										
											2017-09-13 16:36:20 -07:00
										 |  |  |  | ``` | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The above command alone will have `coredns` binary generated. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-03 20:30:37 +01:00
										 |  |  |  | ## Examples
 | 
					
						
							| 
									
										
										
										
											2016-03-18 21:36:42 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-10 09:39:35 +02:00
										 |  |  |  | When starting CoreDNS without any configuration, it loads the | 
					
						
							| 
									
										
										
										
											2020-01-17 16:16:29 +01:00
										 |  |  |  | [*whoami*](https://coredns.io/plugins/whoami) and [*log*](https://coredns.io/plugins/log) plugins | 
					
						
							|  |  |  |  | and starts listening on port 53 (override with `-dns.port`), it should show the following: | 
					
						
							| 
									
										
										
										
											2016-09-18 09:32:06 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | ~~~ txt | 
					
						
							| 
									
										
										
										
											2016-10-18 07:47:18 +01:00
										 |  |  |  | .:53 | 
					
						
							| 
									
										
										
										
											2020-01-17 16:16:29 +01:00
										 |  |  |  | CoreDNS-1.6.6 | 
					
						
							|  |  |  |  | linux/amd64, go1.13.5, aa8c32 | 
					
						
							| 
									
										
										
										
											2016-09-18 09:32:06 +01:00
										 |  |  |  | ~~~ | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-24 00:36:16 +05:30
										 |  |  |  | The following could be used to query the CoreDNS server that is running now: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ~~~ txt | 
					
						
							|  |  |  |  | dig @127.0.0.1 -p 53 www.example.com | 
					
						
							|  |  |  |  | ~~~ | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-21 15:15:17 +08:00
										 |  |  |  | Any query sent to port 53 should return some information; your sending address, port and protocol | 
					
						
							| 
									
										
										
										
											2020-01-17 16:16:29 +01:00
										 |  |  |  | used. The query should also be logged to standard output. | 
					
						
							| 
									
										
										
										
											2016-09-18 09:32:06 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-24 00:36:16 +05:30
										 |  |  |  | The configuration of CoreDNS is done through a file named `Corefile`. When CoreDNS starts, it will | 
					
						
							|  |  |  |  | look for the `Corefile` from the current working directory. A `Corefile` for CoreDNS server that listens | 
					
						
							|  |  |  |  | on port `53` and enables `whoami` plugin is: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ~~~ corefile | 
					
						
							|  |  |  |  | .:53 { | 
					
						
							|  |  |  |  |     whoami | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | ~~~ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Sometimes port number 53 is occupied by system processes. In that case you can start the CoreDNS server | 
					
						
							|  |  |  |  | while modifying the Corefile as given below so that the CoreDNS server starts on port 1053. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ~~~ corefile | 
					
						
							|  |  |  |  | .:1053 { | 
					
						
							|  |  |  |  |     whoami | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | ~~~ | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-08 15:17:53 +01:00
										 |  |  |  | If you have a Corefile without a port number specified it will, by default, use port 53, but you can | 
					
						
							| 
									
										
										
										
											2020-01-17 16:16:29 +01:00
										 |  |  |  | override the port with the `-dns.port` flag: `coredns -dns.port 1053`, runs the server on port 1053. | 
					
						
							| 
									
										
										
										
											2016-10-18 07:47:18 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-24 00:36:16 +05:30
										 |  |  |  | A Corefile for a CoreDNS server that forward any queries to an upstream DNS (e.g., `8.8.8.8`) is as follows: | 
					
						
							| 
									
										
										
										
											2016-03-18 21:36:42 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-27 20:08:25 +01:00
										 |  |  |  | ~~~ corefile | 
					
						
							| 
									
										
										
										
											2016-08-22 07:47:03 +01:00
										 |  |  |  | .:53 { | 
					
						
							| 
									
										
										
										
											2018-02-21 12:33:22 +00:00
										 |  |  |  |     forward . 8.8.8.8:53 | 
					
						
							| 
									
										
										
										
											2017-09-15 23:49:20 +01:00
										 |  |  |  |     log | 
					
						
							| 
									
										
										
										
											2016-03-18 21:36:42 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | ~~~ | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-17 16:16:29 +01:00
										 |  |  |  | Start CoreDNS and then 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 which is printed on standard | 
					
						
							|  |  |  |  | output. | 
					
						
							| 
									
										
										
										
											2016-03-20 08:45:21 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-17 16:16:29 +01:00
										 |  |  |  | To serve the (NSEC) DNSSEC-signed `example.org` on port 1053, with errors and logging sent to standard | 
					
						
							| 
									
										
										
										
											2017-10-27 20:08:25 +01:00
										 |  |  |  | output. Allow zone transfers to everybody, but specifically mention 1 IP address so that CoreDNS can | 
					
						
							|  |  |  |  | send notifies to it. | 
					
						
							| 
									
										
										
										
											2016-04-03 20:30:37 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | ~~~ txt | 
					
						
							| 
									
										
										
										
											2016-08-22 07:47:03 +01:00
										 |  |  |  | example.org:1053 { | 
					
						
							|  |  |  |  |     file /var/lib/coredns/example.org.signed { | 
					
						
							| 
									
										
										
										
											2016-04-03 20:30:37 +01:00
										 |  |  |  |         transfer to * | 
					
						
							| 
									
										
										
										
											2016-08-22 07:47:03 +01:00
										 |  |  |  |         transfer to 2001:500:8f::53 | 
					
						
							| 
									
										
										
										
											2016-04-03 20:30:37 +01:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2017-09-15 23:49:20 +01:00
										 |  |  |  |     errors | 
					
						
							|  |  |  |  |     log | 
					
						
							| 
									
										
										
										
											2016-04-03 20:30:37 +01:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | ~~~ | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-08 15:17:53 +01:00
										 |  |  |  | Serve `example.org` on port 1053, but forward everything that does *not* match `example.org` to a | 
					
						
							|  |  |  |  | recursive nameserver *and* rewrite ANY queries to HINFO. | 
					
						
							| 
									
										
										
										
											2016-04-03 20:30:37 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | ~~~ txt | 
					
						
							| 
									
										
										
										
											2019-09-19 14:17:53 +01:00
										 |  |  |  | example.org:1053 { | 
					
						
							|  |  |  |  |     file /var/lib/coredns/example.org.signed { | 
					
						
							| 
									
										
										
										
											2016-04-03 20:30:37 +01:00
										 |  |  |  |         transfer to * | 
					
						
							| 
									
										
										
										
											2016-08-22 07:47:03 +01:00
										 |  |  |  |         transfer to 2001:500:8f::53 | 
					
						
							| 
									
										
										
										
											2016-04-03 20:30:37 +01:00
										 |  |  |  |     } | 
					
						
							| 
									
										
										
										
											2017-09-15 23:49:20 +01:00
										 |  |  |  |     errors | 
					
						
							|  |  |  |  |     log | 
					
						
							| 
									
										
										
										
											2017-01-22 08:14:48 +00:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2020-01-17 16:16:29 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-19 14:17:53 +01:00
										 |  |  |  | . { | 
					
						
							|  |  |  |  |     any | 
					
						
							|  |  |  |  |     forward . 8.8.8.8:53 | 
					
						
							|  |  |  |  |     errors | 
					
						
							|  |  |  |  |     log | 
					
						
							|  |  |  |  | } | 
					
						
							| 
									
										
										
										
											2017-01-22 08:14:48 +00:00
										 |  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2016-08-22 07:47:03 +01:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-07 13:24:09 -07:00
										 |  |  |  | IP addresses are also allowed. They are automatically converted to reverse zones: | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-10 09:39:35 +02:00
										 |  |  |  | ~~~ corefile | 
					
						
							| 
									
										
										
										
											2017-08-07 13:24:09 -07:00
										 |  |  |  | 10.0.0.0/24 { | 
					
						
							| 
									
										
										
										
											2017-10-10 09:39:35 +02:00
										 |  |  |  |     whoami | 
					
						
							| 
									
										
										
										
											2017-08-07 13:24:09 -07:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | ~~~ | 
					
						
							| 
									
										
										
										
											2017-09-15 23:49:20 +01:00
										 |  |  |  | Means you are authoritative for `0.0.10.in-addr.arpa.`. | 
					
						
							| 
									
										
										
										
											2017-08-07 13:24:09 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-24 10:16:03 +01:00
										 |  |  |  | This also works for IPv6 addresses. If for some reason you want to serve a zone named `10.0.0.0/24` | 
					
						
							|  |  |  |  | add the closing dot: `10.0.0.0/24.` as this also stops the conversion. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-21 12:33:22 +00:00
										 |  |  |  | This even works for CIDR (See RFC 1518 and 1519) addressing, i.e. `10.0.0.0/25`, CoreDNS will then | 
					
						
							| 
									
										
										
										
											2017-10-24 10:16:03 +01:00
										 |  |  |  | check if the `in-addr` request falls in the correct range. | 
					
						
							| 
									
										
										
										
											2017-08-07 13:24:09 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-08 15:17:53 +01:00
										 |  |  |  | Listening on TLS (DoT) and for gRPC? Use: | 
					
						
							| 
									
										
										
										
											2017-03-13 20:24:37 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-10 09:39:35 +02:00
										 |  |  |  | ~~~ corefile | 
					
						
							| 
									
										
										
										
											2017-03-13 20:24:37 +00:00
										 |  |  |  | tls://example.org grpc://example.org { | 
					
						
							| 
									
										
										
										
											2017-10-10 09:39:35 +02:00
										 |  |  |  |     whoami | 
					
						
							| 
									
										
										
										
											2017-03-13 20:24:37 +00:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | ~~~ | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-08 15:17:53 +01:00
										 |  |  |  | And for DNS over HTTP/2 (DoH) use: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ~~~ corefile | 
					
						
							|  |  |  |  | https://example.org { | 
					
						
							|  |  |  |  |     whoami | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | ~~~ | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-13 20:24:37 +00:00
										 |  |  |  | Specifying ports works in the same way: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ~~~ txt | 
					
						
							|  |  |  |  | grpc://example.org:1443 { | 
					
						
							|  |  |  |  |     # ... | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | ~~~ | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | When no transport protocol is specified the default `dns://` is assumed. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-27 16:24:00 +01:00
										 |  |  |  | ## Community
 | 
					
						
							| 
									
										
										
										
											2016-08-19 17:14:17 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-31 19:28:33 +01:00
										 |  |  |  | We're most active on Github (and Slack): | 
					
						
							| 
									
										
										
										
											2018-02-21 12:33:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | - Github: <https://github.com/coredns/coredns> | 
					
						
							| 
									
										
										
										
											2018-08-31 19:28:33 +01:00
										 |  |  |  | - Slack: #coredns on <https://slack.cncf.io> | 
					
						
							| 
									
										
										
										
											2018-02-21 12:33:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | More resources can be found: | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-29 08:24:08 +00:00
										 |  |  |  | - Website: <https://coredns.io> | 
					
						
							| 
									
										
										
										
											2017-04-27 16:24:00 +01:00
										 |  |  |  | - Blog: <https://blog.coredns.io> | 
					
						
							| 
									
										
										
										
											2017-03-29 08:24:08 +00:00
										 |  |  |  | - Twitter: [@corednsio](https://twitter.com/corednsio) | 
					
						
							| 
									
										
										
										
											2018-08-31 19:28:33 +01:00
										 |  |  |  | - Mailing list/group: <coredns-discuss@googlegroups.com> (not very active) | 
					
						
							| 
									
										
										
										
											2016-05-03 09:00:25 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-25 13:20:23 -07:00
										 |  |  |  | ## Contribution guidelines
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-08 15:17:53 +01:00
										 |  |  |  | If you want to contribute to CoreDNS, be sure to review the [contribution | 
					
						
							|  |  |  |  | guidelines](CONTRIBUTING.md). | 
					
						
							| 
									
										
										
										
											2019-07-25 13:20:23 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-24 11:45:47 -04:00
										 |  |  |  | ## Deployment
 | 
					
						
							| 
									
										
										
										
											2016-05-03 09:00:25 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-11 09:56:37 +01:00
										 |  |  |  | Examples for deployment via systemd and other use cases can be found in the [deployment | 
					
						
							|  |  |  |  | repository](https://github.com/coredns/deployment). | 
					
						
							| 
									
										
										
										
											2018-02-27 09:05:40 -08:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-27 18:02:25 +00:00
										 |  |  |  | ## Deprecation Policy
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | When there is a backwards incompatible change in CoreDNS the following process is followed: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | *  Release x.y.z: Announce that in the next release we will make backward incompatible changes. | 
					
						
							|  |  |  |  | *  Release x.y+1.0: Increase the minor version and set the patch version to 0. Make the changes, | 
					
						
							|  |  |  |  |    but allow the old configuration to be parsed. I.e. CoreDNS will start from an unchanged | 
					
						
							|  |  |  |  |    Corefile. | 
					
						
							|  |  |  |  | *  Release x.y+1.1: Increase the patch version to 1. Remove the lenient parsing, so CoreDNS will | 
					
						
							|  |  |  |  |    not start if those features are still used. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | E.g. 1.3.1 announce a change. 1.4.0 a new release with the change but backward compatible config. | 
					
						
							|  |  |  |  | And finally 1.4.1 that removes the config workarounds. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-27 09:05:40 -08:00
										 |  |  |  | ## Security
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-15 11:16:18 -06:00
										 |  |  |  | ### Security Audit
 | 
					
						
							| 
									
										
										
										
											2019-08-08 15:17:53 +01:00
										 |  |  |  | A third party security audit was performed by Cure53, you can see the full report | 
					
						
							|  |  |  |  | [here](https://coredns.io/assets/DNS-01-report.pdf). | 
					
						
							| 
									
										
										
										
											2019-01-15 11:16:18 -06:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | ### Reporting security vulnerabilities
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-11 09:56:37 +01:00
										 |  |  |  | If you find a security vulnerability or any security related issues, please DO NOT file a public | 
					
						
							|  |  |  |  | issue, instead send your report privately to `security@coredns.io`. Security reports are greatly | 
					
						
							|  |  |  |  | appreciated and we will publicly thank you for it. | 
					
						
							| 
									
										
										
										
											2018-10-21 13:25:22 -04:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-08 15:17:53 +01:00
										 |  |  |  | Please consult [security vulnerability disclosures and security fix and release process | 
					
						
							| 
									
										
										
										
											2019-08-26 12:27:18 -04:00
										 |  |  |  | document](https://github.com/coredns/coredns/blob/master/SECURITY.md) |