我对 DNS 缓存感到困惑。我正在编写一个小型转发代理服务器,并希望在 Linux 系统上使用 OS DNS 缓存。
如果我理解正确,浏览器级别有 DNS 缓存。然后是操作系统级别的 DNS 缓存(Windows 有它。我不确定 Linux 发行版是否默认有它)。
浏览器或代理服务器如何使用操作系统 DNS 缓存?我试图找出是否可以依靠 Linux 进行 DNS 缓存,而不是在我的代理中自己进行。
原文由 agent.smith 发布,翻译遵循 CC BY-SA 4.0 许可协议
我对 DNS 缓存感到困惑。我正在编写一个小型转发代理服务器,并希望在 Linux 系统上使用 OS DNS 缓存。
如果我理解正确,浏览器级别有 DNS 缓存。然后是操作系统级别的 DNS 缓存(Windows 有它。我不确定 Linux 发行版是否默认有它)。
浏览器或代理服务器如何使用操作系统 DNS 缓存?我试图找出是否可以依靠 Linux 进行 DNS 缓存,而不是在我的代理中自己进行。
原文由 agent.smith 发布,翻译遵循 CC BY-SA 4.0 许可协议
以下是另外两个可用于 Linux 上的 DNS 缓存的软件包:
为 DNS 转发和缓存配置软件后,然后在 /etc/resolv.conf 中将系统的 DNS 解析器设置为 127.0.0.1。
如果您的系统正在使用 NetworkManager,您可以尝试使用 — 中的 /etc/NetworkManager/NetworkManager.conf
dns=dnsmasq
选项,或者您可以将连接设置更改为自动(仅地址),然后在 /etc/NetworkManager/dispatcher.d
获取 DHCP 名称服务器的目录,在您的 DNS 缓存软件中将其设置为 DNS 转发服务器,然后触发配置重新加载。
原文由 Zan Lynx 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答804 阅读✓ 已解决
2 回答3.2k 阅读
在 Linux(可能还有大多数 Unix)上,除非安装并运行了 nscd ,否则没有操作系统级别的 DNS 缓存。即便如此,至少在 Debian 中默认禁用 nscd 的 DNS 缓存功能,因为 它已损坏。实际的结果是您的 Linux 系统很可能不执行任何操作系统级别的 DNS 缓存。
您可以在您的应用程序中实现自己的缓存(就像他们为 Squid 所做的那样,根据 diegows 的评论),但我建议不要这样做。工作量很大,很容易出错(nscd 搞错了!!!),它可能不像专用 DNS 缓存那样容易调整,而且它复制了应用程序之外已经存在的功能。
如果使用您的软件的最终用户需要 DNS 缓存,因为 DNS 查询负载大到足以成为问题,或者到外部 DNS 服务器的往返时间足够长而成为问题,他们可以安装缓存 DNS 服务器例如 Unbound 与您的应用程序在同一台机器上,配置为缓存响应并将未命中转发到常规 DNS 解析器。