I'm setting up a new segment in my network that will be managed by DHCP. I estimate that a /22 net, with just over one thousand addresses (1022 to be precise), gives me sufficient space for a dynamic pool and room to spare to allow mapping of known MACs to IP addresses in the future.
To start the ball rolling, I figured I'd just start with just about all of it assigned dynamically, with a bit left over. So, why not 1000 contiguous addresses in a dynamic pool, and 22 left over: one for the router and 21 to play with.
Ok, so the start address is easy, but how to find the end address quickly and make sure I don't make a mistake? NetAddr::IP to the rescue.
I actually did this as a one-liner, but this is a bit more readable.
Now to edit my dhcpd.conf file...
#! /usr/local/bin/perl -wl use NetAddr::IP; my $first = shift || '172.17.220.1'; my $nr = shift || 1000; my $end = NetAddr::IP->new($first)->numeric + $nr; print $end->addr; # prints 172.17.223.233