You can do this with
Dnsmasq accepts DNS queries and either answers them from a small, local, cache or forwards them to a real, recursive, DNS server. It loads the contents of /etc/hosts so that local hostnames which do not appear in the global DNS can be resolved and also answers DNS queries for DHCP configured hosts.
dnsmasq is just a case of using apt-get.
sudo apt-get install dnsmasq
Setup dnsmasq as DNS DHCP
Looking at the file
/etc/dnsmasq.conf first. The lines are listed are those that I changed from their defaults. Just uncomment and amend them as necessary. (Remove the ‘#’ from the beginning of the line).
sudo nano /etc/dnsmasq.conf
dhcp-option=19,0 # ip-forwarding off
dhcp-option=44,192.168.0.5 # set netbios-over-TCP/IP aka WINS
dhcp-option=45,192.168.0.5 # netbios datagram distribution server
dhcp-option=46,8 # netbios node type
What these lines will do for you.
domain-needed This tells
dnsmasq to never pass short names to the upstream DNS servers. If the name is not in the local
/etc/hosts file then “not found” will be returned.
bogus-priv All reverse IP (192.168.x.x) lookups that are not found in
/etc/hosts will be returned as “no such domain” and not forwarded to the upstream servers.
no-resolv Do not read
resolv.conf to find the servers where to lookup dns.
no-poll Do not poll
resolv.conf for changes
server=18.104.22.168 Set one or more
DNS servers to use when addresses are not local. These are open
local=/example.com/ Our local domain, queries in these domains are answered from
/etc/hosts or the static-hosts files.
address=/doubleclick.net/127.0.0.1 Use this force an address for the specified domains. e.g to block adverts force
no-hosts This options stops
dnsmasq using the local
/etc/hosts file as a source for lookups .
dnsmasq to use this file for lookups. It is in the same format as
expand_hosts So we can see our local hosts via our home domain without having to repeatedly specify the domain in our
domain This is your local domain name. It will tell the
DHCP server which host to give out IP addresses for.
dhcp-range This is the range of IPs that
DHCP will serve:
192.168.0.50, with a lease time of 72 hours. The lease time is how long that IP will be linked to a host.
dhcp-host=mylaptop,192.168.0.199,36h Any machine saying they are
hostname = ‘mylaptop’ gets this
dhcp-option=option:router,192.168.0.1 When a host is requesting an
IP address via
DHCP also tell it the gateway to use.
dhcp-option=option:ntp-server,192.168.0.5 When a host is requesting an IP address via
DHCP also tell it the
NTP to use.
In the file
/etc/dnsmasq_static_hosts.conf you can add a list of local machines with static IP addresses in the same format as the hosts file. It is also an easy way of creating aliases or CNAME records.
192.168.0.8 mail mail.example.com
192.168.0.9 smtp smtp.example.com
192.168.0.120 mythtvbox mythtvbox.example.com
Starting and stopping the service
sudo service dnsmasq start
sudo service dnsmasq stop
sudo service dnsmasq restart
And one more thing to do. Terminate all other
DHCP servers on local network. Your
DHCP/DNS server must be only one.