跳转至内容

CoreDNS

来自 ArchWiki

CoreDNS 是一个用 Go 编写的 DNS 服务器/转发器,采用插件链机制。每个插件执行一项(DNS)功能,使其非常灵活。如果某些功能未开箱即用,您可以通过编写插件来添加。

CoreDNS 可以监听通过 UDP/TCP (Do53)、DNS over TLS (DoT, RFC 7858) 以及 DNS over HTTPS (DoH, RFC 8484) 传入的 DNS 请求。

安装

安装 corednsAUR 软件包。

配置

有关配置,请参阅官方文档

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
}
注意 此示例使用了 Wikimedia DNS。请将其替换为您信任的 DNS 解析器。参阅 域名解析#第三方 DNS 服务

转发

要将查询转发到不同的解析器,请使用 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
    }
}
注意 此示例使用了 Wikimedia DNS。请将其替换为您信任的 DNS 解析器。参阅 域名解析#第三方 DNS 服务

127.0.0.1::1 配置为您的名称服务器;参阅 域名解析。之后 重启 coredns.service

以 root 身份运行 journalctl -u coredns 以验证默认运行情况。解析器现在将监听端口 53

如果解析器需要允许其他主机访问,请在 /etc/coredns/Corefile 中使用 bind 配置其他网络接口或 IP 地址。此外,可以使用 acl 插件来拦截不应使用该服务器进行递归查询的范围。更多信息请参考 CoreDNS 插件文档

警告 除非您特别想运行开放 DNS 解析器,否则请不要将解析器配置为监听公共(面向 Internet)IP 地址或所有 IP 地址(0.0.0.0::)。

如果解析器需要遵循 /etc/hosts 文件中的条目,请在 /etc/coredns/Corefile 中添加 hosts 行。参阅 coredns-hosts(7)

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.