diff options
-rw-r--r-- | .travis.yml | 1 | ||||
-rw-r--r-- | README.md | 21 | ||||
-rw-r--r-- | core/caddy.go | 4 | ||||
-rw-r--r-- | core/parse/parsing.go | 9 |
4 files changed, 25 insertions, 10 deletions
diff --git a/.travis.yml b/.travis.yml index 5f16201cf..f3cabe893 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,7 @@ go: - 1.5 - 1.6 before_script: + - go get - go get github.com/coreos/etcd - go get github.com/coreos/go-etcd/etcd - go build -o $HOME/gopath/src/github.com/coreos/etcd/etcd.run github.com/coreos/etcd @@ -5,26 +5,32 @@ same model: it chains middleware. ## 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 service. + Currently CoreDNS is able to: -* Serve zone data from a file, both DNSSEC (NSEC only atm) and DNS is supported. +* Serve zone data from a file, both DNSSEC (NSEC only atm) and DNS is supported. Delegation are + *not* supported as yet. * 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 +* Use Etcd as a backend, i.e. a 92% replacement for [SkyDNS](https://github.com/skynetservices/skydns). * Serve as a proxy to forward queries to some other (recursive) nameserver. * Rewrite queries (both qtype, qclass and qname). -* Provide metrics (by using Prometheus) +* Provide metrics (by using Prometheus). * Provide Logging. +* Provide load-balancing of returned responses. +* Has support for the CH class: `version.bind` and friends. There are corner cases not implemented and a few [issues](https://github.com/miekg/coredns/issues). But all in all, CoreDNS should already be able to provide you with enough functionality to replace parts of BIND9, Knot, NSD or PowerDNS. -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 -here](https://miek.nl/tags/coredns/). If you do want to use CoreDNS in production, please let us -know and how we can help. + +However CoreDNS is still in the early stages of development. For now 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. <https://caddyserver.com/> is also full of examples on how to structure a Corefile (renamed from Caddyfile when I forked it). @@ -64,7 +70,6 @@ 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 { diff --git a/core/caddy.go b/core/caddy.go index df84e679a..5b336a77e 100644 --- a/core/caddy.go +++ b/core/caddy.go @@ -390,8 +390,8 @@ type Input interface { } // TestServer returns a test server. -// The port can be retreived with ... . The testserver itself can be stopped -// with Stop(). It just takes a normal Corefile input, but doesn't use the port. +// The ports can be retreived with server.LocalAddr(). The testserver itself can be stopped +// with Stop(). It just takes a normal Corefile as input. func TestServer(t *testing.T, corefile string) (*server.Server, error) { cdyfile := CaddyfileInput{Contents: []byte(corefile)} diff --git a/core/parse/parsing.go b/core/parse/parsing.go index 6e73bd584..712695b22 100644 --- a/core/parse/parsing.go +++ b/core/parse/parsing.go @@ -1,6 +1,7 @@ package parse import ( + "fmt" "net" "os" "path/filepath" @@ -320,6 +321,14 @@ func standardAddress(str string) (address, error) { // no error check here; return err at end of function } + if len(host) > 255 { + return address{}, fmt.Errorf("specified address is too long: %d > 255", len(host)) + } + _, d := dns.IsDomainName(host) + if !d { + return address{}, fmt.Errorf("host is not a valid domain: %s", host) + } + // see if we can set port based off scheme if port == "" { port = "53" |