DHCP for Raspberry Pi
2 minute reading time
Recently I ran across the use case where I needed a Raspberry Pi to be connected to the Internet via a WiFI connection, while also providing DHCP leases through an Ethernet connection. I couldn’t find a great way to achieve this with
dhcpcd so instead I grabbed a tool that I’m more familiar with
Before we begin, we need to setup a static IP for the Ethernet interface (
eth0). Since the Ethernet interface will not be connected to the Internet, there’s no need to worry about a lot of the usual fields.
Below is the config for
dnsmasq which lives in
/etc/dnsmasq.conf. It essentially tells it to only serve DHCP leases on the Ethernet connection of the Raspberry Pi. The addresses it’ll lease out according to the config below is between 192.168.0.50-192.168.0.150 and is leased for 12 hours.
# Configuration file for dnsmasq.
# Format is one option per line, legal options are the same
# as the long options legal on the command line. See
# "/usr/sbin/dnsmasq --help" or "man 8 dnsmasq" for details.
# Listen on this specific port instead of the standard DNS port
# (53). Setting this to zero completely disables DNS function,
# leaving only DHCP and/or TFTP.
# If you want dnsmasq to listen for DHCP and DNS 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.
# Or you can specify which interface _not_ to listen on
# Or which to listen on by address (remember to include 127.0.0.1 if
# you use this.)
# 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
# Enable DHCPv6. Note that the prefix-length does not need to be specified
# and defaults to 64 if missing/
#dhcp-range=1234::2, 1234::500, 64, 12h