Install and setup DHCP Service

Synopsis:

DHCP or Dynamic Host Configuration Protocol allows for automatic management of IP addresses on your internal network. By providing DHCP on your LAN, you eliminate the bother of having to configure manually PCs, laptops, or smart phones. They will automatically get an IP address and be configured with default gateway and DNS server information. It is important that only one DHCP server be active on a network. So, check carefully any other network devices on your network, especially wireless Access Points, to be sure their DHCP service is disabled.


I. Installation

Log into the Freebsd system as root. (Assumes networking is already configured.)

#
# cd /usr/ports/net/isc-dhcp44-server && make install clean
#
II. Startup Configuration

Enable DHCP daemon at startup and assign the internal LAN port (re1 in this project) interface;

#
# sysrc dhcpd_enable="YES"
# sysrc dhcpd_ifaces="re1"
#
III. Setup configuration file
#
# cd /usr/local/etc
#
If there is a dhcpd.conf file, rename it;
#
# mv dhcpd.conf dhcpd.conf.original
#

Copy the below text, modify for your personal use, and paste it into a new dhcpd.conf file. You will need to modify the subnet (i.e., your network zero) and mask, the IP pool range, the DNS server (in this case 8.8.8.8 is the Google DNS server), the domain name, the router/gateway and the broadcast address (i.e., your network 255). The settings shown assumes our LAN subnet will be the private range 192.168.1.0 to 192.168.1.255. This machine will have LAN address configured as 192.168.1.254 and will be the default gateway for the LAN network. The address pool will be assigned from 192.168.1.10 to 192.168.1.90.

# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#
# option definitions common to all supported networks...
authoritative;

# A slightly different configuration for an internal subnet.
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.10 192.168.1.90;
  option domain-name-servers 8.8.8.8;
  option domain-name "myhost.dynu.com";
  option routers 192.168.1.254;
  option broadcast-address 192.168.1.255;
  default-lease-time 600;
  max-lease-time 7200;
}

IV. Setup leases file
Setup the lease file as follows:
#
# mkdir /var/db/dhcpd
# touch /var/db/dhcpd/dhcpd.leases
# chown -R dhcpd:dhcpd /var/db/dhcpd
# chown dhcpd:dhcpd /var/db/dhcpd/dhcpd.leases
# chmod 644 /var/db/dhcpd/dhcpd.leases
#
V. Start DHCP daemon
You may issue startup command from prompt;
#
# service isc-dhcpd start
#
The console will display a message similar to below, without any error.
Starting dhcpd.
Internet Systems Consortium DHCP Server 4.4.3-P1
Copyright 2004-2022 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Config file: /usr/local/etc/dhcpd.conf
Database file: /var/db/dhcpd/dhcpd.leases
PID file: /var/run/dhcpd.pid
Wrote 36 leases to leases file.
Listening on BPF/re1/00:22:b0:6b:65:08/192.168.1.0/24
Sending on   BPF/re1/00:22:b0:6b:65:08/192.168.1.0/24
Sending on   Socket/fallback/fallback-net
If more IP addresses need to be added to the address pool, just modify the range. A new configuration will be read by restarting the daemon.
#
# service isc-dhcpd restart
#

For more information, see the website www.isc.org.