我应该运行自己的DNS recursor还是本地caching守护进程?

我在AWC EC2,因为我的服务器将会为第三方域做很多查询,我正在考虑以下选项

  • 在所有服务器上安装nscd
  • 使用默认的ec2名称recursor
  • 安装我自己的名字recursor
  • 只需使用8.8.8.8

我毫不犹豫地安装集中式recursor所以它是单点故障,并受到攻击,如: http : //support.godaddy.com/help/article/1184/what-risks-are-associated-with-recursive-dns -queries

  1. 现在常见的一种方法是使用名称服务器支持recursion的DNS查询,就像上面的文章所build议的那样?

  2. 安全性和性能而言,我想安装nscd ,有没有什么缺点?

nscd不仅仅cachingDNS请求, 它也caching查找用户名和组以及其他一些不太常见的用途。 它是Linux系统上的标准(它被封装成glibc的一部分),可能已经安装了,它使用的内存很less,所以没有理由不运行它。 它将提供良好的caching行为,而不需要进一步的configuration。

由于EC2收取外部stream量的费用,并且8.8.8.8(Googleparsing器)的stream量将远远低于数据中心内部的stream量,所以您应该更喜欢EC2 DNS,除非您有一个非常具体的原因。 如果您愿意,您可以将Google DNS(8.8.8.8和8.8.4.4)设置为Amazon DNS的备份,但当区域的其他部分正常工作时,他们不太可能会closures。

我对您的EC2虚拟机的build议:

  • 使用nscd,默认应该设置(/ usr / sbin / nscd;你应该检查你的发行版的运行configuration,以确保服务在启动时启动)。
  • 使用Amazon DNS服务器作为默认值。
  • 如果您愿意,可以添加Google服务器作为备份。 你如何做到这一点将取决于你的分布。 如果您不确定,请检查/etc/resolv.conf,它是glibc(nscd)所查看的文件,通常会有一条注释,告诉您它是如何configuration的。 服务器按照他们在resolv.conf中列出的顺序进行检查,所以首先添加Amazon IP,然后添加Google IP将使nscd可以返回到Google(如果由于某种原因,Amazon不起作用)。

来源:nscd(8)和resolv.conf(5)的手册页

在您的networking中的三台或更多台机器上安装dnsmasq或dnscache 。 我build议使用AWS VPC的整个基础设施,但这是一个单独的问题。

将所有主机指向这三个名称服务器。

configuration你的resolv.conf文件如下:

 nameserver IP_ADDRESS_1 nameserver IP_ADDRESS_2 nameserver IP_ADDRESS_3 options rotate options timeout:1 

上述设置有很多优点。 首先,通过拥有至less三台主机,recursion的域名服务器级别具有弹性。 其次,您将获得caching的好处,这样,当服务器第一次对IP_ADDRESS_1进行查找时,IP_ADDRESS_1上的名称服务器将caching结果。 当另一个服务器执行查找时,结果将在caching命中时返回得更快。 第三,通过设置旋转选项,您可以在recursionDNS基础设施之间平衡负载。 最后,通过设置超时:1,可以最大限度地减less为维护而closures某个DNS服务器的影响。

Ubuntu默认安装dnsmasq ,并且应该提供一个合理安全和快速的方式来设置一个DNScaching,没有任何缺点。

有关https://unix.stackexchange.com/a/59424的更多详细信息

您链接到的GoDaddy文章概述了运行开放式recursion域名服务器的问题。 事实上,这将是一个蠕虫的jar头,你不会想这样做。 只要您的recursor只在回送或在您的内部接口和/或防火墙,因此没有其他人可以访问它,本文不适用。

你的思路非常好,你考虑的所有选项都很棒。 如果您信任EC2或Google的recursor,绝不会继续。

事实上,许多大中型组织运行自己的recursion是很常见的。

为了提高性能,我会在每个可用区域安装一对recursors,并将它们configuration为/etc/resolv.conf的前两个名称服务器,然后附加EC2 recursor。 这样,你可以确定

安装你自己的recursor确保最小的延迟(而不是8.8.8.8),并且你的caching不与其他人共享(这有利与弊)。

对于一个现代,维护良好,轻量级和高性能的recursor,我强烈推荐Unbound (请参阅这里的独立推荐: http : //info.menandmice.com/blog/bid/37244/10-Reasons-to-use-Unbound -DNS )

恕我直言,这是所有关于你的任务。 如果您对less量地址(例如1000rps到10个域)进行查询,本地caching守护进程对您来说已经足够了。 如果您请求传播到大量的地址(一个查询到每秒1000个域),我会build议使用本地DNS recursor来加快查询过程并减lessDNSstream量。如果您打算设置caching,请不要忘记设置caching使用本地recusor。

切勿安装本地的DNScachingparsing器,它会带来更多的麻烦。

Ubuntu默认没有配备本地的DNScachingparsing器,这certificate了我的观点。