pyratelog masq of the dhcphantasm

The other day I wanted to test a new network device without connecting it to my home LAN. I knew the device was preconfigured to use DHCP so I very quickly set up one of my laptops as a DHCP server using dnsmasq.

After making sure the dnsmasq package was installed on the laptop I disconnected it from the WiFi and plugged it into a switch.

Configuring a static IP differs from system to system, but in this case I was using netctl. I took a copy of the example configuration file, /etc/netctl/examples/ethernet-static, put it into the /etc/netctl directory, and changed the ‘Interface’ and ‘Address’ variables

Description='A basic static ethernet connection'
#Routes=(' via')

## For IPv6 autoconfiguration

## For IPv6 static address configuration
#Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')

Bringing the interface up with

sudo netctl start ethernet-static

The dnsmasq configuration file is usually /etc/dnsmasq.conf, or you can drop your own config files into /etc/dnsmasq.d/ (ensure you uncomment the include line in /etc/dnsmasq.conf).

My setup was very simple

# specify ethernet device to operate on

# disable dns

# configure dhcp range and lease time

I didn’t need to set a netmask as I am putting the DHCP server (my laptop) in the same range. Before starting dnsmasq it is a good idea to validate the configuration

dnsmasq --test

After starting the dnsmasq service I could plug my network device into the router and monitor for any assigned IPs in the file /var/lib/misc/dnsmasq.leases.

There is much more you can do with dnsmasq if you want to use it for DHCP properly, but this shows how quick it can be to run it on a LAN or lab environment.