时不时地,人们会问“我应该使用我的 ISP DNS 还是 (google/opendns)”?
我想知道的是,为什么不在自己的计算机或本地网络上自己运行本地递归服务器?然后只需将 127.0.0.1 用于 DNS 服务器并让该服务器直接查找名称,而不是信任/依赖 ISP(或 google/opendns)运行的服务器?
例如,递归服务器强力DNS运行良好,有 Linux 和 Windows 版本,而且免费。使用 Unix,您既可以使用 PowerDNS,也可以使用域名缓存但是 dnscache 在处理非常长的 cname 链时会出现一些奇怪的问题……
支持和反对运行本地递归服务器的原因有哪些?
答案1
我认为你需要以不同的方式来处理这个问题:
您要解决什么问题?
运行本地 DNS 服务器是解决该问题的最佳方法吗?我经常看到有人部署本地 DNS 服务器,但这样做确实没有什么充分的理由。在这种情况下,您增加了另一项需要维护的服务、另一个攻击载体以及您负责的网络中的另一个链接。
我见过部署本地 DNS 服务器的理由非常充分。例如,我见过 ISP 提供的 DNS 服务器存在大量延迟的情况。我们跟踪并测量了这种延迟,在某些情况下延迟高达 800 毫秒。安装本地缓存服务器可以解决此延迟问题。
我的邮件服务器因为提供商的公共 DNS 解析器而变慢了。通过安装本地 DNS 服务器,这个问题得到了解决。
我已经看到了在内部网络和外部网络上以不同方式解析某些域的需要,再次,本地 DNS 服务器就是答案。
IT 解决方案高度依赖于其部署环境。
答案2
DNS 系统旨在通过 ISP 进行区域缓存,从而提高运行效率。
除非您有安全问题,或者您的 ISP 的 DNS 服务器受到某种限制,否则您应该使用它们。
答案3
如果你的 ISP 为你提供了一个递归 DNS 服务器,
- 至少和你的链接一样可靠
- 低延迟(大概是这样的,从网络角度来看可能非常接近你的延迟)
- 已正确配置且安全
那么递归解析 DNS 查询就没有太多显著的好处了。
您可以设置 DNS 服务器来转发递归查询,而不是自己解析它们,只需将这些请求发送到您的 ISP 服务器即可。这样做的好处是,您能够在 ISP 服务器上缓存命中,这在许多典型设置中可以为您节省数十毫秒。
您可能想要使用此设置的原因有很多 - 比如,您可能正在为您的站点运行 .local 区域(或在您站点的域上运行水平分割),或者您可能想要将某些区域的 DNS 设为黑洞。
答案4
Chris S 所说的以及性能。如果其他人担心 CPU 负载,您就不要牺牲自己机器的速度。