CoreDNS 手册(四)__配置

配置

在CoreDNS有及部分可以配置。

首先,确定哪些插件被编译进CoreDNS。我们提供的编译后的二进制可执行包 (binaries)已经包含了所有的插件,列在plugin.cfg。增加和删除都很 easy,但是需要对CoreDNS重新编译。

大多数用户使用文件 Corefile 来配置 CoreDNS。当 CoreDNS 启动的时候,如果 -conf flag 没有被配置,就会在当前目录查找 Corefile 文件。
文件包含了一个或者多个服务器块 (Server Blocks)。每个服务器块列出了一个或多个插件。那些插件也可以在后面使用指令配置。

在Corefile 文件中,插件的顺序不决定插件链的顺序。 插件执行的顺序,配置在文件plugin.cfg中。

Corefile 文件的备注以 # 开头。行的其他部分会被识别为备注。


环境变量

CoreDNS 在配置中支持环境变量。
环境变量可以被使用在任何地方。语法是 {$ENV_VAR} ( Windows-类型的语法{%ENV_VAR%} 也是支持的)。CoreDNS 会在解析Corefile的时候替换这些变量内容。


导入其他文件

参考 import plugin。
这个插件有些特殊,可以被用在Corefile的任何地方。

可复用的 Snippets

一个很特殊的可导入文件是 snippet。一个 snippet 通过命名一个块(block)的特殊语法来定义。名字需要被放到圆括号内: (name)。然后,它就可以随着导入插件放置到配置文件的任何地方了。

# define a snippet
(snip) {
    prometheus
    log
    errors
}

. {
    whoami
    import snip
}

服务器块 Server Blocks

每个服务器块(Server Block)以server应该伺候的zones开头。在zone名字或者zone列表名(以空格分隔)之后,一个服务器块以大括号作为开头和结束。
如下的服务器块定义了一个 server,负责root zone: .下所有的zones; 基本上,这个 server 应该处理所有的查询:

. {
    # Plugins defined here.
}

服务器块(Server blocks)还可以指定监听端口。默认端口是 53 (DNS 服务标准端口)。指定端口,以冒号作为分隔符在zone后列出端口号。
如下的 Corefile 指示 CoreDNS 创建一个 Server , 监控端口 1053:

.:1053 {
    # Plugins defined here.
}

注意: 如果你明确的定义了监听端口,你就不可以使用 -dns.port参数覆盖了。

给服务器块定义一个zone,但是这个zone已经被配置到一台服务器上,并且已经运行了,运行在同一个端口。Corefile 会在启动的时候报错:

.:1054 {

}

.:1054 {

}

变更第二个端口为 1055 可以让这两个服务器块变成两个不同的服务器。

规定协议

当前 CoreDNS 接受4种协议: DNS, DNS over TLS (DoT), DNS over HTTP/2 (DoH)
and DNS over gRPC。可以通过在服务器配置文件,在zone 前加个前缀来指定服务器接收哪种协议。

  • dns:// for plain DNS (the default if no scheme is specified).
  • tls:// for DNS over TLS, see RFC 7858.
  • https:// for DNS over HTTPS, see RFC 8484.
  • grpc:// for DNS over gRPC.

插件

每个服务器块都定义了一系列插件。最简单的方式,就是在服务器块内添加插件的名字:

. {
    chaos
}

插件 chaos 让 CoreDNS 以 CH class 应答查询 - 在确认服务器的时候很有用。通过如上配置,CoreDNS 会在收到请求后,应答它的版本:

$ dig @localhost -p 1053 CH version.bind TXT
...
;; ANSWER SECTION:
version.bind.       0   CH  TXT "CoreDNS-1.0.5"
...

大多数插件允许以指令提供更多配置。比如 chaos插件,我们可以在语法内定义 VERSIONAUTHORS

Syntax

  chaos [VERSION] [AUTHORS...]
  • VERSION 返回版本。 默认 CoreDNS-<version>,如果没设置的话。
  • AUTHORS 返回作者。默认定义在 OWNER 文件内。

这样,这就给 chaos 插件增加了指令,让 CoreDNS 以CoreDNS-001的格式答复版本:

. {
    chaos CoreDNS-001 info@coredns.io
}

其他插件有更多配置,使用插件块(Plugin Block),跟服务器块一样,以大括号作为开头和结束:

. {
    plugin {
       # Plugin Block
    }
}

我们将其全部融合起来,就生成下面的 Corefile,设置 4 zones 运行与2个不同的端口:

coredns.io:5300 {
    file db.coredns.io
}

example.io:53 {
    log
    errors
    file db.example.io
}

example.net:53 {
    file db.example.net
}

.:53 {
    kubernetes
    forward . 8.8.8.8
    log
    errors
    cache
}

当CoreDNS解析配置文件的时候,就会是如下的 Setups:


CoreDNS-Corefile.png

扩展插件

扩展插件就是CoreDNS默认没有包含的插件。你可以开启扩展插件,但是你得自己编译CoreDNS。


可能的报错

插件 health 的文档声明 "This plugin only needs to be enabled once",这可能导致你认为如下是一个符合规定的Corefile:

health

. {
    whoami
}

但是,这不能工作,并且导致一些 简短的报错:

"Corefile:3 - Error during parsing: Unknown directive '.'".

为什么呢? health 被看作一个 zone (and the start of a Server Block)。解析希望看到插件名字 (cache, etcd, etc.),但是下一个标识是 .,这不是插件。
正确的 Corefile 如下:

. {
    whoami
    health
}

插件 health 文档里面的那段话,意思是一旦 health 被定义,它对整个CoreDNS 进程来说就是全局的,哪怕你是在一个server中定义它。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 1. 概述 在网络环境中一般用户只需要在浏览器中输入url如www.sunny.com就可以到对应服务器获取相应的...
    ghbsunny阅读 2,826评论 0 7
  • 参考文献:https://mp.weixin.qq.com/s/vU6jMvNo3loXLltXF6cWVw 1、...
    码二哥阅读 34,486评论 0 5
  • 设置 这里有大量的CoreDNS配置。所有的设置都基于非root账户,并且因此不能监听在port 53的情况下。 ...
    偷油考拉阅读 4,228评论 0 0
  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,676评论 0 10
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,792评论 0 5