1. 检查DHCP服务运行状态
首先确认DHCP服务是否处于运行状态。使用systemctl status isc-dhcp-server命令查看服务状态(若系统使用dhcpd服务,则替换为对应名称)。若服务未运行,通过sudo systemctl start isc-dhcp-server启动服务,并设置开机自启动:sudo systemctl enable isc-dhcp-server。
2. 验证DHCP配置文件语法与内容
DHCP主配置文件/etc/dhcp/dhcpd.conf的语法错误或参数配置不当是常见故障原因。使用sudo nano /etc/dhcp/dhcpd.conf打开文件,检查以下关键项:
subnet语句包含正确的子网掩码、IP地址池(range)、网关(option routers)和DNS服务器(option domain-name-servers)。例如:subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
/etc/default/isc-dhcp-server中的INTERFACESv4变量,确保包含DHCP服务器监听的网络接口(如eth0)。3. 检查DHCP租约文件状态
DHCP租约文件/var/lib/dhcp/dhcpd.leases用于记录已分配的IP地址。若文件损坏或丢失,可能导致服务异常。执行以下命令修复:
sudo rm /var/lib/dhcp/dhcpd.leases # 删除损坏的租约文件
sudo touch /var/lib/dhcp/dhcpd.leases # 创建新文件
sudo chown dhcpd:dhcpd /var/lib/dhcp/dhcpd.leases # 设置正确权限
sudo systemctl restart isc-dhcp-server # 重启服务
4. 分析DHCP日志定位问题
日志文件是排查故障的关键线索。使用以下命令实时查看DHCP相关日志(通常位于/var/log/syslog或/var/log/messages):
sudo tail -f /var/log/syslog | grep dhcpd
重点关注以下错误信息:
range范围;5. 验证网络接口与连通性
ip addr show命令确认DHCP服务器绑定的接口(如eth0)已分配IP地址且状态为UP;ping命令测试连通性(如ping 192.168.1.100)。6. 检查防火墙与端口开放情况
DHCP服务依赖UDP端口67(服务器)和68(客户端)。使用以下命令开放端口:
sudo ufw allow 67/udp # 允许DHCP服务器端口
sudo ufw allow 68/udp # 允许DHCP客户端端口
sudo ufw reload # 重新加载防火墙规则
若使用iptables,需添加对应规则:sudo iptables -A INPUT -p udp --dport 67 -j ACCEPT。
7. 测试客户端DHCP获取功能
在客户端设备上,使用dhclient命令强制获取IP地址,验证DHCP服务是否正常:
sudo dhclient -v eth0 # -v参数显示详细过程,eth0为客户端接口
观察输出信息,若成功获取IP地址,会显示“bound to 192.168.1.x – renewal in xxx seconds”。
8. 排查IP地址冲突
若客户端无法获取IP或频繁掉线,可能是网络中存在静态IP与DHCP池IP冲突。可通过以下方式检查:
ip addr show查看分配的IP地址;/var/lib/dhcp/dhcpd.leases,确认该IP是否已被分配给其他设备;