{"id":37133310,"url":"https://github.com/tehmaze/coredns","last_synced_at":"2026-01-14T15:33:52.807Z","repository":{"id":57606550,"uuid":"103539862","full_name":"tehmaze/coredns","owner":"tehmaze","description":"CoreDNS is a DNS server that chains middleware","archived":false,"fork":true,"pushed_at":"2017-09-14T18:38:42.000Z","size":27267,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-20T01:57:44.978Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://coredns.io","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"coredns/coredns","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tehmaze.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-14T14:05:29.000Z","updated_at":"2018-05-14T21:18:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tehmaze/coredns","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/tehmaze/coredns","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tehmaze%2Fcoredns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tehmaze%2Fcoredns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tehmaze%2Fcoredns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tehmaze%2Fcoredns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tehmaze","download_url":"https://codeload.github.com/tehmaze/coredns/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tehmaze%2Fcoredns/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28424374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T13:30:50.153Z","status":"ssl_error","status_checked_at":"2026-01-14T13:29:08.907Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-14T15:33:52.059Z","updated_at":"2026-01-14T15:33:52.793Z","avatar_url":"https://github.com/tehmaze.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CoreDNS](https://coredns.io/images/CoreDNS_Colour_Horizontal.png)](https://coredns.io)\n\n[![Documentation](https://img.shields.io/badge/godoc-reference-blue.svg)](https://godoc.org/github.com/coredns/coredns)\n[![Build Status](https://img.shields.io/travis/coredns/coredns/master.svg?label=build)](https://travis-ci.org/coredns/coredns)\n[![Code Coverage](https://img.shields.io/codecov/c/github/coredns/coredns/master.svg)](https://codecov.io/github/coredns/coredns?branch=master)\n[![Go Report Card](https://goreportcard.com/badge/github.com/coredns/coredns)](https://goreportcard.com/report/coredns/coredns)\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fcoredns%2Fcoredns.svg?type=shield)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fcoredns%2Fcoredns?ref=badge_shield)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/1250/badge)](https://bestpractices.coreinfrastructure.org/projects/1250)\n\nCoreDNS is a DNS server that started as a fork of [Caddy](https://github.com/mholt/caddy/). It has\nthe same model: it chains plugins. In fact it's so similar that CoreDNS is now a server type\nplugin for Caddy.\n\nCoreDNS is also a [Cloud Native Computing Foundation](https://cncf.io) inception level project.\n\nCoreDNS is the successor to [SkyDNS](https://github.com/skynetservices/skydns). SkyDNS is a thin\nlayer that exposes services in etcd in the DNS. CoreDNS builds on this idea and is a generic DNS\nserver that can talk to multiple backends (etcd, kubernetes, etc.).\n\nCoreDNS aims to be a fast and flexible DNS server. The keyword here is *flexible*: with CoreDNS you\nare able to do what you want with your DNS data. And if not: write some plugin!\n\nCoreDNS can listen for DNS request coming in over UDP/TCP (go'old DNS), TLS ([RFC\n7858](https://tools.ietf.org/html/rfc7858)) and gRPC (not a standard).\n\nCurrently CoreDNS is able to:\n\n* Serve zone data from a file; both DNSSEC (NSEC only) and DNS are supported (*file*).\n* Retrieve zone data from primaries, i.e., act as a secondary server (AXFR only) (*secondary*).\n* Sign zone data on-the-fly (*dnssec*).\n* Load balancing of responses (*loadbalance*).\n* Allow for zone transfers, i.e., act as a primary server (*file*).\n* Automatically load zone files from disk (*auto*).\n* Caching (*cache*).\n* Health checking endpoint (*health*).\n* Use etcd as a backend, i.e., a 101.5% replacement for\n  [SkyDNS](https://github.com/skynetservices/skydns) (*etcd*).\n* Use k8s (kubernetes) as a backend (*kubernetes*).\n* Serve as a proxy to forward queries to some other (recursive) nameserver (*proxy*).\n* Provide metrics (by using Prometheus) (*metrics*).\n* Provide query (*log*) and error (*error*) logging.\n* Support the CH class: `version.bind` and friends (*chaos*).\n* Profiling support (*pprof*).\n* Rewrite queries (qtype, qclass and qname) (*rewrite*).\n* Echo back the IP address, transport and port number used (*whoami*).\n\nEach of the plugins has a README.md of its own.\n\n## Status\n\nCoreDNS can be used as an authoritative nameserver for your domains, and should be stable enough to\nprovide you with good DNS(SEC) service.\n\nThere are still a few known [issues](https://github.com/coredns/coredns/issues), and work is ongoing\non making things fast and to reduce the memory usage.\n\nAll in all, CoreDNS should be able to provide you with enough functionality to replace parts of BIND\n9, Knot, NSD or PowerDNS and SkyDNS. Most documentation is in the source and some blog articles can\nbe [found here](https://blog.coredns.io). If you do want to use CoreDNS in production, please\nlet us know and how we can help.\n\n\u003chttps://caddyserver.com/\u003e is also full of examples on how to structure a Corefile (renamed from\nCaddyfile when forked).\n\n## Compilation\n\nCoreDNS (as a servertype plugin for Caddy) has a dependency on Caddy, but this is not different than\nany other Go dependency. If you have the source of CoreDNS checked out in the appropriate place in\nyour `GOPATH`, get all dependencies:\n\n    go get ./...\n\n(You can do the checkout and dependency resolution as a single step with: `go get github.com/coredns/coredns`.)\n\nAnd then `go build` as you would normally do:\n\n    go build\n\nThis should yield a `coredns` binary.\n\n## Compilation with docker\n\nCoreDNS requires golang to compile. However, if you already have docker installed and prefer not to setup\ngolang environment, you could build coredns easily:\n\n```\n$ docker run --rm -i -t -v $PWD:/go/src/github.com/coredns/coredns \\\n      -w /go/src/github.com/coredns/coredns golang:1.9 make\n```\n\nThe above command alone will have `coredns` binary generated.\n\n## Examples\n\nWhen starting CoreDNS without any configuration, it loads the `whoami` plugin and starts\nlistening on port 53 (override with `-dns.port`), it should show the following:\n\n~~~ txt\n.:53\n2016/09/18 09:20:50 [INFO] CoreDNS-001\nCoreDNS-001\n~~~\n\nAny query send to port 53 should return some information; your sending address, port and protocol\nused.\n\nIf you have a Corefile without a port number specified it will, by default, use port 53, but you\ncan override the port with the `-dns.port` flag:\n\n`./coredns -dns.port 1053`, runs the server on port 1053.\n\nStart a simple proxy, you'll need to be root to start listening on port 53.\n\n`Corefile` contains:\n\n~~~ txt\n.:53 {\n    proxy . 8.8.8.8:53\n    log stdout\n}\n~~~\n\nJust start CoreDNS: `./coredns`.\nAnd then just query on that port (53). The query should be forwarded to 8.8.8.8 and the response\nwill be returned. Each query should also show up in the log.\n\nServe the (NSEC) DNSSEC-signed `example.org` on port 1053, with errors and logging sent to stdout.\nAllow zone transfers to everybody, but specifically mention 1 IP address so that CoreDNS can send\nnotifies to it.\n\n~~~ txt\nexample.org:1053 {\n    file /var/lib/coredns/example.org.signed {\n        transfer to *\n        transfer to 2001:500:8f::53\n    }\n    errors stdout\n    log stdout\n}\n~~~\n\nServe `example.org` on port 1053, but forward everything that does *not* match `example.org` to a recursive\nnameserver *and* rewrite ANY queries to HINFO.\n\n~~~ txt\n.:1053 {\n    rewrite ANY HINFO\n    proxy . 8.8.8.8:53\n\n    file /var/lib/coredns/example.org.signed example.org {\n        transfer to *\n        transfer to 2001:500:8f::53\n    }\n    errors stdout\n    log stdout\n}\n~~~\n\n### Zone Specification\n\nThe following Corefile fragment is legal, but does not explicitly define a zone to listen on:\n\n~~~ txt\n{\n   # ...\n}\n~~~\n\nThis defaults to `.:53` (or whatever `-dns.port` is).\n\nThe next one only defines a port:\n~~~ txt\n:123 {\n    # ...\n}\n~~~\nThis defaults to the root zone `.`, but can't be overruled with the `-dns.port` flag.\n\nJust specifying a zone, default to listening on port 53 (can still be overridden with `-dns.port`):\n\n~~~ txt\nexample.org {\n    # ...\n}\n~~~\n\nIP addresses are also allowed. They are automatically converted to reverse zones:\n\n~~~ txt\n10.0.0.0/24 {\n    # ...\n}\n~~~\nMeans you are authoritative for `0.0.10.in-addr.arpa.`. \n\nThe netmask must be dividable by 8, if it is not the reverse conversion is not done. This also works\nfor IPv6 addresses. If for some reason you want to serve a zone named `10.0.0.0/24` add the closing\ndot: `10.0.0.0/24.` as this also stops the conversion.\n\nListening on TLS and for gRPC? Use:\n\n~~~ txt\ntls://example.org grpc://example.org {\n    # ...\n}\n~~~\n\nSpecifying ports works in the same way:\n\n~~~ txt\ngrpc://example.org:1443 {\n    # ...\n}\n~~~\n\nWhen no transport protocol is specified the default `dns://` is assumed.\n\n## Community\n\n- Website: \u003chttps://coredns.io\u003e\n- Blog: \u003chttps://blog.coredns.io\u003e\n- Twitter: [@corednsio](https://twitter.com/corednsio)\n- Github: \u003chttps://github.com/coredns/coredns\u003e\n- Mailing list/group: \u003ccoredns-discuss@googlegroups.com\u003e\n- Slack: #coredns on \u003chttps://slack.cncf.io\u003e\n\n## Deployment\n\nExamples for deployment via systemd and other use cases can be found in the\n[deployment repository](https://github.com/coredns/deployment).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftehmaze%2Fcoredns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftehmaze%2Fcoredns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftehmaze%2Fcoredns/lists"}