是否可以创建自己的根DNS服务器?


14

我很好奇。我一直在阅读有关我们的ISP和互联网中间人如何记录和跟踪所有DNS请求的信息,基本上在许多日志中都留下了痕迹,也允许出于广告目的进行DNS劫持(我在看您的Cox Communications!)。

不管其他用于隐私/安全性的方法,我特别想知道是否有可能在自己的本地网络上运行DNS服务器,_实际具有根DNS服务器的区域信息(.com,.net等)。 org)域。

我知道您可以设置基本上只映射您所在域中的计算机的DNS,但是可以基本上请求将根DNS信息的副本/传输存储在自己的DNS服务器上,这样就可以绕过DNS进入互联网网页浏览的所有信息?

我希望我很清楚。我不想让我的DNS服务器只包含有关我的内部网络的信息-我希望它具有大型Internet DNS服务器所具有的重复信息,但我希望在我的DNS服务器上本地获取该信息。

是否有类似BGP区域传输的内容,但用于DNS?

更新:是否有任何产品/ OSS软件可以基本上将这些信息从外部DNS链“刮取”到本地缓存中,以便它们在需要时就可以使用,而在您明确请求域记录时可以对它们进行缓存?

Answers:


12

DNS在设计上不允许使用所有区域的权威副本,因为它利用了分层命名系统。

根服务器是权威的,用于标识负责所讨论的顶级域(TLD)的服务器。例如,解析www.example.net将首先查询根服务器以标识的权威名称服务器.net。该.net域名服务器将确定为授权域名服务器example.net,然后将返回记录www.example.net

您无法下载所有区域的副本。但是,您可以运行本地缓存名称服务器。缓存名称服务器将提供所有已解析记录的本地副本,这些副本将使用为该记录指定的生存时间(TTL)过期。请记住,我的解释是对DNS协议的简单描述,可以通过阅读Request for Comments中的定义进行详细探讨。

尽管可以通过运行本地缓存来避免NXDOMAIN劫持,但请记住,所有DNS解析流量仍将通过未加密的Internet连接进行传输。您的ISP可能会监视该流量,并仍然可以查看通信。您与ISP签订的合同以及您当地的法律将成为您确定如何处理通信的最终手段。您的ISP合同将包括服务条款,隐私政策以及您与ISP可能签订的任何其他合同。

使用加密协议是确保数据在传输过程中不被窃听的最佳方法之一。但是,即使这样也不能保证匿名性。那里还有其他协议,例如TorFreenet,它们试图将匿名引入Internet,因为它从未被设计成真正的匿名。


1
简单的答案是不,您不能。技术答案在华纳的回应中。没有一组服务器包含所有DNS信息。.根服务器只是将您引向一个TLD服务器,而该TLD服务器则将请求进一步发送给下游。
Rex 2010年

1
某些ISP提供了一种关闭NXDOMAIN劫持的方法。某些ISP提供了(基于愚蠢和虚假)基于cookie的机制来“关闭” NXDOMAIN劫持。也可以使用替代名称服务器来代替ISP的名称服务器。
Brian

3

一些东西:

如果将服务器配置为使用根提示而不使用转发器,则不必担心MITM问题(至少来自ISP和DNS劫持者)。对于所有外部DNS解析,您的服务器将查询根提示,这将使您引用到所涉及顶级域的gTLD服务器(.com等),然后会将您引至所涉及域的NS服务器。

如果您确实想创建自己的根服务器,那么您当然可以,尽管我看不出它将对您有多大帮助。在Windows DNS服务器上的操作方法如下:

下载DNS根区域文件,并将其另存为Windows DNS服务器上%systemroot%\ system32 \ dns目录中的root.dns,使用DNS区域创建向导创建一个名为“”的新主正向查找区域。(不带引号),请取消选择创建AD集成区域的选项,键入“”。对于区域名称(不带引号),选择使用现有文件的选项,区域文件名称字段将自动填充名称root.dns(如果未键入),则将选项保留为not允许按原样进行动态更新,请在完成向导的每个步骤后单击“完成”按钮。现在,您将拥有一台具有所有gTLD服务器的区域和区域记录的根服务器。

请注意,这将禁用服务器上的转发和根提示选项(因为您的服务器现在是根服务器),并且还请注意,如果gTLD信息发生更改,则服务器将无法注意到这些更改。


没有阻止ISP劫持根服务器IP(DNSsec除外)的方法……除此之外,更正。
克里斯S

1

对于密切相关的服务器,存在区域传输。这些功能非常类似于BGP公告。出于安全原因,这些通常会被其他服务器阻止。

如果您运行缓存名称服务器,它将复制根服务器列表,并且很快就会拥有.com,.net等的根目录。这是分配DNS的一个很好的理由。否则,每个人都将使用过时的数据。数据库的大小会很大,您对大多数数据都不感兴趣。

有多种选择可以降低DNS中毒的风险,好的软件可以解决众所周知的问题。有些组织致力于提供可作为上游提供者使用的已净化数据。这些将过滤掉一些中毒尝试。查看使用OpenDNS或Google作为上游提供商。

现在已经对根DNS区域进行了签名,并且我越来越多地看到我的邮件服务器报告DNS数据已签名。据报告,DNS签名是IPV6的要求。已签名的DNS使缓存中毒非常困难,但增加了管理DNS的难度。


1

您当然可以设置自己的服务器并使其对根服务器具有权威性,但是我不知道您可以用根服务器的zonefile预填充该服务器。您不能只是简单地请求一次zonetransfer,所以我想您必须通过保留缓存来填充它。

修改其他名称服务器上的root.hints以将它们指向您的私有根服务器,然后开始测试。

但是请记住,根服务器仅知道哪些服务器对TLD的授权,而其他什么都不知道。本质上,您将需要重新创建服务器的整个层次结构,这似乎是不可能的任务。


0

是的,DNS服务器的功能之一是对经常请求的查询进行本地缓存,而这常常会绕过指定的ttl。

您当然可以运行自己的DNS,没问题。但是根服务器和顶级域服务器,您将不得不问山姆大叔。

记录所有DNS请求是可能的,但是很疯狂。


但是依靠缓存将意味着您已经必须向该域发送DNS请求,这使试图仅拥有(或主要是)本地DNS请求的整个目的无法实现。
pythonnewbie 2010年

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.