Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

Ubuntu Desktop 12.04 uses dnsmasq to perform DNS lookups, but it is not configured to cache these results. (I have checked this by using dig to resolve names and I do not see a large improvement in the response time after the first lookup.) How do I configure the NetworkManager-controlled dnsmasq to cache the results of DNS lookups?

share|improve this question

4 Answers 4

in 12.04 dnsmasq is started by NetworkManager with hard-coded (i.e. not configurable) parameter --cache-size=0.

manpages for dnsmasq says setting cache-size to zero disables caching. If you want to enable caching, you will probably have to disable the dnsmasq-plugin for NetworkManager to prevent NetworkManager from starting dnsmasq and start your own instance of dnsmasq with cache-size greater then zero.

here you can read how to disable dnsmasq-plugin for NetworkManager: http://askubuntu.com/a/131422/71057

share|improve this answer

In Ubuntu 12.10 you can enable the cache of the NetworkManager-controlled dnsmasq instance by putting the line

cache-size=1000

(with your preferred number of names instead of 1000) in a new file in /etc/NetworkManager/dnsmasq.d/. To activate this change you must then do

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

or reboot.

share|improve this answer

I didn't want to upgrade from 12.04, but still wanted dnsmasq managed by NetworkManager with caching enabled, but as the other answer said, --cache-size=0 is hard-coded and can't be changed with configuration.

So what I ended up doing was the following, as root:

mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.real

and then creating a new file, /usr/sbin/dnsmasq with the following content:

#!/bin/bash
args=$(echo "$@" | sed 's/--cache-size=0/--cache-size=1000/')
/usr/sbin/dnsmasq.real $args

make sure you chmod +x /usr/sbin/dnsmasq, and change the cache-size from 1000 to whatever you want, enjoy your LTS release with a DNS cache!

share|improve this answer

I was able to enable DNS caching in Linux Mint 13 (based on Ubuntu 12.04) using the method described in the first answer. I created a file /etc/NetworkManager/dnsmasq.d/cachedns containing the line cache-size=100, then restarted network-manager. Even though dnsmasq is executed by network-manager with a hard-coded --cache-size=0 on its command line, setting the cache-size in a config file overrides that value. You can verify that it works by doing this:

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

You should see a line that looks like this in the syslog, showing the cache size:

dnsmasq[17808]: cache size 100, 0/2 cache insertions re-used unexpired cache entries.
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.