# Static portion of dnsmasq config. Configuration of DHCP
# operation is handled via catawampus.
# https://gfiber.googlesource.com/vendor/google/catawampus/

# The following two options make you a better netizen, since they
# tell dnsmasq to filter out queries which the public DNS cannot
# answer, and which load the servers (especially the root servers)
# unnecessarily. If you have a dial-on-demand link they also stop
# these requests from bringing up the link unnecessarily.

# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv

# Run with reduced privileges
user=nobody
group=nobody

# The following DHCP options set up dnsmasq in the same way as is specified
# for the ISC dhcpcd in
# http://www.samba.org/samba/ftp/docs/textdocs/DHCP-Server-Configuration.txt
# adapted for a typical dnsmasq installation where the host running
# dnsmasq is also the host running samba.
dhcp-option=19,0           # option ip-forwarding off
dhcp-option=44,0.0.0.0     # set netbios-over-TCP/IP nameserver(s) aka WINS server(s)
dhcp-option=45,0.0.0.0     # netbios datagram distribution server
dhcp-option=46,8           # netbios node type

# Send an empty WPAD option. This may be REQUIRED to get windows 7 to behave.
dhcp-option=252,"\n"

# Set the DHCP server to authoritative mode. In this mode it will barge in
# and take over the lease for any client which broadcasts on the network,
# whether it has a record of the lease or not. This avoids long timeouts
# when a machine wakes up on a new network. DO NOT enable this if there's
# the slightest chance that you might end up accidentally configuring a DHCP
# server for your campus/company accidentally. The ISC server uses
# the same option, and this URL provides more information:
# http://web.archive.org/web/20130212014725/http://www.isc.org/files/auth.html
dhcp-authoritative

# Don't listen for DHCP requests on the uplink.
except-interface=wan0
except-interface=wan0.2

# Store leases in flash
dhcp-leasefile=/config/dhcp.leases

# Log lots of extra information about DHCP transactions.
log-dhcp

# default dns cache size of 150 is awfully small
cache-size=2048

# send DNS queries to all upstream servers, use the first response
all-servers

# more configuration files
conf-dir=/config/dnsmasq
conf-dir=/tmp/dnsmasq

# script to be invoked on lease changes
dhcp-script=/bin/dhcp-script
