CoreDNS:定制 DNS 与服务发现
CoreDNS是一款用Go语言编写的DNS服务器/转发器,它将插件串联起来。每个插件执行一项(DNS)功能。
CoreDNS是云原生计算基金会毕业项目。
CoreDNS是一款快速且灵活的DNS服务器。这里的关键词是 “灵活”:借助CoreDNS,你能够通过使用插件,按照自己的需求处理DNS数据。如果某些功能并非开箱即用,你可以通过编写插件来添加该功能。
CoreDNS可以监听通过以下协议传入的DNS请求:
目前,CoreDNS能够:
- 从文件中提供区域数据;同时支持DNSSEC(仅NSEC)和DNS(file和auto插件)。
- 从主服务器检索区域数据,即充当辅助服务器(仅AXFR)(secondary插件)。
- 动态签署区域数据(dnssec插件)。
- 对响应进行负载均衡(loadbalance插件)。
- 允许区域传输,即充当主服务器(file + transfer插件)。
- 自动从磁盘加载区域文件(auto插件)。
- 缓存DNS响应(cache插件)。
- 使用etcd作为后端(取代SkyDNS)(etcd插件)。
- 使用k8s(Kubernetes)作为后端(kubernetes插件)。
- 作为代理将查询转发到其他(递归)名称服务器(forward插件)。
- (通过使用Prometheus)提供指标(prometheus插件)。
- 提供查询(log插件)和错误(errors插件)日志记录。
- 与云服务提供商集成(route53插件)。
- 支持CH类:
version.bind 及相关内容(chaos插件)。
- 支持RFC 5001 DNS名称服务器标识符(NSID)选项(nsid插件)。
- 支持性能分析(pprof插件)。
- 重写查询(查询类型、查询类和查询名称)(rewrite和template插件)。
- 阻止ANY查询(any插件)。
- 提供DNS64 IPv6转换功能(dns64插件)。
还有更多功能。每个插件都有文档说明。有关所有内置插件,请参阅coredns.io/plugins,有关所有非内置插件,请参阅coredns.io/explugins。
https://github.com/coredns/coredns
https://coredns.io/