无绑定递归 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/16
和 2001:db8::/64
替换为您要为其解析 DNS 查询的子网。保存更改。
仔细观察¶
interface
表示您想要监听 DNS 查询的接口(IPv4 或 IPv6)。我们正在使用0.0.0.0
和::
监听所有接口。access-control
表示您要允许来自哪些子网(IPv4 或 IPv6)的 DNS 查询。我们允许来自192.168.0.0/16
和2001:db8::/64
的请求。forward-addr
定义了我们将转发到的服务器。我们转发到 Cloudflare 的1.1.1.1
和1.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