如何在FreeBSD 10.1或10.2上设置非绑定缓存DNS解析器
介绍
域名服务器(DNS)的系统是专门用于查找主机名喜欢简单但重要的任务数据库的全局层次www.digitalocean.com
并将其转变为一个或多个IP地址。 每当发送电子邮件或通过其名称启动与主机的连接时,将使用DNS系统。 这是一个很好的介绍了DNS系统可从DigitalOcean社区。
这种互联网基础设施的基本组成部分得到了大量的使用。 繁忙的系统每秒钟进行数百个名称查找并不罕见。 如果您的服务器上运行的服务在幕后执行许多工作,那么很可能安全和性能将受益于在您自己的系统中验证和缓存您的服务执行其操作所执行的名称查找。
在本教程中,您将了解如何设置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步 - 启动未绑定
您可以立即启动解析器,而不执行完全系统重新启动。
要启动解析器:
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.
您现在正在运行未绑定的验证缓存名称解析程序,但并非所有当前运行的软件都会注意到并提取修改。
第3步 - 通过Droplet复原保留此设置
像恢复备份映像或使用快照映像作为新Droplet的基础的操作通常会破坏我们到目前为止所做的配置。 这是由于FreeBSD的OpenStack驱动程序中的一个小错误。 幸运的是这个bug已经在即将发布的版本中修复。 我们将单独应用此特定补丁到当前版本,以确保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
您的系统现在配置为使用通过系统备份和恢复的绑定,或克隆到全新的服务器后。
第4步 - 重新启动受影响的服务
确保所有软件使用新解析器的最简单的方法是完全重新启动Droplet。
您可以延迟这样做,直到它影响您的Droplet提供的服务。 运行的软件将使用旧的解析器或新的解析器,而不是故障; 任何能够在这段时间内接管转换的软件都会这样做。 并且应当没有潜在地并排使用的不良影响。
准备好后,重新启动Droplet:
sudo shutdown -r now
这就是它的所有!
结论
在本教程中,您学习了如何在系统上缓存主机名和域名查找,以及为什么要这样做。 您可以在了解FreeBSD的缓存解析网页未绑定的项目 。