CoreDNS
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 插件文档。
如果解析器应该遵守 /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 }