Coredns 安装配置文档

启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# /usr/local/bin/coredns -dns.port=53 -conf /etc/coredns/Corefile
# /usr/lib/systemd/system/coredns.service

[Unit]
Description=CoreDNS
Documentation=https://coredns.io/manual/toc/
Wants=network-online.target
After=network.target

[Service]
# Type设置为notify时,服务会不断重启
# 关于type的设置,可以参考https://www.freedesktop.org/software/systemd/man/systemd.service.html#Options
Type=simple
User=root
# 指定运行端口和读取的配置文件
ExecStart=/usr/local/bin/coredns -dns.port=53 -conf /etc/coredns/Corefile
StandardOutput=rsyslog
StandardError=rsyslog
Restart=on-failure
KillSignal=SIGTERM

[Install]
WantedBy=multi-user.target

# systemctl daemon-reload
# systemctl start coredns
# systemctl status coredns

Corefile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# /etc/coredns/Corefile
# cat Corefile
.:53 {
header {
response set ra aa
response clear rd
}
hosts /etc/coredns/hostsfile { # 这里可以设置单域名hosts
fallthrough
}
prometheus :9153
forward . 223.5.5.5 # 上游DNS服务器
log
errors
whoami
reload
loop
}
jakehu.me {
header {
response set ra aa
response clear rd
}
file /etc/coredns/jakehu.me # 这里可以设置通配
log
loop
reload
errors
}
jakehu.com { # 直接转发到上游,忽略本地dns解析
forward . 223.5.5.5
log
errors
whoami
}

DNS zone file

1
2
3
4
5
6
7
# /etc/coredns/jakehu.me
$ORIGIN jakehu.me.
@ 3600 IN SOA sns.dns.icann.org. noc.dns.icann.org. 2017042745 7200 3600 1209600 3600
3600 IN NS a.iana-servers.net.
3600 IN NS b.iana-servers.net.

www IN A 127.0.0.1

如果增加了记录需要将 2017042745​加 1,让配置生效

主从配置

CoreDNS 本身并不直接支持传统的主从配置(如 BIND 的 masters 和 slaves)。不过,以下几种方法可以实现类似的功能:

  1. DNS 转发:通过配置 forward 插件将 DNS 查询转发到另一台服务器,适用于负载均衡或容灾目的。
  2. CoreDNS 与 Consul 集成:通过 Consul 共享服务发现数据,实现多台 CoreDNS 服务器的高可用配置。
  3. DNS 区域同步:通过手动同步 DNS 配置文件,达到多个 CoreDNS 服务器数据一致性。

参考:

https://coredns.io/manual/toc/