- How To Use DHCP Server in Linux?
- Choosing the DHCP Server
- Configuring the DHCP Server
- Starting and Enabling the DHCP Server
- Configuring the Client Devices
- How Does DHCP Work?
- Allocation Methods for DHCP
- Manual Allocation
- Automatic Allocation
- Fixed Lease Time
- Infinite Lease Time
- Steps to Set Up DHCP Server on Ubuntu
- Troubleshooting
- Conclusion
- About Dynamic Host Configuration Protocol (DHCP)
- DHCP configuration
- Manual allocation (MAC address)
- Dynamic allocation (address pool)
- Automatic allocation
- Available servers
- References
How To Use DHCP Server in Linux?
DHCP (Dynamic Host Configuration Protocol) is a network protocol widely used in Linux and other operating systems to automatically assign IP addresses and network configuration settings to devices on a network. It plays a crucial role in simplifying network administration and management by eliminating the need for manual IP address configuration.
Let’s learn how to use DHCP (Dynamic Host Configuration Protocol) server in Linux in predefined steps for a better understanding.
Choosing the DHCP Server
There are several DHCP server software options available for Linux, such as ISC DHCP Server (dhcpd) , Dnsmasq , and Kea DHCP . You can choose the one that suits your needs and install it using your Linux distribution package manager.
Configuring the DHCP Server
The configuration file for the DHCP server is typically located in the /etc directory. The specific file and its location may vary depending on the DHCP server software you installed. For example, if you are using ISC DHCP Server, the configuration file is usually /etc/dhcp/dhcpd.conf.
Open the configuration file using a text editor and modify it according to your network requirements. The configuration file contains various options to specify network settings, IP address ranges, lease durations, and other DHCP parameters. It also allows you to define static IP assignments for specific hosts.
Here’s a simple example of a DHCP server configuration using ISC DHCP Server:
In this example, the DHCP server is configured to assign IP addresses from the range 10.5.5.26 to 10.5.5.26 . The default gateway (router) is set to 10.5.5.1 , and the DNS server is set as ns1.internal.example.org .
Starting and Enabling the DHCP Server
Once you have configured the DHCP server, save the configuration file and start the DHCP server service. The commands to start and enable the service may vary depending on your Linux distribution and the DHCP server software you are using. We have portrayed some common commands here.
For ISC DHCP Server:
For Dnsmasq:
For Kea DHCP:
Configuring the Client Devices
On the client devices (computers, smartphones, etc.) connected to the network, ensure that they are set to obtain IP addresses automatically via DHCP. This is typically the default configuration on most devices.
The client devices will send DHCP discovery requests to the DHCP server, and the server will respond with the appropriate IP address, subnet mask, gateway, DNS server, and other network configuration information.
That’s it; You should now have a functioning DHCP server in Linux. The server will dynamically assign IP addresses to devices on your network, making network configuration easier and more automated.
How Does DHCP Work?
The Linux DHCP server facilitates the automatic assignment of IP addresses and network configuration to client devices. When a client connects to the network, it sends a DHCP Discover message, and the Linux DHCP server responds with a DHCP Offer, providing an available IP address and configuration details.
The client then sends a DHCP Request, and upon verification, the server sends a DHCP Acknowledgment, confirming the IP address allocation. The server manages IP address leases, allowing clients to renew or release them. Linux DHCP servers streamline network administration and simplify IP address management in Linux-based networks.
Allocation Methods for DHCP
Allocation methods for DHCP specify how IP addresses are assigned to client devices. Let’s understand the four common allocation methods.
Manual Allocation
In this method, IP addresses are manually assigned to specific client devices based on their MAC addresses. This allows for precise control over IP assignments but requires manual configuration for each device.
Automatic Allocation
With automatic allocation, the DHCP server dynamically assigns available IP addresses to client devices when they connect to the network. The assignment is done on a first-come, first-served basis from a defined IP address pool.
Fixed Lease Time
In this method, the DHCP server assigns IP addresses to clients for a specific duration or lease time. Once the lease expires, the client must renew the lease or request a new IP address. Fixed lease times allow for better IP address management and control over address reassignment.
Infinite Lease Time
With infinite lease time, also known as static allocation or reservation, the DHCP server assigns a specific IP address to a client device permanently. The client retains the same IP address across network connections, even after rebooting or reconnecting. This method is useful for devices that require consistent IP addresses, such as servers or network printers.
By offering different allocation methods, DHCP provides flexibility to accommodate various network scenarios and requirements in Linux and other operating systems.
Steps to Set Up DHCP Server on Ubuntu
The following are the process instructions for configuring a DHCP server on Ubuntu, utilizing the Linux DHCP server (ISC DHCP Server). Let’s follow.
Step 1:
Open a terminal on your Ubuntu system and run the following commands to install the Linux DHCP server:
Step 2:
The main configuration file for the Linux DHCP server is located at /etc/dhcp/dhcpd.conf . Open the file with a text editor and configure it according to your network requirements. You can specify IP address ranges, lease durations, and other DHCP parameters. An example of the same has been shown below.
This configuration assigns IP addresses from the range 10.5.5.26 to 10.5.5.30 , with the default gateway (router) set to 10.5.5.1 and the DNS server also set as ns1.internal.example.org .
Step 3:
Then open the /etc/default/isc-dhcp-server file in a text editor and specify the network interface to listen on. Set the INTERFACESv4 variable to the appropriate interface, such as eth0 or enp0s3 .
Step 4:
Now, start and enable the Linux DHCP server service using the below-mentioned command.
To ensure that the DHCP server starts automatically on system boot, enable the service with the below-mention command.
Step 5:
Then verify the Linux DHCP server status by running the below-mentioned command.
If the service is running without errors, you should see an «active (running)» status.
That’s it; You have successfully set up the Linux DHCP server on Ubuntu. It will now dynamically assign IP addresses and provide network configuration to client devices on your network.
Troubleshooting
If you encounter any issues with the Linux DHCP server setup on Ubuntu, you can try the below-mentioned troubleshooting steps.
Check the DHCP server status
Run the command sudo systemctl status isc-dhcp-server to check the status of the Linux DHCP server. Look for any error messages or warnings that might indicate the cause of the issue.
Verify the DHCP configuration
Ensure that the DHCP configuration file /etc/dhcp/dhcpd.conf is correctly set up. Check for any syntax errors or misconfigurations that could cause issues. Pay attention to IP address ranges, options, and subnet configurations.
Check the network interface
Verify that the DHCP server is configured to listen on the correct network interface. Open the /etc/default/isc-dhcp-server file and ensure that the INTERFACESv4 variable is set to the appropriate interface, such as eth0 or enp0s3 .
Restart the DHCP server
Sometimes, restarting the DHCP server can resolve temporary issues. Use the command sudo systemctl restart isc-dhcp-server to restart the Linux DHCP server.
Check for port conflicts
Ensure that no other services or applications are using the same ports required by the DHCP server. The DHCP server uses UDP ports 67 and 68. Use the command sudo netstat -tuln | grep -E ’67|68′ to check for port conflicts.
Verify network connectivity
Ensure that the DHCP server has network connectivity and can communicate with client devices. Check the network connection, firewall settings, and any network devices (routers, switches) that might be blocking DHCP traffic.
Check system logs
Examine the system logs for any DHCP-related errors or warnings. The logs can provide additional information about the issue. You can view the logs using the journalctl command, such as sudo journalctl -u isc-dhcp-server .
By following these troubleshooting steps you can diagnose and resolve issues to ensure the smooth operation of the Linux DHCP server on your Ubuntu system.
Conclusion
- Linux DHCP server is a powerful tool for automated IP address assignment and network configuration in Ubuntu and other Linux-based systems.
- With the Linux DHCP server, client devices can dynamically obtain IP addresses, facilitating seamless connectivity and adaptability in rapidly changing network environments.
- The Linux DHCP server supports various allocation methods, including manual, automatic, fixed lease time, and infinite lease time.
- Ultimately it eliminates the need for manual IP address assignment, making network administration more efficient and reducing the chances of configuration errors.
About Dynamic Host Configuration Protocol (DHCP)
The Dynamic Host Configuration Protocol (DHCP) is a network service that enables host computers to be automatically assigned settings from a server as opposed to manually configuring each network host. Computers configured to be DHCP clients have no control over the settings they receive from the DHCP server, and the configuration is transparent to the computer’s user.
The most common settings provided by a DHCP server to DHCP clients include:
- IP address and netmask
- IP address of the default-gateway to use
- IP addresses of the DNS servers to use
However, a DHCP server can also supply configuration properties such as:
The advantage of using DHCP is that any changes to the network, such as a change in the DNS server address, only need to be changed at the DHCP server, and all network hosts will be reconfigured the next time their DHCP clients poll the DHCP server. As an added advantage, it is also easier to integrate new computers into the network, as there is no need to check for the availability of an IP address. Conflicts in IP address allocation are also reduced.
DHCP configuration
A DHCP server can provide configuration settings using the following methods:
Manual allocation (MAC address)
This method uses DHCP to identify the unique hardware address of each network card connected to the network, and then supplies a static configuration each time the DHCP client makes a request to the DHCP server using that network device. This ensures that a particular address is assigned automatically to that network card, based on its MAC address.
Dynamic allocation (address pool)
In this method, the DHCP server assigns an IP address from a pool of addresses (sometimes also called a range or scope) for a period of time (known as a lease) configured on the server, or until the client informs the server that it doesn’t need the address anymore. This way, the clients receive their configuration properties dynamically and on a “first come, first served” basis. When a DHCP client is no longer on the network for a specified period, the configuration is expired and released back to the address pool for use by other DHCP clients. After the lease period expires, the client must renegotiate the lease with the server to maintain use of the same address.
Automatic allocation
Using this method, the DHCP automatically assigns an IP address permanently to a device, selecting it from a pool of available addresses. Usually, DHCP is used to assign a temporary address to a client, but a DHCP server can allow an infinite lease time.
The last two methods can be considered “automatic” because in each case the DHCP server assigns an address with no extra intervention needed. The only difference between them is in how long the IP address is leased; in other words, whether a client’s address varies over time.
Available servers
Ubuntu makes two DHCP servers available:
- isc-dhcp-server :
This server installs dhcpd , the dynamic host configuration protocol daemon. Although Ubuntu still supports isc-dhcp-server , this software is no longer supported by its vendor. Find out how to install and configure isc-dhcp-server . - isc-kea :
Kea was created by ISC to replace isc-dhcp-server – It is supported in Ubuntu releases from 23.04 onwards. Find out how to install and configure isc-kea .
References
- The isc-dhcp-server Ubuntu Wiki page has more information.
- For more /etc/dhcp/dhcpd.conf options see the dhcpd.conf man page.
- ISC dhcp-server
- ISC Kea Documentation