我们应该托管自己的域名服务器吗?


93

这是一个关于是否将自己的域的DNS解析外包的规范问题

我目前有我的ISP为我的域提供DNS,但是它们对添加记录施加了限制。因此,我正在考虑运行自己的DNS。

您是希望托管自己的DNS,还是让ISP这样做更好?

我可以寻找替代方案吗?


除了以下答案外,经验也很重要。如果您是刚起步的DNS管理员,除非您提供良好的指导,否则您犯许多错误,或者您对文档的鹰眼也不会。(书籍和RFC,而不是 HOWTO)即使在网络的其余部分都很好的情况下,在权威DNS层上的错误也会造成中断。
安德鲁B

Answers:


64

我不会运行自己的DNS服务器-就我而言,托管我的网站的托管公司提供免费的DNS服务。还有其他选择,除了DNS托管之外什么都不做的公司(想到DNS变得容易,但还有许多其他事情),您可能应该考虑一下。

我自己不会这样做的原因是,DNS应该是相当可靠的,可以这么说,除非您拥有自己的地理位置分散的服务器网络,否则您将把所有的鸡蛋都放在一个篮子里。而且,那里有很多专用的DNS服务器,您无需启动新的专用DNS服务器。


7
+1使DNS变得简单。他们在过去7年多的时间里拥有经过审核的100.0%更新记录。
波特曼2009年

只是以为我会丢一张纸条。直到今天,我们终于从当前的提供商那里受够了糟糕的DNS,并根据此处的建议切换到DNS Made Easy,这是狂热的狂热。爱它。希望几年前能做到。
马克·亨德森

1
这不是为什么每个条目都有一个主服务器和辅助服务器吗?我从来没有小故障是主要问题,而次要是我的注册商。我的意思是我在小学时有毛病,但没人注意到,因为有可靠的中学。
dlamblin

当然,如果您确实出于某种原因想要运行自己的DNS服务器,那也没错。但是否则,只要您要向第三方托管DNS托管(成为次级托管),您就可以让他们处理所有事情。我认为对于大多数人来说,运行DNS服务器比其值得的麻烦更多。
David Z

DNS Made Easy实际上拥有跨越多个大洲的服务器网络。他们使用任播路由。因此,它们的冗余非常荒谬,远远超出了传统的两台服务器(主服务器和辅助服务器)的设置。但是从理论上讲,这也意味着全球各地的计算机都将获得快速的DNS解析。
史蒂夫·沃瑟姆

27

我们总是托管自己的DNS(也最好是反向DNS)。这使我们可以在不依赖第三方的情况下进行紧急更改。如果您有多个位置,则很容易为DNS服务器设置可达到的冗余级别。

如果您没有多个站点,那么我会考虑专门通过网络界面进行更改的DNS托管(不是您的ISP)的人。此外,还要寻求24x7全天候支持和不错的SLA。


4
在考虑外包时,还请询问他们采取了什么样的DDoS保护或缓解措施。DNS供应商一直受到攻击,有些供应商可以不间断地继续运行,而另一些供应商会在流量很小的情况下崩溃成堆,因此除非对信誉良好的供应商部署了许多服务器,否则请不要外包启用了任播路由。
贾斯汀·斯科特

我将根据您在第一句话中的个人经验来投票(非常热情!),但是随后您建议在第二句话中使用第三方服务,这基本上意味着为该操作增加了一个不必要的失败点几乎没有好处。:/可悲。
cnst

19

为了为您的域提供良好,可靠的DNS设置,您应该...

  • 您的域至少要有两个授权DNS服务器;
  • DNS服务器应连接到不同的物理网络和电源。
  • DNS服务器应位于不同的地理区域。

由于不太可能访问上述网络基础结构,因此最好选择具有上述网络基础结构的信誉良好的DNS托管提供程序(如其他人所推荐)。


这样说很难让人不服气。
FilipDupanović2011年

这是业界共识的一个很好的总结,没有别的。(您知道,该行业是通过昂贵的过度设计的解决方案赚钱的,这些解决方案甚至可能无法达到实际的真实规格。)
cnst

如果您的主机仍然是非冗余的,那么拥有高度冗余的DNS服务器有什么好处?
克里斯·史密斯

13

多年来,我一直使用BIND(版本8和9)运行自己的DNS服务器,而没有任何麻烦。我使用提交后检查将配置保存在版本控制中,该检查将验证区域文件,然后让我的DNS服务器定期检出区域文件。问题总是要确保每次提交都更新SOA序列号,否则缓存服务器将不会更新。

多年后,我与djbdns一起工作,因为该格式非常适合使用自动化脚本来管理区域,并且没有像使用BIND一样遇到SOA序列号问题。但是,它确实有自己的问题,必须格式化某些资源记录集才能使其被接受。

当我发现我的大部分流量都是DNS时,必须同时维护主DNS服务器和辅助DNS服务器,以取悦我此后转向使用EasyDNS以满足我的DNS需求的注册商。他们的Web界面易于管理,为我提供了管理RR集所需的灵活性。我还发现,与某些托管服务提供商(例如1&1)所提供的服务(它们限制了您可以输入的可用RR集)甚至网络注册服务商(如Network Solutions)(仅在使用Windows来管理DNS时才起作用)所提供的服务相比,它更容易使用。


这是一个很好的诚实答案,但听起来您可能会在解决方案的健全性中自欺欺人–通过使用EasyDNS,您使它成为了单点故障;您的站点可能已全部正常运行,但是如果您的第三方提供商遭受中断或针对其客户的DDoS,则您的名称可能无法解析。
cnst

8

对于我的个人域(以及我帮助的一些朋友的域),我们托管自己的DNS,而我的注册商(Gandi)提供辅助DNS。或另一个网络上的朋友提供辅助。Gandi不会立即更新区域,它们似乎每24小时左右检查一次,但是更改很少。对我们来说足够好了,他们的服务器可能比我们的服务器更可靠。

在我的工作中,我们做自己的DNS,而上游网络提供商则提供辅助DNS。但是,我们是一所大学,我们99%的用户都在现场。如果本地网络已关闭,则DNS是否关闭都无关紧要。另外,我们拥有完整的B类(/ 16),其中包含大约25k的DNS记录(当然还有25k的反向DNS记录),通过Web界面进行管理似乎有点尴尬。我们的本地DNS服务器具有高可用性,并且速度很快。


3
我们在这里做同样的事情。我们有两个运行BIND的Linux机器(一个pri另一个),我们的“ ISP”也运行辅助DNS。
l0c0b0x

1
同上。同样具有B类,也运行我们自己的BIND DNS服务器。当我们遇到DNS问题时,通常是在我们的异地;)
sysadmin1138

好答案;到目前为止,这是我最喜欢的答案,因为它实际上是基于合理的工程实践以及对可用冗余和可用性以及个人经验的现实估计;而许多其他答案只是简单列出他们最喜欢的第三方DNS提供商,或者盲目复制有明显利益冲突的人撰写的简介,这些人从他们提出的过度设计的解决方案中赚钱。
cnst

5

我都做过 托管自己的服务器可能会有好处:当老板询问您为什么花这么长时间时,您肯定会学到很多有关DNS工作原理的知识。此外,您还可以控制区域。这并不总是应有的功能,这在很大程度上是由于DNS的分层分布式特性-但是它时常会派上用场。令人怀疑的是,如果您可以让您的提供商将您分配为IP块的反向DNS的SOA(假设您有一个)。

但是,上面所有有关您实际上应该如何在上面构建大量的抗故障能力的评论都广为流传。不同地理位置的不同数据中心中的服务器很重要。在2003年东北地区发生大规模停电后,我们都知道,在同一城市,甚至省或州的两个不同数据中心中都装有一个盒子,并不一定能提供足够的保护。当您意识到自己的电池,然后柴油发电机节省了您的屁股时,兴高采烈的情绪很快就被意识到您现在正在驾驶备用轮胎而引起的恐惧所取代。

但是,我总是为局域网运行内部DNS服务器。完全控制网络内部使用的DNS可能非常方便-如果办公室电源中断,则由于位于服务器机架中的内部DNS服务器可能是电池,电池和柴油,而您的PC则不会,因此您的客户端将在服务器之前很长时间就处于脱机状态。


4

我正在很有趣地阅读所有这些解决方案,因为我们通过将主DNS托管在静态DSL线路之外,并让注册服务商(位于另一个大洲)在一个DSL上意外地适应了所有这些“要求”更严肃可靠的连接。通过这种方式,我们可以灵活地使用绑定和设置所有记录,同时可以合理地确保对辅助记录进行更新以反映这些更改,并且在人孔着火的情况下可用,以引用一次事件。

这有效地满足了:
“您的域中至少有两个权威DNS服务器;”
“ DNS服务器应连接到不同的物理网络和电源;”
“ DNS服务器应位于不同的地理区域。”


这当然是一种很好的方法。但是如果一个人孔着火了,并且您的整个基础架构都崩溃了,没有DNS,当没有服务器可以联系时,DNS仍然可用的意义是什么?:-)我认为,只有当您自己将一些其他服务外包给其他第三方时,才有可能遇到第三方辅助DNS的麻烦。
cnst

@cmst关键是,当dns崩溃时,任何向您发送电子邮件的人都会看到直接的问题(客户,合作伙伴或非常不好的宣传)。如果dns正常工作,并且邮件服务器关闭了几个小时,他们通常不会注意到任何事情。
kubanczyk

@cmst DNS不仅指向我的个人网络上的服务器。我可以在任何地方命名IP。就像,也许我为每个员工/朋友的家庭网络NAT框都起了个名字。或者,我可以使用其他记录类型并公开标识/验证某些内容。
dlamblin

4

看看Dyn.com ; 它们具有与DNS相关的各种服务,例如DNS托管,动态DNS,MailHop等。我发现它们可靠,并且已经使用了大约5年。


2
+1,我已经使用DynDNS大约两年了,对其服务完全满意。
cdmckay,2009年

Dyn.com在2013
Knox

3

这取决于。

自80年代末(BSD 4.3c)开始,我已经为各种工作运行了自己的DNS。在工作中,我始终托管自己的DNS,但我始终拥有多个数据中心位置,或者能够与合作伙伴交换辅助DNS。例如,在我的上一份工作中,我们为另一个.EDU(它们位于MN,我们位于CA)进行了辅助DNS,而它们也为我们做了同样的事情。地理和网络多样性。

或者,在我目前的工作中,我们拥有自己的东海岸和西海岸(美国)数据中心。托管我们自己的DNS,使我们可以放入某些GUI DNS服务可能不支持的异常DNS记录(SVR,TXT等)。而且,我们可以随时更改TTL。我们拥有极大的灵活性,但要自己付出代价。

对于家庭用品,我同时做到了。对于某些我在做异常工作或需要很大灵活性的域,我仍然运行自己的“隐藏”主DNS服务器,并与其他执行相同工作的人交换公共DNS服务。我使用RCS来版本控制区域文件以进行配置管理,因此我可以看到区域更改的整个历史可以追溯到时间的开始。对于简单的事情,例如具有单个博客的域或通用Web服务器(一个A记录或一个CNAME),使用可用的域注册商DNS服务会更容易,而现在担心CM。

这是一个权衡。最终的控制和灵活性是以您自己处理多样性,运行多台服务器,处理硬件/软件故障等为代价的。如果您不需要灵活性或完全控制权,那么任何顶级DNS提供商都会解决您的问题,可能总成本更低。


确实,简单地使用注册服务商的DNS会更容易,但域名注册商和您自己的主机都已启动,但您的网站仍然不可用,注册服务商的DNS经常关闭并不罕见。因为为简便起见,您在设置中添加了一个额外的故障点。运行您自己的DNS确实没有那么困难;尤其是在当今,拥有大量轻巧易用的服务器。
cnst

3

正如该线程中已经提到的,DNS有几种特殊情况,最明显的区别是权威性和缓存名称服务器部署之间。

  1. 如果您仅需要DNS服务器来解析Internet资源,那么一些免费的现金DNS解析器是一个明智的选择。我个人在Linux上使用PowerDNS递归(pdns-recursor)。

  2. 为了为您的外部基础结构提供服务,例如网站或MX,我不会使用内部NSes(如果我们在这里谈论SOHO)。使用一些不错的,可靠的,防弹服务,例如DNSmadeasy。我使用他们的商务套餐,而且价格适中,但效果斐然。


许多人还赞同DJB的观点,即从不与服务DNS(区域文件存储)在同一系统上运行DNS缓存(递归解析器)。这是出于安全原因,因此一个漏洞不会影响另一个漏洞,反之亦然。
kubanczyk

2

我已经用Zonedit或几年了。它便宜(或免费),我添加了许多CNAME,A,MX,TXT,SRV和其他记录。


2

我们最近将内部所有服务都引入内部时,就将内部公共DNS引入了内部。这使我们可以根据需要尽快更新所有内容。由于Web服务器都在同一个站点中,因此目前对我们而言,不需要地理上分布的DNS。


2
您的电子邮件也托管在该站点吗?请记住,如果您在那里失去连接,并且电子邮件在该网络之外,则即使您的MX记录位于其他地方,它也会消失并且电子邮件将停止工作。如果它也位于同一站点上,那没什么大不了的,但是我过去几次都因为这个原因看到这种说法不合时宜。
贾斯汀·斯科特

1
是的,这些家伙正在同一站点上存放他们的电子邮件(我已经不在那家公司了)。
mrdenny

2

我两全其美。

我为网站托管公共DNS,而MX记录则位于“其他位置”。它可靠,安全,有效,我可以随意对其进行修改。我为服务付费,并且对价值感到满意。

但是在家里,我运行自己的缓存DNS服务器,而不是依靠我的ISP。我的ISP习惯于丢失DNS,DNS速度慢,DNS无效,有时他们想要扭曲DNS,以便将故障转移到他们认为我可能感兴趣的地方。我对使用ISP的DNS不感兴趣。因此,我有自己的缓存DNS服务器,并自己完成。在开始时(可能需要2个小时)进行了一些设置,但是很干净,我有可靠的DNS。一个月一次,cron作业会询问根服务器并刷新提示表。也许每年一次,我不得不摆弄它,例如将doubleclick.com发送到127.0.0.1或类似的地址。除此之外,它不需要干预,效果很好。


第三方DNS的问题在于,即使它关闭了,即使您的站点启动了,人们也无法访问您的域。(冗余非常多!)
cnst

2

如果您决定为自己的爱而托管自己的DNS,则每个站点有两个dns服务器。一个用于您的外部DNS,直接连接到您的防火墙,全世界都可以找到您。内部网络中还有一个单独的内部dns。


这种做法称为水平分割。坦率地说,它可能不适用于大多数设置,并且在大型企业之外已经相当陈旧了一段时间。
cnst

@cnst Split-horizo​​n(或split-view)在同一域名下为其他 区域提供服务,XTZ并未表示他推荐这样做。内部服务器通常提供不同的域名(可能是子域)。
kubanczyk

2

我还无法发表评论,但我的行为与freiheit相同。我们在DMZ中在此处运行主DNS,我们的ISP在全国范围内拥有数个从DNS服务器,在对主DNS进行更改后,这些服务器会立即进行更新。

它提供了两全其美的优势;立即控制和冗余。


2

每种方法都有优点和缺点,但是我绝对赞成在内部托管内部DNS。如果您在外部托管基本网络服务,则需要依靠的东西清单令人费解。CEO可能认为通过外部托管在DNS服务器上省钱是很聪明的,但是如果互联网链接断开,如果他收不到电子邮件,他会怎么想呢?


好答案,+ 1!快进到2017年,您是否仍然认为内部DNS是必经之路?:-)
cnst

1
@cnst ffwd到2017年,我不再有足够的经验来提出建议。
Maximus Minimus

2

根据经验,如果您想引起拒绝服务攻击,请托管自己的DNS。和您自己的网站。

我相信有些事情你不应该自己做。DNS托管是其中之一。就像许多人说过的那样,您将需要冗余服务器,连接和物理位置,并且即使是规模较小的托管公司,您也将无法获得弹性。

托管自己的DNS的最大好处是可以立即进行更改。是否需要缩短TTL,以进行即将到来的迁移?您可能会编写一个脚本在自己的服务器上执行该操作;对于托管DNS,您可能需要登录并手动更改记录,甚至更糟的是,致电提供商,获得3个级别的支持,直到最终达到可以拼写DNS的级别,只是让他们告诉您他们将提交DNS。 2-3天后发生变化。


2

我在Linux服务器上使用BIND运行自己的DNS。我目前在英国伦敦,佛罗里达迈阿密,加利福尼亚圣何塞和新加坡有四个办事处。效果很好,我拥有完全的控制权。数据中心的稳定性非常重要,因此我选择了好的DC来运行服务器(而不依赖ISP或其他“未知”基础架构)。我能够使用我根据严格标准选择的世界一流的DC在世界任何地方设置DNS服务器和其他服务。坚如磐石的DNS对于我运行的电子邮件和Web服务至关重要。


大声笑,很好的广告素材,我能得到您的市场部门及其抄袭员的电话号码吗?我标记为明显的垃圾邮件候选者,但与此同时,如果该标志也被拒绝,我将不会感到惊讶!
cnst

2

我们应该托管自己的域名服务器吗?

是的,而且你也应该用大的第三方DNS提供商的一个或多个。出于多种原因,混合解决方案可能是最安全的长期方法,尤其是在您的企业对客户有SLA或合同要求的情况下。如果您是b2b,则更是如此。

如果您的主DNS服务器(隐藏的或公共的)是事实的来源,那么您可以在操作上保护自己,避免陷入供应商特定的功能中。一旦开始使用其超越基本DNS的精妙功能,您可能会发现切换到另一个提供商或托管自己的DNS是有问题的,因为您现在必须复制这些功能。Dyn和UltraDNS提供的站点运行状况检查和DNS故障转移就是例子。这些功能很棒,但应视为一次性功能而不是依赖关系。这些功能在提供者之间也不能很好地复制。

如果只有第三方供应商,则在受到目标DDoS攻击时,正常运行时间可能会受到影响。如果您只有自己的DNS服务器,那么当您成为DDoS攻击的目标时,正常运行时间可能会受到影响。

如果您拥有一个或多个DNS提供程序以及您自己的分布式DNS服务器,它们是您控制的隐藏主DNS服务器的从属服务器,那么您将确保您没有被锁定在特定的供应商中,并且始终保持对区域的控制,并且攻击必须使您的服务器以及作为您服务器的奴隶的一个或多个主要提供程序都崩溃。缺少任何这些都会降低服务质量,而导致严重停机。

拥有自己的主服务器(理想情况下是隐藏的,未发布的服务器)的另一个优点是,您可以构建自己的API并以适合您业务需求的方式对其进行更新。使用第三方DNS供应商,您将需要适应他们的API。每个供应商都有自己的;或在某些情况下,只有一个Web UI。

此外,如果您的主服务器在您的控制之下,而供应商遇到问题,那么仍然可以访问您的主服务器的任何从服务器都将获得更新。当您意识到在大型DDoS事件期间让第三方作为您的主人是错误的,并且您无法更改不受攻击的提供程序上的任何服务器时,您会希望拥有这种东西。

从法律角度来看,防止供应商锁定对于您的业务也可能很重要。例如,Dyn可能被Oracle收购。这使他们处于独特的位置,可以收集Dyn所有客户的DNS统计信息。这样做的竞争性方面可能会带来法律风险。也就是说,我不是律师,因此您应该就此事咨询您的法律和公关团队。

如果我们想深入研究杂草,则该主题还有许多其他方面。

[编辑] 如果这仅适用于小型个人/爱好域,则运行一个小型DNS守护程序的两个VM彼此不在同一数据中心中就足够了。我这样做是出于我自己的个人领域。我不清楚您的域名是从事业务还是业余爱好。无论您能获得最小的VM,都绰绰有余。我将rbldnsd用于我的域;在我的记录中使用了很高的TTL,因为它占用了900 KB的内存,并且可以处理人们对它的任何滥用。


尽管过于以企业为中心,但这是一个合理的好答案,谁给了-1,请问自己能解释一下吗?
cnst

关于API和供应商合并的两个很好的新观点。两个DC都可以,但请注意每个DC都有单独的ISP,而不是同一ISP。
kubanczyk

@kubanczyk多点链接可以确保对它们进行可靠的自动故障转移和运行状况检查。
亚伦

1

将DNS托管视为您的公共服务的基础。就我而言,电子邮件对我们的业务至关重要。如果您在内部托管DNS,并且互联网连接中断,则DNS记录可能会过时,从而迫使您的域不可用。

因此,就我而言,如果找不到我们域的MX记录,则电子邮件将立即被拒绝。

因此,我的DNS由外部托管。

如果MX记录可用,但我们的Internet连接已断开,则邮件将继续在尝试向我们的域发送电子邮件的服务器上排队。


对于MX记录,我认为这是不正确的。实际上,这是cr.yp.to/djbdns/third-party.html中记录的误解之一
cnst

0

取决于。™

至少从2002年开始,我一直在运行自己的服务器并管理域。

我经常使用提供商的DNS服务器。

IP上的服务器可用但DNS不可用的次数太多了。

这是我的战争故事:

  • 莫斯科的一个庞大的提供商(第一个基于VZ的提供商)将我的VPS放在了一个便宜的“有价值”的DC中,但是他们的DNS却是一个流量昂贵的高级DC,流量很大,其中有两个不同的/ 24子网,这在当时是一些TLD所要求的。有一次,一场灾难(可能是2005年电力中断?)造成了灾难,他们昂贵的DC脱机,而我的站点(仍在莫斯科,但处于“有价值的” DC)只能通过其IP地址访问。

    有趣的是,即使在发生任何事件之前,我也清楚地记得traceroute,并且,我ns1ns2我的ISP 都注意到了一个DC ,要求他们也将一个DC移到“我的” DC,以实现地理冗余。他们放弃了地理冗余的想法,因为服务器已经处于可能的最高级DC中。

  • 我有另一个提供商(基于ISPsystem的第一个),他们在现场有一个ns,在国外有一个ns。长话短说,整个安装过程非常荒谬,“国外”服务器经常无法维护其区域,因此,即使我的整个服务器仍然运行平稳,我的域实际上也有一个额外的故障点,并且无法访问。

  • 我有一个运行自己网络的注册商。即使我的异地服务器启动了,它也一次又一次地关闭。我的DNS已关闭。

  • 我最近使用了多个大型云提供商作为辅助服务器,在那里我自己运行一个隐藏的主服务器。两家提供商至少更改了一次设置;永不发布任何公告;我的某些域停止解析。也与同一个提供者之一发生在我的一个朋友身上。 与第三方服务相比,这种情况发生的频率要高得多,而人们并不愿意公开承认。

简而言之,http ://cr.yp.to/djbdns/third-party.html在该主题上是绝对正确的。

麻烦第三方DNS的成本通常不值得。

拥有第三方DNS的缺点常常被不公平地忽视。

我要说的是,除非您的域已经使用了第三方服务(例如,用于Web,邮件,语音或文本),否则添加第三方DNS几乎总是适得其反,绝不是在每种情况下的最佳做法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.