To remind myself as much as anything:
I run a dnsmasq server on my router (which is a Raspberry Pi 2) to handle local DNS, DNS proxying and DHCP. For some reason one of the hosts stopped registering its hostname with the DHCP server, and so I couldn’t resolve its name to an IP address from other clients on my network.
I’m pretty sure it used to work, and I’m also pretty sure I didn’t change anything – so why did it suddenly stop? My theory is that the disk on the client became corrupt and a fsck fix removed some files.
Anyway, the cause is that the DHCP client didn’t know to send it’s hostname along with the DHCP request.
This is fixed by creating (or editing)
/etc/dhcp/dhclient.conf and adding this line:
send host-name = gethostname();