我在 AWC EC2 上,因为我的服务器将对第三方域进行大量查询,所以我正在考虑以下选项
- 在所有服务器上安装 nscd
- 使用默认的 ec2 名称递归器
- 安装我自己的名字递归器
- 只需使用 8.8.8.8
我不太愿意安装集中式递归器,因为它存在单点故障,并且容易受到如下攻击:http://support.godaddy.com/help/article/1184/what-risks-are-associated-with-recursive-dns-queries
现在人们是否普遍会使用名称服务器支持递归 DNS 查询,就像上面的文章所建议的那样?
从安全性和性能方面来看,我正在考虑安装
nscd
,有什么缺点吗?
答案1
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 无法正常工作,则首先添加 Amazon IP,然后再添加 Google IP,这样 nscd 就可以回退到 Google。
来源:nscd(8) 和 resolv.conf(5) 的手册页
答案2
安装域名系统或者域名缓存在您的网络中的三台或更多台机器上。我建议对整个基础设施使用 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
Ubuntu 安装域名系统默认情况下应该提供一种合理安全和快速的方式来设置 DNS 缓存,而没有任何缺点。
答案4
在我看来,这完全取决于你的任务。如果你对少量地址进行大量查询(例如每秒对 10 个域进行 1000 次查询),本地缓存守护进程就足够了。如果你的请求扩展到大量地址(每秒对 1000 个域进行一次查询),我建议使用本地 DNS 递归器来加快查询过程并减少 DNS 流量。如果你计划使用本地递归器,请不要忘记设置缓存。