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)。其中的文件将覆盖命令行中给出的硬编码参数。