本文主要用于介绍CoreDNS实现递归服务器的几种方式以及在生产环境中遇到的一些问题和解决方案。
在开始之前我们需要知道一些关于CoreDNS的基本知识:CoreDNS本身是没有能力作为一个递归查询的DNS服务器(Recursive DNS),但是它有着众多的插件,可以通过插件来实现对域名的递归查询和缓存等功能从而加速客户端的DNS查询性能。这里主要实现的插件有内部插件(Plugins)forward
或外部插件(External Plugins)unbound
。
CoreDNS官方对External Plugins的描述为:
Out of tree plugins for CoreDNS. A plugin listed here is not automatically endorsed by the CoreDNS team. Issues should be reported to owner(s) of the plugin.
我们可以将CoreDNS的External Plugins简单理解为第三方插件,但是其中少部分会有官方的维护支持或者是直接默认内置在官方编译好的版本中。
1、unbound
我们先来了解一下不依靠外部程序实现递归查询功能的unbound插件,unbound是一个非常优秀的