Dnsmasq

Dnsmasq is a simple DHCP/DNS server which can be used in a local network of up to a 1000 clients. Key features are easy configuration and a small system footprint. It also has support for IPv6.

Installation
The installation of dnsmasq is fully supported by the package manager and portage tree. At first, make a proper USE flag selection.

Next, install and add it to the default runlevel if it needs to be started automatically.

Configuration
There are various resources that can be modified to change dnsmasq behavior. These include
 * the command line options as provided through
 * the main configuration file

Service configuration
In, the command line options passed on to the dnsmasq daemon at start-up can be configured.

Main configuration file
The main configuration of dnsmasq is done through its configuration file,. The file uses a  syntax and the one provided by the package is well documented and recommended to read through. Inside the file, or through the command line options, additional resources can be referred to (such as a DHCP hosts file).

Below is a sample configuration file:

After editing the configuration file, the service has to be restarted - reloading is supported, but for other resources.

Hosts file
The dnsmasq application uses the file as one of its sources for providing DNS services, unless the    command line argument is passed along.

If the file is updated, the dnsmasq service needs to receive a SIGHUP signal in order to reload the settings. This is also supported through the init scripts' reload command:

This behavior can also be disabled through the  parameter in the configuration file.

Additional hosts file
It is possible to refer to an (additional) hosts file to use as source for DNS queries. To do so, add the   command line option. It is also possible to pass a directory; in that case, all files inside that directory will be treated as additional hosts files.

Similar to the standard hosts file, a SIGHUP signal reloads the file.

This behavior can also be set through the  parameter in the configuration file.

Upstream nameservers
By default, dnsmasq uses the name servers specified in as its upstream nameservers.

A different file can be used through the   command line option.

This behavior can also be set through the  parameter in the configuration file.

Features
Dnsmasq supports DNS, TFTP, PXE, router advertisements and DHCP services. As such, it is a versatile network management tool for small and medium-sized networks.

DNS services
In order to (only) provide DNS services, first identify the upstream nameserver to use. If this is the same nameserver as specified in then no additional steps need to be taken. Otherwise, point dnsmasq to the proper file through the    command line. Its syntax is the one used by the file, although dnsmasq only looks at the nameserver definitions.

For instance:

Next point dnsmasq to this file through the configuration file:

To verify that the service is running (after restarting as the configuration file has just been changed), use the  command (provided through ), asking the DNS server (running on localhost in the following example) to resolve a local or remote address:

DNSSEC
Dnsmasq can validate DNSSEC data while passing through data. This can be accomplished by adding these lines to the config file:

The trusted anchor can be found on the iana.org site. After this change dnsmasq will return SERVFAIL and no DNS data if the validation fails. If the validation succeeds it sets the ad flag. In case the domain does not support DNSSEC dnsmasq behaves as before.

DHCP services
In order to enable the DHCP services of dnsmasq, use the  configuration setting.

For instance, to enable IPv6 address configuration through RA with infinite lease time, and IPv4 address configuration also with infinite lease time:

It is possible to use static definitions for known hosts, either through the main configuration file ( settings) or through a separate file. If a separate file is used, point dnsmasq to it through the  command line option. The advantage of the latter approach is that it is sufficient to send a SIGHUP signal (or reload the service) in order to reread the entries, whereas definitions in the configuration file require a full service restart.

For more information about the syntax of the  parameter please refer to the manual page or configuration file as its syntax is very extensive.

Usage
This section covers various usage scenarios (maintenance and operational tasks) for the dnsmasq service.

Resetting leases
Clients that had a network interface update which results in a different MAC address might not get the intended IP address immediately. This is because the dnsmasq service has provided this IP address to the old MAC address, and will wait until the lease of this address has expired before re-assigning it.

The dnsmasq service stores its leases in. If the lease needs to be removed faster, shut down the dnsmasq service, remove the lease from the file and start the service again.

Reloading non-main configuration settings
Next to the file, the dnsmasq service can use external definitions for the following services:
 * DHCP host configuration entries (through  command line option)
 * DHCP options (through  command line option)

When these files are modified, a SIGHUP signal has dnsmasq reload these configuration files.