<HTML>
<HEAD>
<TITLE> Configuring Dnsmasq.</TITLE>
</HEAD>
<BODY BGCOLOR="WHITE"> 
<H1 ALIGN=center>Dnsmasq setup</H1> 
<H2>Installation.</H2>
To compile and install dnsmasq, the following command (as root) is enough.

<PRE>
make install
</PRE>

You might want to edit config.h. Dnsmasq has
been run on (at least) Linux, uCLinux, AIX 4.1.5, FreeBSD 4.4 OpenBSD and Tru64 4.x 

Dnsmasq is normally  run on a firewall machine (the machine with the
modem or other connection to your ISP.) but it can run on any machine
with access to the ISPs nameservers.

Put the binary in <TT>/usr/local/sbin/dnsmasq</TT> (running <TT>make install</TT>  will do this) and arrange for it
to be started at boot time.

Note that dnsmasq needs to run as root, since it binds privileged ports. It will drop root privileges after start-up. Dnsmasq
logs problems using the syslog facility as a daemon. It logs debugging
information to local0
<P>
<H2>Configuration.</H2>
Configuration for dnsmasq is pretty simple in almost all cases. The
program has collected a fair few options as it has developed but most of them
are not needed most of the time. A machine which already has a DNS
configuration (ie one or more external nameservers in <TT>/etc/resolv.conf</TT>
and any local hosts in <TT>/etc/hosts</TT>) can be turned into a nameserver
simply by running dnsmasq, with no options or configuration at
all. Set the IP address of the machine running dnsmasq as the DNS
server in all the other machines on your network, and you're done.
<P>
With a few option flags, it is possible to make dnsmasq do more clever
tricks. Options for dnsmasq can be set either on the command line
when starting dnsmasq, or in its configuration file, <TT>/etc/dnsmasq.conf</TT>.

<h2>Making the nameserver machine use dnsmasq.</h2>
In the simple configuration described above, processes local to the
machine will not use dnsmasq, since they get their information about
which nameservers to use from /etc/resolv.conf, which is set to the
upstream nameservers. To fix this, simply replace the nameserver in
<TT>/etc/resolv.conf</TT> with the local address 127.0.0.1 and give the
address(es) of the upstream nameserver(s) to dnsmasq directly. You can
do this using either the <TT>server</TT> option, or by putting them into
another file, and telling  dnsmasq about its location with 
the <TT>resolv-file</TT> option. 

<h2>Automatic nameserver configuration.</h2>
The two protocols most used for automatic IP network configuration
(PPP and DHCP) can determine the IP addresses for nameservers automatically.
The daemons can be made to write out a file in the resolv.conf format with the
nameservers in which is perfect for dnsmasq to use. When the
nameservers change, for instance on dialling into a new ISP using PPP,
dnsmasq will automatically re-read this file and begin using the new
nameserver(s) completely transparently.

<h3>Automatic DNS server configuration with PPP.</h3>
Later versions of pppd have an option "usepeerdns" which instructs it to write a file containing
the address(es) of the DNS severs in <TT>/etc/ppp/resolv.conf</TT>. Configure dnsmasq
as above with "nameserver 127.0.0.1" in <TT>/etc/resolv.conf</TT> and run dnsmasq 
with to option <TT>resolv-file=/etc/ppp/resolv.conf</TT>.
<P>
On Redhat (at least versions 7.1, 7.2 and 7.3) you can set pppd
options by adding "PPPOPTIONS=usepeerdns" to
<TT>/etc/sysconfig/network-scripts/ifcfg-ippp0</TT>.  In the same file, make sure
that "PEERDNS=no" to stop RedHat's network initscripts from copying
<TT>/etc/ppp/resolv.conf</TT> into <TT>/etc/resolv.conf</TT>.<BR>

On SuSE (at least version 8.1, and 8.2) you should use YaST to activate
<TT>[x] Modify DNS when connected</TT> then stop SuSEs network initscripts 
from copying <TT>/etc/ppp/resolv.conf</TT> into <TT>/etc/resolv.conf</TT> 
by modifying MODIFY_RESOLV_CONF_DYNAMICALLY="no" in <TT>/etc/sysconfig/network/config</TT>.
 

<h3>Automatic DNS server configuration with DHCP.</h3>
You need to get your DHCP client to write the address(es) of the DNS
servers to a file other than <TT>/etc/resolv.conf</TT>. For dhcpcd, the
<TT>dhcpcd.exe</TT> script gets run with the addresses of the nameserver(s) in
the shell variable <TT>$DNS</TT>. The following bit of shell script
uses that to write a file suitable for dnsmasq. 
<PRE>

echo -n >|/etc/dhcpc/resolv.conf
dnsservers=${DNS//,/ }
for serv in $dnsservers; do
    echo "nameserver $serv" >>/etc/dhcpc/resolv.conf
done

</PRE>
 
Remember to give dhcpcd the <TT>-R</TT> flag to stop it overwriting 
<TT>/etc/resolv.conf</TT>.

<P>
For other DHCP clients it should be possible to achieve the same effect.

<h3> DHCP and PPP.</h3>
On a laptop which may potentially connect via a modem and PPP or
ethernet and DHCP it is possible to combine both of the above
configurations. Running dnsmasq with the flags
<TT>resolv-file=/etc/ppp/resolv.conf resolv-file=/etc/dhcpc/resolv.conf</TT>  
makes it poll <B>both</B> files and use whichever was updated
last. The result is automatic switching between DNS servers.
</H3>

<H2> Integration with DHCP.</H2>
Dnsmasq reads <TT>/etc/hosts</TT> so that the names of local machines are
available in DNS. This is fine when you give all your local machines
static IP addresses which can go in <TT>/etc/hosts</TT>, but it doesn't work 
when local machines are configured via DHCP, since the IP address
allocated to machine is not fixed. Dnsmasq comes with an integrated
DHCP daemon to solve this problem.
<P>
The dnsmasq DHCP daemon allocates addresses to hosts on the network and tries
to determine their names. If it succeeds it add the name and address
pair to the DNS. There are basically two ways to associate a name with
a DHCP-configured machine; either the machine knows its name which it
gets a DHCP lease, or dnsmasq gives it a name, based on the MAC
address of its ethernet card. For the former to work, a machine needs to know its name when it
requests a DHCP lease. For dhcpcd, the -h option specifies this. The
names may be anything as far as DHCP is concerned, but dnsmasq adds
some limitations. By default the names must no have a domain part, ie
they must just be alphanumeric names, without any dots.  This is a
security feature to stop a machine on your network telling DHCP that
its name is "www.microsoft.com" and thereby grabbing traffic which
shouldn't go to it. A domain part is only allowed by dnsmasq in DHCP machine names
if the <TT>domain-suffix</TT> option is set, the domain part must match the
suffix.
<P>
As an aside, make sure not to tell DHCP to set the hostname when it
obtains a lease (in dhcpcd that's the -H flag.)
This is not reliable since the DHCP server gets the
hostname from DNS which in this case is dnsmasq. There is a race
condition because the host's name in the DNS may change as a
result of it getting a DHCP lease, but this does not propagate before
the name is looked up. The net effect may be that the host believes it
is called something different to its name in the DNS. To be safe, set
the hostname on a machine locally, and pass the same name to DHCP when
requesting a lease.
<P>
<H2>Setting up a mailhub.</H2>
If you generate mail on the machines attached to your private network, you may
 be interested in the MX record feature of dnsmasq. This allows you to have all
 the machines on your network use your firewall or another machine as a "smarthost" and 
deliver mail to it. The details of how to set this up are highly dependent on
your mailer, system and distribution. The only thing that's relevant to dnsmasq is that the mailer 
needs to be able to interrogate the DNS and find an MX record for your mailhub.
<P>
By giving dnsmasq the <TT>mx-host</TT> option
you instruct dnsmasq to serve an MX record for the specified address. 
By default the MX record 
points to the machine on which dnsmasq is running, so mail delivered to that
name will get sent to the mailer on your firewall machine. You can
have the MX record point to another machine by using the <TT>mx-target</TT>
option.
<P>
In some cases it's useful for all local machines to see an MX record
pointing at themselves: this allows mailers which insist on an MX record and
don't fall back to A records to deliver mail within the
machine. These MX records are enabled using the <TT>selfmx</TT> option.

<H2>Using special servers.</H2>
Dnsmasq has the ability to direct DNS queries for certain domains to
specific upstream nameservers. This feature was added for use with
VPNs but it is fully general. The scenario is this: you have a
standard internet connection via an ISP, and dnsmasq is configured to
forward queries to the ISP's nameservers, then you make a VPN
connection into your companies network, giving access to hosts inside
the company firewall. You have access, but since many of the internal hosts
aren't visible on the public internet, your company doesn't publish 
them to the public DNS and you can't get their IP address from the ISP
nameservers. The solution is to use the companies nameserver for
private domains within the company, and dnsmasq allows this. Assuming
that internal company machines are all in the domain internal.myco.com
and the companies nameserver is at 192.168.10.1 then the option
<TT>server=/internal.myco.com/192.168.10.1</TT> will direct all
queries in the internal domain to the correct nameserver. You can
specify more than one domain in each server option. If there is
more than one nameserver just include as many
<TT>server</TT> options as is needed to specify them all.  

<H2>Local domains.</H2>
Sometimes people have local domains which they do not want forwarded
to upstream servers. This is accommodated by using server options
without the server IP address. To make things clearer <TT>local</TT>
is a synonym for <TT>server</TT>. For example the option
<TT>local=/localnet/</TT> ensures that any domain name query which ends in
<TT>.localnet</TT> will be answered if possible from
<TT>/etc/hosts</TT> or DHCP, but never sent to an upstream server.

<H2>Defeating wildcards in top level domains.</H2>
In September 2003 Verisign installed a wildcard record in the .com and
.net top level domains. The effect of this is that queries for
unregistered .com and .net names now return the address of Verisign's
sitefinder service, rather than a "no such domain" response. To
restore the correct behaviour, you can tell dnsmasq the address of the
sitefinder host and have it substitute an NXDOMAIN reply when it sees
that address. The sitefinder address is currently  64.94.110.11, so
giving the option <TT>bogus-nxdomain=64.94.110.11</TT> will enable
this facility for Verisign. If other TLDs do that same thing you can
add the correct addresses for them too. See the dnsmasq FAQ for more
details on the <TT>bogus-nxdomain</TT> option.
 
<H2>Other configuration details.</H2>
By default dnsmasq offers DNS service on all the configured interfaces
of a host. It's likely that you don't (for instance) want to offer a
DNS service to the world via an interface connected to ADSL or
cable-modem so dnsmasq allows you to specify which interfaces it will
listen on. Use either the <TT>interface</TT> or <TT>address</TT> options to do this.
<P>
The <TT>filterwin2k</TT> option makes dnsmasq ignore certain DNS requests which
are made by Windows boxen every few minutes. The requests generally
don't get sensible answers in the global DNS and cause trouble by
triggering dial-on-demand internet links.
<P>
Sending SIGHUP to the dnsmasq process will cause it to empty its cache and 
then re-load <TT>/etc/hosts</TT> and <TT>/etc/resolv.conf</TT>.
<P> Sending SIGUSR1 (killall -10 dnsmasq) to the dnsmasq process will
cause to write cache usage statisticss to the log, typically
<TT>/var/log/syslog</TT> or <TT>/var/log/messages</TT>.
<P> The <TT>log-queries</TT> option tells dnsmasq to verbosely log the queries
it is handling and causes SIGUSR1 to trigger a complete dump of the
contents of the cache to the syslog.

<P>For a complete listing of options please take a look at the manpage
dnsmasq(8).
