dnsmasq doesn't automatically reload when entry is added to /etc/hosts
I am struggling for a few days to configure dnsmasq to automatically reload or take into knowledge the new hosts added to /etc/hosts or to another configured file /etc/hosts.dnsmasq
.
Is this even possible?
There are two ways to cause dnsmasq to reload a hosts file:
-
As Aaron Copley noted in his comment, send
SIGHUP
to dnsmasq. From the man page:When it receives a SIGHUP, dnsmasq clears its cache and then re-loads /etc/hosts and /etc/ethers and any file given by --dhcp-hostsfile, --dhcp-hostsdir, --dhcp-optsfile, --dhcp-optsdir, --addn-hosts or --hostsdir. The dhcp lease change script is called for all existing DHCP leases. If --no-poll is set SIGHUP also re-reads /etc/resolv.conf. SIGHUP does NOT re-read the configuration file.
Note that dnsmasq doesn't restart in this case, but it does re-read a number of other files (and calls the dhcp lease change script for all existing DHCP leases). If triggering reloads too quickly is a concern, you can debounce the signal.
-
Use the
--hostsdir
option. Again from the man page:--hostsdir=<path>
Read all the hosts files contained in the directory. New or changed files are read automatically. See --dhcp-hostsdir for details.For reference, here is the documentation for
--dhcp-hostsdir
:--dhcp-hostsdir=<path>
This is equivalent to dhcp-hostsfile, except for the following. The path MUST be a directory, and not an individual file. Changed or new files within the directory are read automatically, without the need to send SIGHUP. If a file is deleted or changed after it has been read by dnsmasq, then the host record it contained will remain until dnsmasq receives a SIGHUP, or is restarted; ie host records are only added dynamically.This has a few advantages compared to the first option: dnsmasq will re-read the host file(s) automatically, no
SIGHUP
required, and; only the host files are reloaded, no other actions are taken.One potential disadvantage is that, as the documentation for
--dhcp-hostsdir
points out, new host entries are dynamically added but deleted or changed entries are not updated. Simon Kelley, the author of dnsmasq, has confirmed that this is by design.