CoreDNS

出自 ArchWiki

CoreDNS 是一个 DNS 服务器/转发器,使用 Go 编写,可以链式连接插件。每个插件执行一个(DNS)功能。

CoreDNS 是一个快速且灵活的 DNS 服务器。这里的关键词是灵活:使用 CoreDNS,您可以通过利用插件对您的 DNS 数据执行您想要的操作。如果某些功能没有开箱即用,您可以通过编写插件来添加它。

CoreDNS 可以监听通过 UDP/TCP(go'old DNS)、TLS (RFC:7858)(也称为 DoT)、DNS over HTTP/2 - DoH - (RFC:8484) 传入的 DNS 请求

安装

安装 corednsAUR, 或 coredns-binAUR, 或 coredns-gitAUR 软件包。

配置

目前只有 coredns-gitAUR 提供了示例配置文件。您可以在这里找到它:CoreDNS 配置文件示例[死链 2025-01-19 ⓘ]

systemd 将在 /etc/coredns/Corefile 中查找,将上述配置文件保存在该位置。

启动/启用 coredns.service

使用示例配置,CoreDNS 将在端口 1053 上启动。您可以使用 drill 命令来验证 CoreDNS 是否正在工作:drill archlinux.org @127.0.0.1 -p 1053

NextDNS 作为上游解析器

如果您想加密您的递归请求,请编辑 Corefile 并删除示例配置中的第 6 行到第 12 行。forward . tls://45.90.28.0 tls://45.90.30.0 { tls_servername dns.nextdns.io }

您可以在 forward 中使用任何 dns53 或 DoT 解析器。作为本地解析器,编辑 /etc/coredns/Corefile 并将 .:1053 更改为 .:53,然后您可以将 127.0.0.1 配置为您的名称服务器(请参阅 域名解析)。之后重启 coredns.service

以 root 身份运行 journalctl -u coredns 以验证默认情况下一切正常。解析器现在将在端口 53 上监听。如果解析器应该可以从其他主机访问,请在 /etc/coredns/Corefile 中使用 bind 配置其他网络接口。此外,acl 插件可以用于阻止应该使用服务器进行递归的范围。有关更多信息,请参阅 CoreDNS 插件文档

注意: 除非您特别想要运行开放 DNS 解析器,否则不要将解析器配置为监听公共(面向互联网的)IP 地址。

如果解析器应该遵守 /etc/hosts 文件中的条目,请在 /etc/coredns/Corefile 中添加 hosts 行。

配置示例

这是一个包含有用插件的配置

/etc/coredns/Corefile
.:53 {
       bind 127.0.53.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://45.90.28.0 tls://45.90.30.0 {
               tls_servername dns.nextdns.io
       }
       cache {
               success 4096
               denial  1024
               prefetch 512
       }
       prometheus :9153
       errors
       log
}

参见