跳至内容

Unbound 递归 DNS

作为 BIND 的替代方案,Unbound 是由 NLnet Labs 维护的一个现代化的、支持验证、递归和缓存的 DNS 服务器。

先决条件和假设

  • 运行 Rocky Linux 的服务器
  • 能够使用 firewalld 创建防火墙规则

简介

DNS 服务器有两种类型:权威服务器和递归服务器。权威 DNS 服务器播发 DNS 区域,而递归服务器则代表客户端解析查询,将它们转发给 ISP 或公共 DNS 解析器,或者转发给大型服务器的根区域。

例如,您的家用路由器很可能运行着一个嵌入式的递归 DNS 解析器,该解析器会转发给您的 ISP 或一个知名的公共 DNS 服务器,后者也是一个递归 DNS 服务器。

安装和启用 Unbound

安装 Unbound

dnf install unbound

配置 Unbound

在对任何配置文件进行更改之前,请备份原始安装的正常工作的配置文件 unbound.conf

cp /etc/unbound/unbound.conf /etc/unbound/unbound.conf.orig

如果配置文件出现错误,这将有助于将来进行排查。在进行更改之前,*始终* 最好制作一个备份副本。

编辑 unbound.conf 文件。作者使用 vi,但您可以替换为您喜欢的命令行编辑器

vi /etc/unbound/unbound.conf

插入以下内容

server:
    interface: 0.0.0.0
    interface: ::
    access-control: 192.168.0.0/16 allow
    access-control: 2001:db8::/64 allow
    chroot: ""

forward-zone:
    name: "."
    forward-addr: 1.0.0.1@53
    forward-addr: 1.1.1.1@53

192.168.0.0/162001:db8::/64 替换为您要解析 DNS 查询的子网。保存您的更改。

仔细看看

  • interface 指定了您希望监听 DNS 查询的接口(IPv4 或 IPv6)。我们通过 0.0.0.0:: 监听所有接口。
  • access-control 指定了您希望允许哪些子网(IPv4 或 IPv6)的 DNS 查询。我们允许来自 192.168.0.0/162001:db8::/64 的请求。
  • forward-addr 定义了我们将要转发到的服务器。我们正在转发到 Cloudflare 的 1.1.1.11.0.0.1

启用 Unbound

接下来,在 firewalld 中允许 DNS 端口并启用 Unbound

firewall-cmd --add-service=dns --zone=public
firewall-cmd --runtime-to-permanent
systemctl enable --now unbound

使用 host 命令检查 DNS 解析

$ host google.com 172.20.0.100
Using domain server:
Name: 172.20.0.100
Address: 172.20.0.100#53
Aliases:

google.com has address 142.251.215.238
google.com has IPv6 address 2607:f8b0:400a:805::200e
google.com mail is handled by 10 smtp.google.com.

%

结论

大多数人使用他们的家用路由器的 DNS 解析器或由 ISP 和科技公司运行的公共 DNS 解析器。在家庭实验室和大型网络中,运行一个网络范围内的解析器是常态,通过缓存常用网站(如 Google)的 DNS 请求来减少延迟和网络负载。网络范围内的解析器还可以启用 SharePoint 和 Active Directory 等内网服务。

Unbound 是众多实现 DNS 解析成为可能的开源工具之一。恭喜您,您拥有了自己的 DNS 解析器!

作者:Neel Chauhan

贡献者:Steven Spencer, Ganna Zhyrnova