CoreDNS
CoreDNS 是一个用 Go 编写的 DNS 服务器/转发器,采用插件链机制。每个插件执行一项(DNS)功能,使其非常灵活。如果某些功能未开箱即用,您可以通过编写插件来添加。
CoreDNS 可以监听通过 UDP/TCP (Do53)、DNS over TLS (DoT, RFC 7858) 以及 DNS over HTTPS (DoH, RFC 8484) 传入的 DNS 请求。
安装
配置
有关配置,请参阅官方文档。
coredns.service 会查找 /etc/coredns/Corefile,如果该文件缺失则启动失败。在该位置创建配置文件后,启动/启用 coredns.service。
以下是一个包含有用插件的示例配置。CoreDNS 将在端口 53 上启动,为列出的子网提供 DNS 服务,并将所有请求转发到 Wikimedia DNS 服务器。您可以使用 drill 命令来验证 CoreDNS 在本地是否正常工作:drill archlinux.org @127.0.0.1。
/etc/coredns/Corefile
.:53 {
bind 127.0.0.1 ::1 192.168.1.254 192.0.0.1
bufsize 1232
acl {
allow net 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 192.0.0.0/24
block
}
hosts {
reload 0
fallthrough
}
loadbalance
forward . tls://185.71.138.138 tls://2001:67c:930::1 {
tls_servername wikimedia-dns.org
}
cache {
success 4096
denial 1024
prefetch 512
}
prometheus :9153
errors
log
}
转发
要将查询转发到不同的解析器,请使用 forward 插件。它支持普通 DNS 和 DNS over TLS。对于 DNS over TLS,请使用 tls:// 协议并使用 tls_servername 指定服务器主机名。
例如,要使用 DNS over TLS 将所有请求转发到 Wikimedia DNS,请按如下方式编辑 /etc/coredns/Corefile
/etc/coredns/Corefile
.:53 {
bind 127.0.0.1 ::1
forward . tls://185.71.138.138 tls://2001:67c:930::1 {
tls_servername wikimedia-dns.org
}
}
将 127.0.0.1 和 ::1 配置为您的名称服务器;参阅 域名解析。之后 重启 coredns.service。
以 root 身份运行 journalctl -u coredns 以验证默认运行情况。解析器现在将监听端口 53。
如果解析器需要允许其他主机访问,请在 /etc/coredns/Corefile 中使用 bind 配置其他网络接口或 IP 地址。此外,可以使用 acl 插件来拦截不应使用该服务器进行递归查询的范围。更多信息请参考 CoreDNS 插件文档。
0.0.0.0 和 ::)。如果解析器需要遵循 /etc/hosts 文件中的条目,请在 /etc/coredns/Corefile 中添加 hosts 行。参阅 coredns-hosts(7)。