如何在 NetworkManager 控制的 dnsmasq 中启用 DNS 缓存?

如何在 NetworkManager 控制的 dnsmasq 中启用 DNS 缓存?

Ubuntu Desktop 12.04 使用 dnsmasq 执行 DNS 查找,但它没有配置缓存这些结果。(我已经通过使用 dig 来解析名称检查了这一点,并且在第一次查找后我没有看到响应时间有很大改善。)如何配置 NetworkManager 控制的 dnsmasq 来缓存 DNS 查找的结果?

答案1

在 Ubuntu 12.10 中,您可以通过输入以下行来启用 NetworkManager 控制的 dnsmasq 实例的缓存

cache-size=1000

(使用您喜欢的名称数量,而不是 1000)在 中的一个新文件中/etc/NetworkManager/dnsmasq.d/。要激活此更改,您必须执行

sudo stop network-manager
sudo killall dnsmasq
sudo start network-manager

或重新启动。

答案2

我能够使用第一个答案中描述的方法在 Linux Mint 13(基于 Ubuntu 12.04)中启用 DNS 缓存。我创建了一个/etc/NetworkManager/dnsmasq.d/cachedns包含行的文件cache-size=100,然后重新启动了网络管理器。即使 dnsmasq 由网络管理器在其命令行上用硬编码执行--cache-size=0,在配置文件中设置缓存大小也会覆盖该值。您可以通过执行以下操作来验证它是否有效:

sudo killall -USR1 dnsmasq
tail /var/log/syslog

您应该在系统日志中看到如下一行,显示缓存大小:

dnsmasq[17808]: cache size 100, 0/2 cache insertions re-used unexpired cache entries.

答案3

在 12.04 中,dnsmasq 由 NetworkManager 使用硬编码(即不可配置)参数启动--缓存大小=0

dnsmasq 的手册页说将 cache-size 设置为零会禁用缓存。如果您想启用缓存,您可能必须禁用 NetworkManager 的 dnsmasq-plugin 以防止 NetworkManager 启动 dnsmasq,并使用大于零的 cache-size 启动您自己的 dnsmasq 实例。

您可以在这里了解如何禁用 NetworkManager 的 dnsmasq-plugin:https://askubuntu.com/a/131422/71057

答案4

要重新启用缓存(使用具有 /etc/NetworkManager/dnsmasq.d 目录的 NetworkManager 版本),实际上只需在该目录中放置一个内容为“cache-size=X”的文件即可(对于默认的 dnsmasq,X 为 150)。其中的文件将覆盖命令行中给出的硬编码参数。

相关内容