Linux 下 DHCP 启动失败的原因很多,需要结合具体发行版、DHCP 实现(dhcpd / isc-dhcp / dnsmasq / NetworkManager / systemd-networkd)和报错信息来判断。下面按常见原因 + 排查思路给你一个较全的清单。
DHCP 服务对配置语法非常敏感。
典型表现
journalctl -u dhcpd 报 error / line xx排查
# ISC DHCP
dhcpd -t -cf /etc/dhcp/dhcpd.conf
# dnsmasq
dnsmasq --test
常见问题:
option routers;DHCP 要求监听网段对应的网卡必须有静态 IP
错误示例
No subnet declaration for eth0
解决
ip addr show eth0
配置示例(ISC DHCP):
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;
}
并确保:
ip addr add 192.168.1.1/24 dev eth0
常见于:
检查
ss -lunp | grep :67
解决 只保留一个 DHCP 服务
尤其在 RHEL / CentOS / Rocky
临时验证
setenforce 0
防火墙:
firewall-cmd --add-service=dhcp
不同发行版差异很大:
| 系统 | 服务 |
|---|---|
| CentOS 7 | dhcpd |
| Ubuntu | isc-dhcp-server |
| 通用 | dnsmasq |
| 新系统 | systemd-networkd |
错误示例
systemctl start dhcp # 错
正确
systemctl start isc-dhcp-server
网卡是 DOWN 状态
ip link set eth0 up
例如 Ubuntu:
/etc/default/isc-dhcp-server
INTERFACESv4="eth0"
没写接口 → 启动失败
开启了 v6 但没配置
systemctl stop dhcpd6
# 1. 看错误
journalctl -xeu dhcpd
# 2. 测试配置
dhcpd -t
# 3. 看端口
ss -lunp | grep 67
# 4. 看网卡
ip addr
你可以直接贴出:
journalctl 或 systemctl status)我可以一行一行帮你改。