如何在 Ubuntu 20.04 中安装和使用 Unbound

Unbound 是一个递归的、可验证的、非常安全的 DNS 缓存服务器,它在 BSD 许可下免费分发。 Unbound 支持 DNS-over-TLS 和 DNS-over-HTTPS,通过允许客户端加密其连接来增加在线隐私。 根据您的网络配置,Unbound 可以同时支持 IPV4 和 IPV6。 Linux 发行版中 Unbound 的安装和配置非常简单明了。 Unbound 软件包可用于大多数现代操作系统,包括 CentOS、Ubuntu、 Fedora. 使用自己的域在内部为应用程序或网站提供服务的公司可以将 unbound 用作 DNS 服务器。 在本文中,我们将学习如何安装和配置 未绑定 Ubuntu 20.04 中的服务器。

安装

在 Ubuntu 20.04 中安装 Unbound 名称解析服务器非常简单易行。 运行以下命令安装包

$ sudo apt install unbound -y

输出:

此外,运行以下命令来安装我们将用于检查 DNS 服务器配置的其他软件包

$ sudo apt install bind-utils net-tools -y

安装完成后,使用命令可以找到配置文件的内容:

$ cat /etc/unbound/unbound.conf

输出 :

输出显示将从 unbound.conf.d 目录加载所有 .conf 文件。

让我们在目录下创建一个新的配置文件 /etc/unbound/unbound.conf.d 目录。 在这个 example 我创建了一个 unbound_test.conf 文件。 你可以有自己的假设。

使用文本编辑器打开文件并添加以下示例配置。 您可以相应地修改参数。

$ sudo nano /etc/unbound/unbound.conf.d/unbound_test.conf
server:

port: 53

verbosity: 0

num-threads: 2

outgoing-range: 512

num-queries-per-thread: 1024

msg-cache-size: 32m

interface: 127.0.0.1

interface: 192.168.5.5

rrset-cache-size: 64m

cache-max-ttl: 86400

infra-host-ttl: 60

infra-lame-ttl: 120

outgoing-interface: 192.168.0.2

access-control: 127.0.0.0/8 allow

access-control: 192.168.5.0/24 allow

username: unbound

directory: "/etc/unbound"

logfile: "/var/log/unbound.log"

use-syslog: no

hide-version: yes

so-rcvbuf: 4m

so-sndbuf: 4m

do-ip4: yes

do-ip6: no

do-udp: yes

do-tcp: yes
Now create a log file and assign permission to write logs

$ sudo touch /var/log/unbound.log
$ sudo chown unbound:unbound /var/log/unbound.log

重启Unbound服务加载配置

$ sudo service unbound restart

使用以下命令启用服务

$ sudo service unbound enable

使用以下命令检查未绑定服务是否正在运行:

$ sudo service unbound status

输出 :

运行以下命令检查未绑定的端口正在侦听

$ sudo netstat -anlpt | grep LIST

输出:

输出显示 Unbound 服务正在侦听端口 53 以接受请求。

配置文件说明:

港口 : 未绑定的监听端口

隐藏版本 : 不显示未绑定的版本

使用系统日志 : 指定是否要在 syslog 中写入日志

用户名 : 用户,unbound 在其下运行

冗长 : 日志级别,范围从 0 到 4,4 为调试日志级别

界面: 监听未绑定请求的接口

传出接口 : 上网的接口

线程数 :线程数,建议指定处理器核心数相等

在防火墙中打开 DNS 端口。

创建配置文件后,您需要打开一个 DNS 端口以允许您的本地 LAN 客户端连接到您的 Unbound 仅缓存 DNS 服务器。

$ sudo ufw allow from any to any port 53 proto tcp
$ sudo ufw allow from any to any port 53 proto udp

要检查防火墙规则,请运行以下命令

$ sudo ufw status

输出 :

现在我们已经到了测试我们新的 Unbound DNS 服务器的最后一点。 对于测试,我们可以使用 先前安装的软件包附带的命令 绑定工具. 在实际的 DNS 服务器中执行一些 DNS 查询。 为了这 example,我已经查询 kernel.org 进行测试。 你可以有自己的假设。

$ dig kernel.org @localhost

输出:

第一次查询的响应时间为 4 毫秒。 由于我们已经配置了 Unbound DNS 服务器,查询现在被缓存了。 要验证 dns 缓存,请使用相同的域名运行以下查询。

$ dig kernel.org @localhost

现在可以发现查询时间是0毫秒。

如果要从 LAN 客户端测试 Unbound DNS 服务器的配置,请查询指向 Unbound DNS 服务器 IP 的 DNS 响应。 (在我的情况下,我的未绑定 DNS 服务器 IP 是 192.168.178.130)

$ dig kernel.org @192.168.178.130

优化

Unbound 的默认配置适用于有限的用户,但如果需要为大量用户提供服务,则需要进行一定的优化。 以下是一些优化选项,您可以实施这些选项以获得高性能。

线程数: 在系统上放置相同数量的 CPU 内核,对于 example,将值 4 用于 2 个 CPU,每个 CPU 有 2 个内核。

so-reuseport:是的 在 linux 中,这有助于提高 UDP 性能

传出范围:您可以根据核心数将值设置得尽可能大。

所以-sndbuf: 对于繁忙的服务器,此值可以设置为更大的值 4m 或 8m。

有关更多详细信息,您可以参考

https://nlnetlabs.nl/documentation/unbound/howto-optimise/

结论

在本文中,我们介绍了如何通过基本配置在 Ubuntu 中安装和配置 Unbound 名称解析服务器。 已经使用 dig 命令执行了某些测试来检查 Unbound 服务器的配置。 此外,我们还了解了如何使用 Unbound 服务器的 IP 从本地 LAN 客户端查询 DNS 响应。 任何反馈和建议将不胜感激。