我经常访问的网站数量并不多。为了提高隐私性,我希望直接访问这些网站,而不需要每次访问时都进行远程 DNS 解析,但我也不想记住 IP 地址。
是否可以自动将 DNS 条目存储在本地并在我下次再次访问该站点时使用它,并且仅当我的本地“DNS 服务器”上没有条目时才回退到我的 ISP 的 DNS 服务器?
我对 Windows 的解决方案特别感兴趣(如果这很重要的话,还有 Firefox),但 Linux 的答案也不错(因为我最近更经常使用它)。如果这能带来更优雅或更强大的解决方案/答案,我也可以使用 Raspberry Pi。
总结一下:第一次访问网站 -> 使用 ISP DNS -> 将其存储在某个本地 DNS 数据库(同一台计算机或本地网络) -> 第二次访问 -> 使用此本地 DNS 数据库(+隐私和+速度)。
答案1
这就是路由器的 DNS 服务器的功能。它会记住您过去访问过的网站并存储其 IP 地址。如果无法解析,它会尝试通过互联网进行解析。
如果不想这样,您可以编辑本地主机文件并在本地添加域和 IP 地址。
请注意,即使您将 DNS 存储在本地,记录仍然基于 IP 地址进行,因此您仍然可以被追踪。使用此方法无法保证隐私。
答案2
在 Windows 上,此功能内置于操作系统的解析器中。对于 Linux,您可以启用 nscd 缓存,但通常认为这不是一个好主意。在这两个平台上,域名都缓存在同一个进程中,因此使用 Firefox 不会在每次访问页面时发出新的查询。
通常,它们会缓存 DNS 记录上的“TTL”记录所定义的缓存量。每条记录都设置了一个时间,在此时间之后必须要求该记录。这是因为互联网上的大多数主要服务都会频繁移动 IP 地址,这是所谓的“全局服务负载平衡”的一部分。这会不断将您的流量转移到可用的负载最少的服务,而不是始终将您指向一个固定点。在许多情况下,您还可以让用于为给定主机提供服务的 IP 地址停止为其提供服务,例如,如果主机移动。这在使用 AWS 中的 ELB 的服务中尤其常见。
您可以设置一个使用 bind 强制缓存 DNS 记录的路由器,但实际上普遍认为这是一个坏主意,因为您很快就会开始体验到非常非常糟糕的互联网。使用 /etc/hosts 等也是如此。
如果您想要匿名 DNS,您可以付费购买此类服务,或者可以使用“无解析”代理模式的 tor,这样 DNS 查询就在出口隧道上执行。对于仅限本地的操作,您可以使用启用中继但可能不记录的 DNS 提供商,或者可以使用 VPN 来访问 DNS 流量。