Debian 上 DHCP 服务启动失败 的原因很多,下面按最常见 → 较少见的顺序给你一个排查清单,并给出对应的解决方法。你可以逐条对照。
Debian 默认使用 ISC DHCP Server,服务名是:
isc-dhcp-server
❌ 错误示例:
systemctl start dhcp
systemctl start dhcpd
✅ 正确:
systemctl start isc-dhcp-server
配置文件有语法错误时,DHCP 会直接启动失败。
检查语法:
dhcpd -t
常见错误:
;{} 不匹配✅ 最小可用配置示例:
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;
}
DHCP 必须明确监听哪个网卡。
编辑:
sudo nano /etc/default/isc-dhcp-server
设置:
INTERFACESv4="eth0"
⚠️ 注意:
ip a 查看)br0)DHCP 服务器 必须 在 subnet 内有一个 IP。
例如:
subnet 192.168.1.0 netmask 255.255.255.0
你的网卡必须是:
192.168.1.x
查看:
ip a
如果不是,需要给网卡配置静态 IP。
sudo journalctl -u isc-dhcp-server -xe
或:
sudo systemctl status isc-dhcp-server
常见错误示例:
| 错误信息 | 含义 |
|---|---|
Not configured to listen on any interfaces |
没配置监听网卡 |
subnet not declared |
dhcpd.conf 错误 |
Address already in use |
端口 67 被占用 |
No subnet declaration |
网卡 IP 不在 subnet 内 |
如果系统里同时有:
会冲突。
检查:
sudo ss -ulnp | grep :67
解决:
sudo systemctl disable dnsmasq
sudo systemctl stop dnsmasq
DHCP 使用:
临时关闭测试:
sudo ufw disable
或放行:
sudo ufw allow 67/udp
如果你只使用 IPv4,但系统尝试启动 IPv6 DHCP:
sudo systemctl status isc-dhcp-server6
可以禁用:
sudo systemctl disable isc-dhcp-server6
# 1. 检查服务名
systemctl start isc-dhcp-server
# 2. 检查配置语法
dhcpd -t
# 3. 检查监听网卡
cat /etc/default/isc-dhcp-server
# 4. 检查网卡 IP
ip a
# 5. 查看错误原因
journalctl -u isc-dhcp-server -xe
你可以把下面信息贴出来(脱敏即可):
journalctl -u isc-dhcp-server -xe 的最后 20 行/etc/dhcp/dhcpd.confip a/etc/default/isc-dhcp-server我可以直接告诉你改哪一行就能启动成功 ✅