跳至内容

无绑定递归 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

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