isc-dhcp-server启动报错failed with result 'exit code'如何解决
isc-dhcp-server启动失败排查步骤
1. 优先校验配置文件语法
isc-dhcp-server自带配置语法检测工具,绝大多数启动失败都是配置语法错误导致,执行以下命令校验:
- 校验dhcp主配置文件:
dhcpd -t -cf /etc/dhcp/dhcpd.conf - 如果返回报错,直接按照提示修改对应行的配置即可,常见错误包括漏写行尾分号、subnet网段与网卡IP不匹配、option参数拼写错误。
2. 核对监听网卡配置
检查/etc/default/isc-dhcp-server(部分发行版为/etc/default/dhcpd.conf)中的网卡配置:
- 确认
INTERFACESv4(IPv4场景)参数填写的网卡名,和ip a命令输出的实际网卡名完全一致,避免拼写错误 - 确认该网卡已经配置同DHCP地址池网段匹配的静态IP,禁止使用动态IP、未配置IP的网卡作为DHCP服务监听网卡。
3. 前台手动启动服务查看实时报错
后台启动的日志经常有截断,前台运行dhcpd可以直接输出完整报错:
- 执行命令:
sudo dhcpd -d -4 - 该命令会在前台运行DHCP服务,所有启动阶段的错误会直接打印到终端,比如端口占用、权限不足、网段匹配失败等问题都可以直接定位。
4. 检查UDP 67端口占用情况
DHCP服务依赖UDP 67端口提供服务,如果该端口被其他进程占用会直接启动失败,执行以下命令检查:
- 端口检测命令:
sudo ss -ulnp | grep :67 - 如果输出有其他进程(常见为dnsmasq、其他DHCP服务)占用该端口,停掉冲突进程后再尝试启动isc-dhcp-server即可。
5. 核对leases文件权限
dhcpd需要读写租约文件存储分配记录,如果文件不存在或者权限异常会启动失败:
- 租约文件默认路径为
/var/lib/dhcp/dhcpd.leases,如果不存在执行创建命令:sudo touch /var/lib/dhcp/dhcpd.leases - 给租约文件设置正确权限:
sudo chown dhcpd:dhcpd /var/lib/dhcp/dhcpd.leases
6. 校验systemd启动配置
部分发行版默认加载的dhcp配置文件路径和你修改的路径不匹配,会导致配置不生效启动失败:
- 执行
systemctl cat isc-dhcp-server查看服务启动命令中的配置文件路径参数,确认和你修改的配置文件路径一致 - 如果路径不一致,可以直接修改systemd单元文件,或者将配置内容写入到服务默认加载的路径中。
内容的提问来源于stack exchange,提问作者arturogaag
相关产品推荐
相关产品推荐

