每隔一段时间,这里的人就会问“我应该使用我的 ISP DNS 还是(google/opendns)”?
我想知道的是,为什么不在自己的计算机或本地网络上自己运行本地递归服务器呢?然后只需为您的 DNS 服务器使用 127.0.0.1 并让该服务器直接查找名称,而不是信任/依赖您的 ISP(或 google/opendns)运行的服务器?
比如PowerDNS自带的递归服务器就很好用,有linux和windows两种版本,而且是免费的。使用 unix,您同时拥有 PowerDNS 和dnscache,尽管 dnscache 具有非常长的 cname 链的古怪问题......
有什么理由支持和反对运行本地递归服务器?
DNS 系统旨在通过您的 ISP 使用区域缓存更有效地运行。
除非您有安全问题,或者您的 ISP 的 DNS 服务器受到某种限制,否则您应该使用它们。
我认为你需要以不同的方式处理这个问题:
你想解决什么问题?
运行本地 DNS 服务器是解决该问题的最佳方法。我经常看到人们部署本地 DNS 服务器,但实际上没有充分的理由这样做。在这种情况下,您添加了另一个要维护的服务、另一个攻击媒介以及您负责的网络中的另一个链接。
我已经看到部署本地 DNS 服务器有很好的理由。例如,我见过 ISP 提供的 DNS 服务器有很多延迟的情况。我们跟踪并测量了这种延迟,在某些情况下可达 800 毫秒。安装本地缓存服务器修复了此延迟。
我让提供商公共 DNS 解析器减慢了邮件服务器的速度。通过安装本地 DNS 服务器,此问题已得到解决。
我已经看到需要在内部网络和外部网络上以不同的方式解析某些域,本地 DNS 服务器再次成为答案。
IT 解决方案高度依赖于它们所部署的环境。
我也更喜欢使用我自己的递归服务器,克里斯。这是很容易提供给第三方的信息。我喜欢使用 ISP 的唯一服务是上行链路。
然而,Chris S 提出了一个很好的观点。如果每个最终用户都运行一个本地缓存,那么它会给 Internet 带来更多的 DNS 负载。
康卡斯特 DNS 劫持
如果您的 ISP 为您提供递归 DNS 服务器
那么递归解析您的 DNS 查询并没有太多显着的好处。
您可以设置 DNS 服务器来转发递归查询而不是自己解决它们,并且只需将这些请求发送到您的 ISP 的服务器。这样做的好处是能够在 ISP 的服务器上进行缓存命中,这可以在许多典型设置中为您节省数十毫秒的时间。
您可能想要使用此设置的原因有很多 - 例如,您可能正在为您的站点运行 .local 区域(或在您的站点域上进行水平分割),或者您可能想要对某些区域进行 DNS 黑洞处理。
Chris S 所说的,以及表现。如果其他人担心 CPU 负载,您不会牺牲自己机器的速度。
递归的名称服务器可能容易受到缓存中毒攻击 - 如果该名称服务器对任何域也具有权威性,它可能使您容易受到一些令人讨厌的劫持攻击。
为了最大限度地减少这种威胁,如果您确实选择操作递归服务器,您应该只允许您控制下的客户端 IP 进行递归。
我在 Server 2012 下运行具有缓存的非递归 DNS 服务器,并且一直为我的客户执行此操作。我看到“了解”本地 LAN 的 dns 信息带来了巨大的性能优势。运行任何 DNS 测试,您将始终看到本地 DNS 更快。递归 DNS 仍然是一个意见或设置问题。较小的配置不会从自己的递归查找中获得任何好处,实际上会减慢速度。也许不是最好的答案,但您必须通过连接和主机测试性能,看看它是否更快。