DHCP for Raspberry Pi

Brandon Rozek

February 15, 2021

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 dnsmasq.

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.

In /etc/dhcpcd.conf

interface eth0
fallback nodhcp

profile nodhcp
static ip_address=

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 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 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
# service.

# 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