题 我应该运行自己的DNS recursor或本地缓存守护进程吗?


我在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. 现在常见的是现在会使用名称服务器支持递归DNS查询,如上面的文章建议的那样吗?

  2. 在安全性和性能方面,我正在考虑安装 nscd,有什么缺点吗?


6
2017-07-24 15:34




你对“很多查询”的定义是什么? - Mxx


答案:


nscd不只是缓存DNS请求;它还缓存用户名和组的查找以及一些其他不太常见的用途。它是Linux系统的标准(它被打包为glibc的一部分)并且可能已经安装,它使用的内存非常少,所以没有理由不运行它。它将提供良好的缓存行为,而无需任何进一步的配置。

由于EC2对外部流量收费,而流量为8.8.8.8(Google解析器)将比数据中心内部的流量慢得多,您应该更喜欢EC2 DNS,除非您有非常具体的理由不这样做。如果您愿意,可以将Google DNS(8.8.8.8和8.8.4.4)设置为Amazon DNS的备份,但是当区域的其余部分正常工作时,它们不太可能会关闭。

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

  • 使用nscd,默认情况下应该设置(/ usr / sbin / nscd;您应该检查您的发行版的运行配置以确保服务在启动时启动)。
  • 使用Amazon DNS服务器作为默认值。
  • 如果您愿意,可以将Google服务器添加为备份。如何执行此操作将根据您的分发情况而有所不同。如果您不确定,请检查/etc/resolv.conf,这是glibc(nscd)查看的文件,并且通常会有一条评论告诉您它是如何配置的。服务器按照它们在resolv.conf中列出的顺序进行检查,因此首先添加Amazon IP然后再添加Google IP会让nscd回到Google,如果由于某种原因Amazon不能正常工作。

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


4
2017-07-30 19:10



我之前发现NSCD非常多。可能值得查看unscd,或者(实际上,可能和)运行自己的名称服务器。只要名称服务器被防火墙以便只接受来自EC2服务器的传入查询,godaddy hilight不会影响您的任何问题。 - Cian
运行自己的非权威名称服务器几乎总是一个坏主意;出现问题太多了。特别是在数据中心环境中,如果你不信任nscd(我没有遇到过问题,那就是在移动电缆后与温和过时的缓存条目无关),只需使用提供商的DNS;它比你自己失败的可能性要小得多。 - chrylis


安装 的dnsmasq 要么 的dnscache 在您的网络中的三台或更多机器上。我建议将AWS VPC用于整个基础架构,但这是一个有些独立的问题。

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

使用以下命令配置resolv.conf:

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

上述设置具有许多优点。首先,通过至少有三台主机,您可以在递归名称服务器级别具有弹性。其次,您可以获得缓存的好处,这样当服务器第一次对IP_ADDRESS_1进行查找时,IP_ADDRESS_1上的名称服务器将缓存结果。当另一台服务器执行查找时,结果将在缓存命中时更快地返回。第三,通过设置rotate选项,您可以平衡递归DNS基础架构中的负载。最后,通过设置timeout:1,可以最大限度地减少使用其中一个DNS服务器进行维护的影响。


3
2017-08-01 19:13





Ubuntu安装 的dnsmasq 默认情况下,应该提供一种合理安全且快速的方式来设置DNS缓存,没有任何缺点。

更多细节 https://unix.stackexchange.com/a/59424


2
2017-07-31 20:27



“Ubuntu默认安装dnsmasq” - 也许对于桌面来说是真的,但它对服务器来说是错误的 - 只需检查。 - Ryan


您链接到的GoDaddy文章概述了运行问题的问题 打开 递归名称服务器。事实上,这将是一堆蠕虫,你不会想要这样做。只要您的recursor只在环回或内部接口和/或防火墙上进行侦听,因此没有其他人可以访问它,该文章不适用。

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

实际上,许多中型到大型组织运行自己的递归是很常见的。

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

安装自己的recursor可以确保最小的延迟(而不是转到8.8.8.8),并且不会与其他人共享您的缓存(这有利有弊)。

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


2
2017-08-02 16:50





恕我直言,这完全是你的任务。如果您对少量地址(例如1000rps到10个域)进行了大量查询,则本地缓存守护程序对您来说已经足够了。如果您请求传播到大量地址(每秒一个查询到1000个域),我建议使用本地DNS recursor来加速查询过程并减少DNS流量。如果您打算设置缓存,请不要忘记设置缓存使用本地recusor。


0
2017-08-01 14:03





永远不要安装本地DNS缓存解析器,它会带来更多的麻烦,然后带来的好处。

默认情况下,Ubuntu没有附带本地DNS缓存解析器证明了我的观点。


-6
2017-07-31 16:44



对于不准确和错误的答案进行了投票。从来没有开始回答是问题的确定标志。 - dmourati
@Howard,请提供证据来支持您的陈述。 - Mxx
这是一个糟糕的建议。在您希望减轻DNS解析引起的延迟的任何服务器中,都会使用本地DNS缓存并进行广泛推荐。我已经使用它们多年没有一个问题,所以如果你提到“麻烦”,我希望你至少解释问题是什么。 - ata