一尘不染

Linux中的DNS缓存

linux

我对DNS缓存感到困惑。我正在编写一个小型转发代理服务器,并想在Linux系统上使用OS DNS缓存。

如果我理解正确,则在浏览器级别存在DNS缓存。然后在OS级别进行DNS缓存(Windows拥有DNS缓存。我不确定Linux发行版是否默认具有它)。

那么,浏览器/代理服务器如何使用OS DNS缓存?我正在尝试查找是否可以依靠Linux进行DNS缓存,而不是自己在代理内部进行缓存。

谢谢


阅读 686

收藏
2020-06-02

共1个答案

一尘不染

在Linux(可能是大多数Unix)上,除非安装并运行了nscd,否则没有操作系统级DNS缓存。即使这样,至少在Debian中默认禁用了nscd的DNS缓存功能,因为它已损坏。实际的结果是您的Linux系统很可能不执行任何OS级DNS缓存。

您可以在应用程序中实现自己的缓存(根据diegows的评论,就像对Squid所做的那样),但我建议不要这样做。这是很多工作,很容易弄错(nscd弄错了!!!),它可能不像专用DNS缓存那样容易调整,并且它复制了应用程序外部已经存在的功能。

如果使用您的软件的最终用户需要DNS缓存,因为DNS查询负载足够大而成为问题,或者到外部DNS服务器的RTT足够长而成为问题,那么他们可以安装缓存DNS服务器,例如Unbound与应用程序在同一台计算机上,配置为缓存响应并将未命中转发到常规DNS解析器。

2020-06-02