如何在FreeBSD10.1上设置未绑定缓存DNS解析器
如何在 FreeBSD 10.1 或 10.2 上设置未绑定缓存 DNS 解析器
介绍
域名服务器 (DNS) 系统是一个全球数据库层次结构,专门用于查找主机名(如 www.digitalocean.com
)并将它们转换为一个或多个 IP 地址的简单但基本任务。 每当发送电子邮件或通过其名称启动与主机的连接时,都会使用 DNS 系统。 DigitalOcean 社区提供了一个很好的 DNS 系统介绍 。
互联网基础设施的这样一个必不可少的基本组成部分得到了广泛的使用。 繁忙的系统每秒进行数百次或更多名称查找的情况并不少见。 如果在您的服务器上运行的服务在后台执行大量工作,那么在您自己的系统中验证和缓存您的服务为执行其操作而执行的名称查找,很可能会提高安全性和性能。
在本教程中,您将学习如何设置 FreeBSD 服务器以记住系统范围缓存中的所有 DNS 查找。 信息将自动从此缓存中过期,遵守每个查找域的单独策略以进行重新检查。
先决条件
为了遵循本教程,您将需要:
- 一个 FreeBSD 10.1 Droplet
第 1 步 — 启用未绑定
FreeBSD 10.1 包含验证缓存解析器 Unbound(版本 1.4.22)作为基本系统的一部分; FreeBSD 10.2 包括版本 1.5.3。 两者都被认为是安全的,可以投入生产使用。
一旦您通过 SSH 登录到您的服务器,启用 FreeBSD 包含的解析器就像发出以下命令一样简单:
sudo sysrc local_unbound_enable=YES
您的 Droplet 现在已配置为在下次系统重新启动时启动 Unbound。
第 2 步 — 开始 Unbound
您可以立即启动解析器,而无需重新启动完整的系统。
要启动解析器:
sudo service local_unbound start
如果 Unbound 成功启动,您应该会看到类似于以下内容的输出:
输出
Performing initial setup. Extracting forwarders from /etc/resolv.conf. /var/unbound/forward.conf created /var/unbound/lan-zones.conf created /var/unbound/unbound.conf created /etc/resolvconf.conf created original /etc/resolv.conf saved as /etc/resolv.conf.20150812.184225 Starting local_unbound.
您现在正在运行 Unbound 验证缓存名称解析器,但不能保证您当前运行的所有软件都能注意到并接受修改。
第 3 步 — 通过 Droplet 恢复保留此设置
诸如恢复备份映像或使用快照映像作为新 Droplet 的基础之类的操作通常会破坏我们迄今为止所做的配置。 这是由于 FreeBSD 的 OpenStack 驱动程序中的一个小错误。 幸运的是,此错误已在即将发布的版本中修复。 我们现在将单独将此特定补丁应用到当前版本,以确保 Unbound 与 DigitalOcean 的备份和快照工具一起正常运行。
从 BSD-CloudInit 的官方存储库下载补丁(FreeBSD OpenStack 驱动程序):
fetch https://github.com/pellaeon/bsd-cloudinit/commit/a7ee246c23.diff
将补丁应用到正确的文件:
sudo patch -N -F3 /usr/local/bsd-cloudinit/cloudbaseinit/osutils/freebsd.py < a7ee246c23.diff
您应该会看到以以下内容结尾的输出,表明补丁已成功应用:
输出
. . . Patching file /usr/local/bsd-cloudinit/cloudbaseinit/osutils/freebsd.py using Plan A... Hunk #1 succeeded at 4 with fuzz 2 (offset 1 line). Hunk #2 succeeded at 83 with fuzz 3 (offset 4 lines). done
您不再需要补丁文件并且可以将其删除:
rm a7ee246c23.diff
您的系统现在配置为通过系统备份和恢复使用 Unbound,或者在克隆到全新服务器后使用。
第 4 步 - 重新启动受影响的服务
确保所有软件都使用新解析器的最简单方法是完全重新启动 Droplet。
您可以延迟执行此操作,直到它对您的 Droplet 提供的服务影响最小。 正在运行的软件将使用旧解析器或新解析器,而不是出现故障; 任何能够同时进行过渡的软件都会优雅地进行。 并且两者可能暂时并排使用应该不会产生不良影响。
准备好后,重新启动 Droplet:
sudo shutdown -r now
这里的所有都是它的!
结论
在本教程中,您学习了如何在您的系统上缓存主机名和域名查找,以及您可能想要这样做的原因。 您可以在 Unbound 项目 的 主页上了解有关 FreeBSD 缓存解析器的更多信息。