在Linux系统中安装和配置DHCP(动态主机配置协议)服务器,能够为局域网中的自动分配IP地址、子网掩码、网关、DNS等网络参数,简化网络管理流程,以下将以主流的Ubuntu/Debian和CentOS/RHEL系统为例,详细讲解DHCP服务器的安装步骤、配置方法及测试流程。

系统准备
在安装DHCP服务器前,需确保系统满足基本条件:
-
更新系统软件包:确保系统软件包为最新版本,避免兼容性问题。
- Ubuntu/Debian系统:
sudo apt update && sudo apt upgrade -y
- CentOS/RHEL系统:
sudo yum update -y # CentOS 7及以下 sudo dnf update -y # CentOS 8及以上
- Ubuntu/Debian系统:
-
检查网络接口:确认服务器用于提供DHCP服务的网络接口(如
eth0、ens33等),并确保该接口已配置静态IP地址(DHCP服务器本身需固定IP,避免地址变更导致服务异常),通过以下命令查看网络接口信息:ip a
-
关闭防火墙(临时):若防火墙规则阻止DHCP服务(默认DHCP使用UDP 67端口),可临时关闭防火墙进行测试,后续再配置例外规则:
- Ubuntu/Debian(使用ufw):
sudo ufw disable
- CentOS/RHEL(使用firewalld):
sudo systemctl stop firewalld
- Ubuntu/Debian(使用ufw):
安装DHCP服务器软件
不同Linux发行版的DHCP服务器软件包名称不同,需根据系统选择对应的安装命令:
| 发行版系列 | 软件包名称 | 安装命令 |
|---|---|---|
| Ubuntu/Debian | isc-dhcp-server | sudo apt install isc-dhcp-server -y |
| CentOS 7/RHEL 7 | dhcp | sudo yum install dhcp -y |
| CentOS 8+/RHEL 8+ | dhcp | sudo dnf install dhcp -y |
安装完成后,可通过以下命令验证软件包是否安装成功:
sudo systemctl status dhcpd # CentOS/RHEL sudo systemctl status isc-dhcp-server # Ubuntu/Debian
配置DHCP服务器
DHCP服务器的核心配置文件是dhcpd.conf,其路径因系统而异:
- Ubuntu/Debian:
/etc/dhcp/dhcpd.conf - CentOS/RHEL:
/etc/dhcp/dhcpd.conf
备份原始配置文件
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
编辑配置文件
使用vi或nano打开配置文件(以Ubuntu为例,CentOS配置语法相同):

sudo nano /etc/dhcp/dhcpd.conf
清空文件原有内容(或保留注释),添加以下基本配置(需根据实际网络环境修改参数):
# 定义DHCP服务作用域( subnet 192.168.1.0 netmask 255.255.255.0 )
subnet 192.168.1.0 netmask 255.255.255.0 {
# 可分配的IP地址范围( exclude-except 可排除保留IP)
range 192.168.1.100 192.168.1.200;
# 子网掩码
option subnet-mask 255.255.255.0;
# 默认网关
option routers 192.168.1.1;
# DNS服务器地址(可配置多个,空格分隔)
option domain-name-servers 8.8.8.8, 114.114.114.114;
# 默认租约时间(秒,默认600秒=10分钟)
default-lease-time 3600;
# 最大租约时间(秒,默认7200秒=2小时)
max-lease-time 7200;
}
# 可选:保留特定MAC地址分配固定IP( host 保留名称 )
host pc001 {
hardware ethernet 00:0C:29:12:34:56; # 客户端MAC地址
fixed-address 192.168.1.50; # 分配的固定IP
}
关键参数说明:
subnet:定义DHCP作用域,需包含网络地址和子网掩码。range:可动态分配的IP地址池。option routers:客户端的默认网关地址。option domain-name-servers:客户端的DNS服务器地址。default-lease-time和max-lease-time:控制IP地址租约时长,避免地址耗尽。
指定监听网络接口
Ubuntu系统需修改/etc/default/isc-dhcp-server文件,指定DHCP服务监听的接口:
sudo nano /etc/default/isc-dhcp-server
修改INTERFACESv4参数(根据实际接口名调整):
INTERFACESv4="eth0"
CentOS系统通常无需额外配置,DHCP服务会自动监听所有活动接口,但可通过/etc/sysconfig/dhcpd文件指定接口(若有需要)。
启动并启用DHCP服务
配置完成后,启动DHCP服务并设置为开机自启:
Ubuntu/Debian系统:
# 启动服务 sudo systemctl start isc-dhcp-server # 设置开机自启 sudo systemctl enable isc-dhcp-server # 检查服务状态 sudo systemctl status isc-dhcp-server
CentOS/RHEL系统:
# 启动服务 sudo systemctl start dhcpd # 设置开机自启 sudo systemctl enable dhcpd # 检查服务状态 sudo systemctl status dhcpd
若服务启动失败,可通过journalctl查看日志排查错误:
# Ubuntu/Debian sudo journalctl -u isc-dhcp-server -f # CentOS/RHEL sudo journalctl -u dhcpd -f
测试DHCP服务
在Linux客户端测试
使用dhclient命令释放当前IP并重新获取(需指定客户端网络接口):
sudo dhclient -r eth0 # 释放IP sudo dhclient eth0 # 获取IP
获取成功后,通过ip a查看客户端是否获得配置的IP地址(如192.168.1.100-200段),并通过cat /etc/resolv.conf确认DNS是否正确配置。

在Windows客户端测试
- 打开命令提示符(CMD),执行
ipconfig /release释放IP,再执行ipconfig /renew获取IP。 - 查看
ipconfig /all,确认“IPv4地址”“子网掩码”“默认网关”“DNS服务器”是否与DHCP配置一致。
常见问题排查
-
客户端无法获取IP
- 检查DHCP服务状态:
sudo systemctl status dhcpd,确保服务正在运行。 - 检查防火墙规则:开放UDP 67端口(DHCP服务端口),例如CentOS firewalld:
sudo firewall-cmd --permanent --add-service=dhcp sudo firewall-cmd --reload
- 检查配置文件语法:Ubuntu可通过
sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf验证语法,CentOS类似。
- 检查DHCP服务状态:
-
IP地址池耗尽
- 扩大
range参数中的IP地址范围,或缩短max-lease-time(如改为3600秒),加速地址回收。
- 扩大
相关问答FAQs
Q1:如何查看DHCP服务器已分配的IP地址和租约信息?
A1:DHCP服务器的租约信息存储在租约文件中,路径因系统而异:
- Ubuntu/Debian:
/var/lib/dhcp/dhcpd.leases - CentOS/RHEL:
/var/lib/dhcpd/dhcpd.leases
使用cat或less命令查看文件内容,sudo less /var/lib/dhcp/dhcpd.leases
文件中会记录客户端MAC地址、分配的IP地址、租约开始/结束时间等信息。
Q2:修改DHCP配置后如何不重启服务而重新加载配置?
A2:不同系统使用不同的重载命令:
- Ubuntu/Debian:
sudo systemctl reload isc-dhcp-server
- CentOS/RHEL:
sudo systemctl reload dhcpd
若
reload命令无效(提示“Unit has no reload job”),可使用restart重启服务:sudo systemctl restart dhcpd # 或 sudo systemctl restart isc-dhcp-server
重载或重启后,新配置将立即生效,无需重启客户端设备。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22212.html