如何在NetworkManager控制的dnsmasq中启用DNS缓存?
Ubuntu Desktop 12.04使用dnsmasq执行DNS查找,但未配置为缓存这些结果。 (我已经通过使用dig来解决这个问题来解决这个问题,我没有看到第一次查找后响应时间有很大的改进。)如何配置NetworkManager控制的dnsmasq来缓存DNS查找的结果?
在Ubuntu 12.10中,您可以通过放置线来启用NetworkManager控制的dnsmasq实例的缓存
cache-size=1000
(在/etc/NetworkManager/dnsmasq.d/中的新文件中使用您的首选名称而不是1000)。 要激活此更改,您必须这样做
sudo stop network-manager sudo killall dnsmasq sudo start network-manager
或重新启动。
我能够使用第一个答案中描述的方法在Linux Mint 13(基于Ubuntu 12.04)中启用DNS缓存。 我创建了一个包含行cache-size=100
的文件/etc/NetworkManager/dnsmasq.d/cachedns
,然后重新启动了network-manager。 即使dnsmasq由网络管理器在其命令行上使用硬编码的--cache-size=0
执行,但在配置文件中设置cache-size会覆盖该值。 您可以通过执行以下操作validation它是否有效:
sudo killall -USR1 dnsmasq tail /var/log/syslog
您应该在syslog中看到一行如下所示,显示缓存大小:
dnsmasq[17808]: cache size 100, 0/2 cache insertions re-used unexpired cache entries.
我不想从12.04升级,但仍然希望NetworkManager管理的dnsmasq启用了缓存,但正如另一个答案所说, – cache-size = 0是硬编码的,无法通过配置进行更改。
所以我最终做的是以下,作为root:
mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.real
然后使用以下内容创建一个新文件/ usr / sbin / dnsmasq:
#!/bin/bash args=$(echo "$@" | sed 's/--cache-size=0/--cache-size=1000/') /usr/sbin/dnsmasq.real $args
确保chmod +x /usr/sbin/dnsmasq
,并将缓存大小从1000更改为您想要的任何内容,享受带有DNS缓存的LTS版本!
在12.04中,dnsmasq由NetworkManager启动,带有硬编码(即不可配置)参数–cache-size = 0 。
dnsmasq的联机帮助页称将cache-size设置为零会禁用缓存。 如果要启用缓存,则可能必须禁用NetworkManager的dnsmasq-plugin以阻止NetworkManager启动dnsmasq并启动自己的dnsmasq实例,其缓存大小大于零。
在这里你可以阅读如何禁用NetworkManager的dnsmasq-plugin: https : //askubuntu.com/a/131422/71057
要重新启用缓存(使用具有/etc/NetworkManager/dnsmasq.d目录的NetworkManager版本),实际上就可以将文件放在该目录中,内容为“cache-size = X”(X为150)对于默认的dnsmasq会有)。 其中的文件覆盖命令行上给出的硬编码参数。
在Ubuntu 14.04中,我不得不编辑/etc/default/dnsmasq
并设置ENABLED=1
我还将cache-size=1000
放在那里以及我找到的所有其他dnsmasq配置文件中。