初试CoreDNS

CoreDNS是SkyDNS的继任者,可以和很多后端(etcd,k8s等)进行通信 。CoreDNS非常的灵活,它的灵活性得益于其丰富的插件 (https://coredns.io/plugins/ ),也可以写适合自己的插件 。
CoreDNS可以通过UDP/TCP,TLS(RFC 7858)和gRPC监听DNS请求 。
CoreDNS相较于传统DNS Server有很多特点,具体可以参考官网:https://coredns.io/,
依赖CoreDNS可以很快的搭建一台DNS服务器,它的安装方法比较简单,本文主要对它的配置和若干常用插件做介绍 。
默认情况下,CoreDNS加载当前工作目录下的配置文件Corefile,如果没有这个文件则加载whoami插件,然后监听53端口来响应DNS查询服务

  • 实现一个代理,查询请求转发给后端的DNS服务器223.5.5.5,223.6.6.6
    Corefile:
.:53 {forward . 223.5.5.5:53 223.6.6.6:53log}       这里用到了两个插件,分别是forward和log 。forward插件将请求随机地传给后端的两个实际DNS服务器(注意forward后面的点号,它表示全部域名请求都传递到后端 。如果是example.com,则表示只将匹配example.com的请求传递到后端,后端服务器最多支持15个) 。log插件将查询日志打印到标准输出 。
  • 使用zone file实现“真正”的DNS服务器
    插件file可以让我们像配置Bind一样配置一台DNS服务器,操作起来毫无违和感 。
    example.com(zone file文件):
$ORIGIN example.com.; designates the start of this zone file in the namespace$TTL 1h; default expiration time of all resource records without their own TTL valueexample.com.INSOAns.example.com. username.example.com. ( 2007120710 1d 2h 4w 1h )example.com.INNSns; ns.example.com is a nameserver for example.comexample.com.INNSns.somewhere.example. ; ns.somewhere.example is a backup nameserver for example.comexample.com.INMX10 mail.example.com.; mail.example.com is the mailserver for example.com@INMX20 mail2.example.com. ; equivalent to above line, "@" represents zone origin@INMX50 mail3; equivalent to above line, but using a relative host nameexample.com.INA192.0.2.1; IPv4 address for example.comINAAAA2001:db8:10::1; IPv6 address for example.comnsINA192.0.2.2; IPv4 address for ns.example.comINAAAA2001:db8:10::2; IPv6 address for ns.example.comwwwINCNAME example.com.; www.example.com is an alias for example.comwwwtestINCNAME www; wwwtest.example.com is another alias for www.example.commailINA192.0.2.3; IPv4 address for mail.example.commail2INA192.0.2.4; IPv4 address for mail2.example.commail3INA192.0.2.5; IPv4 address for mail3.example.comCorefile:
example.com {file example.com}
  • CoreDNS还有一个比较吸引人的地方是,它可以集成Prometheus,这样就可以监控DNS请求的情况 。将以下内容添加到Corefile文件里:
.:53 {forward . 223.5.5.5:53 223.6.6.6:53prometheus 10.1.1.1:9253log}重新启动CoreDNS,访问http://10.1.1.1:9253/metrics 就可以展现出DNS请求相关的Metrics,可以对DNS的请求数,请求延时等做监控(插件prometheus官网 https://coredns.io/plugins/metrics/ )
以上就是对CoreDNS的简单介绍,还有其他比较有用的插件,值得你花时间玩味 。

【初试CoreDNS】


    推荐阅读