Answers:
在Ubuntu 12.10中,您可以通过放置以下行来启用NetworkManager控制的dnsmasq实例的缓存
cache-size=1000
(使用您的首选名称数而不是1000)(在/etc/NetworkManager/dnsmasq.d/中)。要激活此更改,您必须执行
sudo stop network-manager
sudo killall dnsmasq
sudo start network-manager
或重新启动。
sudo systemctl stop NetworkManager
我能够使用第一个答案中所述的方法在Linux Mint 13(基于Ubuntu 12.04)中启用DNS缓存。我创建了一个/etc/NetworkManager/dnsmasq.d/cachedns
包含line 的文件cache-size=100
,然后重新启动network-manager。即使dnsmasq由网络管理器--cache-size=0
在其命令行上进行了硬编码执行,但在配置文件中设置缓存大小仍会覆盖该值。您可以通过执行以下操作验证其是否有效:
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的联机帮助页说,将缓存大小设置为零会禁用缓存。如果要启用缓存,则可能必须禁用NetworkManager的dnsmasq插件,以防止NetworkManager启动dnsmasq并以大于零的缓存大小启动自己的dnsmasq实例。
在这里您可以阅读如何为NetworkManager禁用dnsmasq-plugin:https : //askubuntu.com/a/131422/71057