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)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[](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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-08-03 07:33:54 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## Feedback wanted ...
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CoreDNS is now part of [Kubernetes ](http://kubernetes.io ), [delivering the DNS and Discovery Service for the cluster ](https://kubernetes.io/blog/2018/07/10/coredns-ga-for-kubernetes-cluster-dns/ ).
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								If you are currently using CoreDNS inside a Kubernetes cluster, please, [take 5 minutes to provide us some feedback by filling this survey ](https://www.surveymonkey.com/r/SKZQSLK )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Thank you, we appreciate your collaboration here.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## CoreDNS
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-10-27 20:08:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CoreDNS (written in Go) chains [plugins ](https://coredns.io/plugins ). Each plugin performs a DNS
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function.
							 
						 
					
						
							
								
									
										
										
										
											2017-03-19 09:12:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
											
												Move to incubating project (#1565)
We are in incubating stage now:
https://lists.cncf.io/g/cncf-toc/topic/result_coredns_moving_to/12935200?p=,,,20,0,0,0::recentpostdate%2Fsticky,,,20,2,0,12935200
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
											 
										 
										
											2018-02-26 10:01:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CoreDNS is a [Cloud Native Computing Foundation ](https://cncf.io ) incubating level project.
							 
						 
					
						
							
								
									
										
										
										
											2016-03-18 21:31:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 12:33:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CoreDNS is a fast and flexible DNS server. The keyword 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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-19 09:12:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CoreDNS can listen for DNS request coming in over UDP/TCP (go'old DNS), TLS ([RFC
							 
						 
					
						
							
								
									
										
										
										
											2017-10-27 20:08:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								7858](https://tools.ietf.org/html/rfc7858)) 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:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-18 07:47:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  Serve zone data from a file; both DNSSEC (NSEC only) and DNS are supported (*file*). 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  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*). 
						 
					
						
							
								
									
										
										
										
											2016-10-18 07:47:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  Caching (*cache*). 
						 
					
						
							
								
									
										
										
										
											2018-02-21 12:33:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  Use etcd as a backend (replace [SkyDNS ](https://github.com/skynetservices/skydns )) (*etcd*). 
						 
					
						
							
								
									
										
										
										
											2016-10-18 07:47:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  Use k8s (kubernetes) as a backend (*kubernetes*). 
						 
					
						
							
								
									
										
										
										
											2018-02-21 12:33:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  Serve as a proxy to forward queries to some other (recursive) nameserver (*proxy*, and * forward * ). 
						 
					
						
							
								
									
										
										
										
											2016-10-18 07:47:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  Provide metrics (by using Prometheus) (*metrics*). 
						 
					
						
							
								
									
										
										
										
											2018-08-14 17:55:55 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  Provide query (*log*) and error (*errors*) logging. 
						 
					
						
							
								
									
										
										
										
											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 * ). 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-10-25 23:47:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Check out the project and do dependency resolution with:
							 
						 
					
						
							
								
									
										
										
										
											2016-08-19 17:14:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 12:33:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								~~~
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								% go get github.com/coredns/coredns
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								~~~
							 
						 
					
						
							
								
									
										
										
										
											2017-10-25 13:27:51 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 12:33:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Some of the dependencies require Go version 1.9 or later.
							 
						 
					
						
							
								
									
										
										
										
											2017-10-25 23:47:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 12:33:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								We vendor most (not all!) packages. Building from scratch is easiest, by just using `make` :
							 
						 
					
						
							
								
									
										
										
										
											2016-08-19 17:14:17 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 12:33:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								~~~
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								% make
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								~~~
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-15 23:49:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								CoreDNS requires Go to compile. However, if you already have docker installed and prefer not to setup
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 12:33:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								a Go environment, you could build CoreDNS easily:
							 
						 
					
						
							
								
									
										
										
										
											2017-09-13 16:36:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								$ docker run --rm -i -t -v $PWD:/go/src/github.com/coredns/coredns \
							 
						 
					
						
							
								
									
										
										
										
											2018-08-31 11:39:55 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      -w /go/src/github.com/coredns/coredns golang:1.11 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
							 
						 
					
						
							
								
									
										
										
										
											2017-10-27 20:08:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[*whoami* ](https://coredns.io/plugins/whoami ) plugin 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
							 
						 
					
						
							
								
									
										
										
										
											2016-10-07 10:14:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								2016/09/18 09:20:50 [INFO] CoreDNS-001
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CoreDNS-001
							 
						 
					
						
							
								
									
										
										
										
											2016-09-18 09:32:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								~~~
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-18 07:47:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Any query send to port 53 should return some information; your sending address, port and protocol
							 
						 
					
						
							
								
									
										
										
										
											2016-09-18 09:32:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								used.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-18 07:47:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								If you have a Corefile without a port number specified it will, by default, use port 53, but you
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								can override the port with the `-dns.port`  flag:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`./coredns -dns.port 1053` , runs the server on port 1053. 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 07:47:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Start a simple proxy, you'll need to be root to start listening on port 53.
							 
						 
					
						
							
								
									
										
										
										
											2016-03-18 21:36:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								`Corefile`  contains: 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								~~~
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-09-15 23:49:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Just start CoreDNS: `./coredns` . Then just query on that port (53). The query should be forwarded to
							 
						 
					
						
							
								
									
										
										
										
											2017-10-27 20:08:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-10-27 20:08:25 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Serve the (NSEC) DNSSEC-signed `example.org`  on port 1053, with errors and logging sent to standard
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								~~~
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 07:47:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Serve `example.org`  on port 1053, but forward everything that does * not *  match `example.org`  to a recursive
							 
						 
					
						
							
								
									
										
										
										
											2016-04-03 20:30:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								nameserver * and *  rewrite ANY queries to HINFO.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								~~~ txt
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								.:1053 {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    rewrite ANY HINFO
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 12:33:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    forward . 8.8.8.8:53
							 
						 
					
						
							
								
									
										
										
										
											2016-04-03 20:30:37 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-22 07:47:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    file /var/lib/coredns/example.org.signed example.org {
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								~~~
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-13 20:24:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Listening on TLS and for gRPC? Use:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								~~~
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								## Security
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											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.