Linux中的DNS缓存[已关闭]

niwlg2el  于 2022-11-02  发布在  Linux
关注(0)|答案(5)|浏览(131)

**已关闭。**此问题为not about programming or software development。目前不接受答案。

此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site相关,您可以留下评论,说明在何处可以找到此问题的答案。
13天前关闭。
机构群体在13天前审核了是否重新讨论此问题,并将其关闭:
原始关闭原因未解决
Improve this question
我对DNS缓存感到困惑。我正在写一个小型的前向代理服务器,想在Linux系统上使用OS DNS缓存。
如果我没理解错的话,浏览器级有DNS缓存,操作系统级也有DNS缓存(Windows有,我不确定Linux发行版是否默认有)。
浏览器或代理服务器如何使用操作系统DNS缓存?我正在尝试了解我是否可以依赖Linux进行DNS缓存,而不是在我的代理内自己做。

7vhp5slm

7vhp5slm1#

在Linux上(可能还有大多数Unix),除非安装并运行nscd,否则没有操作系统级的DNS缓存。即使这样,nscd的DNS缓存功能在默认情况下也是禁用的,至少在Debian中是这样,因为it's broken。实际结果是,您的Linux系统很可能没有任何操作系统级的DNS缓存。
你可以在你的应用程序中实现你自己的缓存(就像他们在Squid中所做的那样,根据diegows的评论),但是我建议不要这样做。这需要做很多工作,很容易出错(nscd做错了!!!),它可能不像专用DNS缓存那样容易调整,而且它复制了应用程序外部已经存在的功能。
如果使用您的软件的最终用户需要DNS缓存,因为DNS查询负载太大,或者到外部DNS服务器的往返时间太长,可能会造成问题,则他们可以在应用程序所在的同一台计算机上安装缓存DNS服务器(如Unbound),将其配置为缓存响应并将未命中转发到常规DNS解析器。

t2a7ltrp

t2a7ltrp2#

下面是另外两个可用于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转发服务器,然后触发配置重新加载。

bqjvbblv

bqjvbblv3#

目前,DNS缓存通过systemd-resolved在操作系统级别实现:
https://fedoraproject.org/wiki/Changes/systemd-resolved#Caching

mjqavswn

mjqavswn4#

Firefox包含一个DNS缓存。要禁用DNS缓存:
1.打开浏览器
1.在地址栏中输入about:config
1.右键单击属性列表,然后在上下文菜单中选择新建〉整数
1.输入“network.dnsCacheExpiration”作为首选项名称,输入0作为整数值
禁用后,Firefox将使用操作系统提供的DNS缓存。

相关问题