我很好奇。我一直在阅读关于我们的 ISP 和互联网中间商如何记录和跟踪所有 DNS 请求的文章,基本上在许多日志中留下一串痕迹,还允许出于广告目的进行 DNS 劫持(我正在关注 Cox Communications!)。
无论其他隐私/安全方法如何,我特别想知道是否可以在您自己的本地网络上运行 DNS 服务器,该服务器实际上具有根 DNS 服务器(针对 .com、.net、.org)域的区域信息。
我知道您可以设置 DNS,它基本上只是映射您域中的机器,但是是否可以基本上请求将根 DNS 信息的副本/传输存储在您自己的 DNS 服务器上,以便您可以完全绕过从互联网获取 DNS 信息来进行网页浏览?
我希望我说得清楚。我不希望我的 DNS 服务器只包含有关我的内部网络的信息 - 我希望它包含大型互联网 DNS 服务器所拥有的重复信息,但我希望这些信息在我的 DNS 服务器上本地。
是否有类似 BGP 区域传输但适用于 DNS 的东西?
更新:是否有任何产品/OSS 软件可以从外部 DNS 链中大量“抓取”这些信息到本地缓存中,以便在您需要时随时可用,而不是在您明确请求域记录时缓存它们?
答案1
DNS 在设计上不允许拥有所有区域的权威副本,因为它采用分层命名系统。
根服务器具有权威性,可以识别负责顶级域名(顶级域名)有问题。例如,解析www.example.net
将首先查询根服务器以识别 的权威名称服务器.net
。该.net
名称服务器将识别 的权威名称服务器example.net
,然后返回 的记录www.example.net
。
您无法下载所有区域的副本。但是,您可以运行本地缓存名称服务器。缓存名称服务器将提供已解析的所有记录的本地副本,这些记录将使用为记录指定的生存时间 (TTL) 过期。请记住,我的解释是对 DNS 协议的简单描述,您可以通过阅读征求意见。
尽管NXDOMAIN 劫持可以通过运行本地缓存来避免,请记住,所有 DNS 解析流量仍将通过您的 Internet 连接以未加密的方式传输。您的 ISP 可能会监控该流量并仍然看到通信。您与 ISP 签订的合同以及当地法律将成为您确定如何处理您的通信的最终手段。您的 ISP 合同将包括服务条款、隐私政策以及您与 ISP 可能签订的任何其他合同。
使用加密协议是确保数据传输过程中不被窃听的最佳方法之一。然而,即使这样也不能保证匿名。还有其他协议,例如Tor和自由网,试图在互联网上引入匿名性,但互联网从来就不是被设计成真正匿名的。
答案2
一些东西:
如果您将服务器配置为使用根提示而不是使用转发器,那么您就不必担心 MITM 问题(至少来自 ISP 和 DNS 劫持者)。对于所有外部 DNS 解析,您的服务器都会查询根提示,它会将您引导至相关顶级域(.com 等)的 gTLD 服务器,然后它会将您引导至相关域的 NS 服务器。
如果您确实想创建自己的根服务器,当然可以,尽管我看不出这能给您带来什么好处。以下是在 Windows DNS 服务器上执行此操作的方法:
下载DNS 根区域文件并将其保存为 root.dns,保存在 Windows DNS 服务器上的 %systemroot%\system32\dns 目录中,使用 DNS 区域创建向导创建一个名为“。”的新主正向查找区域(不带引号),取消选择创建 AD 集成区域的选项,键入“。”作为区域名称(不带引号),选择使用现有文件的选项,区域文件名字段将自动填充名称 root.dns(如果不是,请输入),保留不允许动态更新的选项,在完成向导的每个步骤后单击完成按钮。您现在拥有一个根服务器,其中包含所有 gTLD 服务器的区域和区域记录。
请注意,这将禁用服务器上的转发和根提示选项(因为您的服务器现在是根服务器),还请注意,如果 gTLD 信息发生变化,您的服务器将无法注意到这些更改。
答案3
对于密切相关的服务器,有区域传输。这些功能与 BGP 公告非常相似。出于安全原因,这些通常会被其他服务器阻止。
如果您运行缓存名称服务器,它将复制根服务器列表,并很快获得 .com、.net 等的根。DNS 是分布式的,这有一个很好的理由。否则每个人都会使用过时的数据。数据库的大小会非常大,而且大多数数据对您来说都不感兴趣。
有一些方法可以降低 DNS 中毒的风险,而且好的软件可以在问题被发现时处理这些问题。有些组织致力于提供经过清理的数据,这些数据可以用作上游提供商。这些组织将过滤掉一些中毒企图。考虑使用 OpenDNS 或 google 作为上游提供商。
根 DNS 区域现已签名,我越来越多地看到我的邮件服务器报告 DNS 数据已签名。DNS 签名已被报告为 IPV6 的要求。签名 DNS 使缓存中毒变得非常困难,但增加了管理 DNS 的难度。
答案4
是的,DNS 服务器的功能之一是对经常请求的查询进行本地缓存,经常绕过指定的 ttl。
当然,您可以运行自己的 DNS,没问题。但是,根服务器和顶级域名服务器,您必须询问山姆大叔。
记录所有 DNS 请求是可能的,但这很疯狂。