我在AWC EC2,因为我的服务器将会为第三方域做很多查询,我正在考虑以下选项
我毫不犹豫地安装集中式recursor所以它是单点故障,并受到攻击,如: http : //support.godaddy.com/help/article/1184/what-risks-are-associated-with-recursive-dns -queries
现在常见的一种方法是使用名称服务器支持recursion的DNS查询,就像上面的文章所build议的那样?
就安全性和性能而言,我想安装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(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,没有任何缺点。
您链接到的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了我的观点。