che*_*vik 20 domain-name-system bind nameserver djbdns
我是一个想学习如何设置 DNS 域名服务器的新手。我应该使用 djbdns、BIND 还是其他什么?
当前的网络要求包括子域支持、SSL 和邮件服务,所有这些都需要非常小的流量。我想要一个解决方案,有朝一日可以扩展到更重的流量和可能更棘手的要求(如负载平衡)。此时我会在 Linux 上运行。
我读到 BIND 如果配置不当会出现安全问题,并且其配置可能很棘手。我还读到 djbdns 更容易配置,更安全,并且相当于重负载。djbdns 的论点似乎有道理,但我没有专业知识来正确评估它们。如果 BIND 更好,我会很感激讨论 djbdns 的那些声明。
谢谢。
fre*_*eit 14
我过去曾与 djbdns 合作过,目前运行着一堆 BIND 服务器。
djbdns 最大的问题是最好像我一年级老师在我的成绩单上写的那样:“不和别人玩得很好”。它只是在各种非常小的方式上表现得不像 unix box 上的任何其他东西,以后可能会咬你。它使用您在其他任何地方都看不到的区域文件语法。
djbdns 的最大优点是它是从头开始设计的,以安全为目标 #1。
如果您要设置 DNS 服务器,将其公开到 Internet,然后从不维护它,那么 djbdns 将是您要走的路。
在现实世界中,大多数管理员最好使用操作系统供应商提供的 BIND 包,并在有更新时及时修补。但是 chroot 运行它是一个好主意,并且将您的权威 DNS 服务器与您的递归解析器 DNS 服务器分开是一个好主意。
如果您找到有关 DNS 的文档,则将包含 BIND,而不太可能包含 djbdns。如果您使用 dig,它返回的格式可以粘贴到 BIND 区域文件中并起作用。它就像任何普通的 unix 守护进程,而不是来自另一个星球的东西。
我们使用了一些硬件负载均衡器并对我们的递归解析器 BIND 服务器进行负载均衡;效果很好。只需确保用户在向其发送请求时获得相同的源 IP,并且任何支持 UDP 和 TCP 的负载平衡设置都应该可以工作。如果您使用权威 DNS,负载平衡就像拥有多个服务器并将它们全部发布在 whois 信息中一样简单;其他 DNS 服务器将智能负载平衡。
如果是为了您自己,并且您想了解 DNS 的工作原理,我会使用 djbdns。
如果您想了解其他人如何使用 DNS,以及如何支持典型的企业部署,请学习绑定。
如果您的目标是最少的努力和支持,并且您相当有能力,那么 djbdns 的支持开销要低得多。
如果您更多地处于围栏的新手一侧,您可能会更容易获得绑定和运行,但请记住,它更有可能以奇怪和古怪的方式爆炸。
如果我还不知道 djbdns(和绑定),我也会研究 powerdns 和 maradns,但我怀疑对于小安装它是否比 djbdns 套件更好。
无论如何,即使您使用 bind 将您的 DNS 广告到互联网,您仍然应该在 localhost 上为您的系统解析器运行 dnscache(djbdns 套件的一部分)。
跳过 djbdns。djb虽然是英雄,但在软件方面却继承了数学家的傲慢。它在启动/停止方面的行为不像其他软件,这一事实可能很好地展示了管理守护进程的巧妙技术。但是如果你不经常使用它,你将不得不把它拿出来,因为一切都是如此不同。如果您将它设置在其他人也维护的系统上,则需要为他们编写清晰的文档 - 他们需要完整阅读这些文档才能进行简单的操作。用 init 运行东西很可爱,甚至很聪明。但它也是令人讨厌的、令人惊讶的和不标准的。
此外,由于坚持只遵守标准,而不是软件互操作性,我遇到了 djbdns 问题,导致严重问题。解决这些问题非常浪费时间,因为它取决于 DNS 数据包的细微差异。
djbdns 在某些情况下也有奇怪的行为,这会导致人们使用 djb 以外的工具(例如,使用 nslookup)对您的 DNS 服务器进行故障排除,以获得令人惊讶的结果。你会浪费时间解释“实际上,我只是使用这个名为 djbdns 的不起眼的 DNS 服务器。问题是你的诊断工具给你一个奇怪的消息,但它工作正常。如果你看这个数据包捕获,你可以知道. 这与几个月前 djbdns 无法与您的 DNS 服务器正确互操作的问题无关。也与几周前我不在办公室时遇到的问题无关队友一个小时重启DNS服务器。”
qmail 也有类似的问题。
设置 djbdns 具有一定的教育价值,如果您提出问题并且有时间消磨时间。你也可以通过阅读 djb 的网站来学到很多东西。
有两组安全问题。允许攻击者访问系统的安全漏洞 - djbdns 几乎肯定没有任何这些漏洞。几年前bind在短时间内就发现了不少尴尬,也暴露了一个糟糕的设计。我希望在这么多年里,它已经被完全改写了。如果您真的想在这方面安全,请在虚拟机(例如 Xen)下运行它。还要考虑一下,如果您在目标模式下使用 SELinux 的 Linux 系统上运行,您将有一个绑定设置,并且可能不会为 djbdns 设置一个。bind + SELinux 系统可能更安全。
另一个问题是防止缓存中毒的安全性。我的猜测是 djbdns 发布时更好,而现在由于更多关注,bind 可能更好。这可能是导致绑定不安全的原因,除非“正确配置”。你至少应该研究和理解这个问题。在此过程中,您可能会发现两个 DNS 服务器存在哪些配置风险。
对于大多数用户来说,重负载下的行为是一个无意义的标准。当心用作评估软件的标准的性能很少是性能瓶颈。您没有为庞大的用户群托管缓存 DNS 服务器,在那里您可能会以很高的速度收到请求。您正在运行权威 DNS 以提供可能在同一系统上运行的服务。这些服务比 DNS 贵数千倍。您的 Internet 链接甚至可能不足以使您的 DNS 服务器负载过重,但如果您提供的服务负载如此重,DNS 可能不会成为瓶颈。
您可能想看看MaraDNS,一个具有安全意识的 DNS 服务器。
安全的。MaraDNS 的安全历史与任何其他 DNS 服务器一样好或更好。例如,MaraDNS 一直是随机的,使用安全的随机数生成器,DNS 查询的 Query ID 和源端口;并且永远不会受到“新”缓存中毒攻击的影响。
支持的。MaraDNS 在维护和更新方面有着悠久的历史。MaraDNS 最初创建于 2001 年。MaraDNS 1.0 于 2002 年发布,MaraDNS 1.2 于 2005 年 12 月发布。MaraDNS 已经过广泛测试,包括 SQA 流程和超过四年的实际使用。MaraDNS 继续得到全面支持:最新版本于 2009 年 2 月 13 日完成。Deadwood 代码将成为 MaraDNS 2.0 的一部分,正在积极开发中。
便于使用。一个基本的递归配置只需要一个三行配置文件。一个基本的权威配置只需要一个四行配置文件和一个一行区域文件。MaraDNS 有完整的文档,包括易于遵循的教程和完整且最新的参考手册。
小的。MaraDNS 非常适合嵌入式应用程序和服务器必须尽可能使用最少资源的其他环境。MaraDNS 的二进制文件比任何其他当前维护的递归 DNS 服务器的二进制文件都要小。
开源。MaraDNS 是完全开源的,许可证是两条款 BSD 许可证,几乎与 FreeBSD 许可证相同。
请参阅maraDNS advocacy页面,其中有几个 DNS 服务器软件的比较,可以帮助您选择。