Table of Contents
Dnsmasq is a lightweight, easy to configure DNS forwarder and DHCP server. It is designed to provide DNS and optionally, DHCP, to a small network. It can serve the names of local machines which are not in the global DNS. The DHCP server integrates with the DNS server and allows machines with DHCP-allocated addresses to appear in the DNS with names configured either in each host or in a central configuration file.
Dnsmasq supports static and dynamic DHCP leases and BOOTP for network booting of diskless machines.
An almost complete feature list can be found on the author's page.
The configuration documentation is contained in the configuration
file /etc/dnsmasq.conf
.
Here you'll find a few hints how to get a basic configuration of dnsmasq done. It is advised that you read the configuration file carefully, to get most out this application.
Beginning with Bering-uClibc 2.2 dnsmasq replaced dnscache on the base image. Additionally it adds features previously only available if both dhcpd and tinydns were loaded.
It will still be possible for users to switch back and use dnscache, dhcpd and tinydns.
dnsmasq works with various sources to provide resolving domain names on your local network. It is capable of using /etc/hosts, /etc/resolv.conf, additional resolv.conf files created by other applications like ppp, acting as secondary DNS in addition to primary DNS and is well integrated with the dhcpd part of dnsmasq.
Again we advise you to read the configuration file carefully, to understand how dnsmasq integrates into your network. We will describe a few standard settings for a basic LEAF image setup.
The first decision you have to make, is wether you like to use your own resolv.conf, or one created by an another application (see below ).
# Change this line if you want dns to get its upstream servers from # somewhere other that /etc/resolv.conf #resolv-file=
In case you use your own /etc/resolv.conf, leave this as is.
If you want dnsmasq to resolve your local and private domain as well (either from /etc/hosts or dhcp) set your domain as local
# Add local-only domains here, queries in these domains are answered # from /etc/hosts or DHCP only. local=/private.network/
Next choose the interface(s) dnsmasq should listen - the one connected your LAN. In a simple LEAF setup it is usually eth1.
# If you want dnsmasq to listen for requests only on specified interfaces # (and the loopback) give the name of the interface (eg eth0) here. # Repeat the line for more than one interface. interface=eth1
If you have more than one interface connected to local LAN's you may define the interface not to listen on - the interface to the Internet:
# Or you can specify which interface _not_ to listen on except-interface=eth0
At last you should configure to expand hostnames in your LAN and your domain:
# Set this (and domain: see below) if you want to have a domain # automatically added to simple names in a hosts-file. expand-hosts # Set the domain for dnsmasq. this is optional, but if it is set, it # does the following things. # 1) Allows DHCP hosts to have fully qualified domain names, as long # as the domain part matches this setting. # 2) Sets the "domain" DHCP option thereby potentially setting the # domain of all systems configured by DHCP # 3) Provides the domain part for "expand-hosts" domain=private.network
For debugging purposes you can enable "log-queries" at the end of dnsmasq.conf.
Now you're nearly done with a default setup. Read on in one of the following section best describing your Internet connection.
pppd (and so pppoe) is capable to receive the upstream nameservers
from your provider during connect and store them in
/etc/ppp/resolv.conf
.
To enable that feature you have to set the option
usepeerdns
either in
/etc/ppp/peers/dsl-provider
or
/etc/ppp/options
.
Next you have to change/enable dnsmasq to use that resolv.conf (probably additionally to /etc/hosts).
Edit /etc/dnsmasq.conf
and set the
resolv-file
:
# Change this line if you want dns to get its upstream servers from # somewhere other that /etc/resolv.conf resolv-file=/etc/ppp/resolv.conf
dhcpd gets upstream DNS servers while connecting to your ISP and
stores them in /etc/dhcpc/resolv.conf
.
Edit /etc/dnsmasq.conf
file and point to the
/etc/dhcpc/resolv.conf
file.
# Change this line if you want dns to get its upstream servers from # somewhere other that /etc/resolv.conf resolv-file=/etc/dhcpc/resolv.conf
Save your configuration before you reboot.
Edit /etc/resolv.conf
and add the upstream DNS
servers. There is no extra configuration needed for dnsmasq.
Save your configuration before you reboot.
Remove "nodns" in pump.conf
to let pump
update/overwrite /etc/resolv.conf
.
Save your configuration before you reboot.
dnsmasq provides an integrated DHCP server for your local network. At least two steps are required to enable the dhcp daemon and make it available to your LAN.
The integrated DHCP server dhcpd is disabled by default.
To enable it supply the range of addresses available for lease, and optionally a lease time:
# Uncomment this to enable the integrated DHCP server, you need # to supply the range of addresses available for lease and optionally # a lease time. If you have more than one network, you will need to # repeat this for each network on which you want to supply DHCP # service. dhcp-range=192.168.1.1,192.168.1.199,12h
Additionally dnsmasq supports various methods setting fixed ip's in your LAN, e.g. by name, MAC adress - please have a look for examples in dnsmasq conf.
dnsmasq integrated DHCP server also supports sending options to the hosts asking for a lease as described in RFC2132. For the common setting (subnet mask, default router, DNS server and broadcast address) dnsmasq sets sane defaults.