温馨提示×

linux dhcp为何启动失败

小樊
51
2026-10-27 06:18:20
栏目: 智能运维

Linux 下 DHCP 启动失败的原因很多,需要结合具体发行版、DHCP 实现(dhcpd / isc-dhcp / dnsmasq / NetworkManager / systemd-networkd)和报错信息来判断。下面按常见原因 + 排查思路给你一个较全的清单。


一、最常见原因汇总

1️⃣ 配置文件错误(最常见)

DHCP 服务对配置语法非常敏感。

典型表现

  • 服务起不来
  • journalctl -u dhcpd 报 error / line xx

排查

# ISC DHCP
dhcpd -t -cf /etc/dhcp/dhcpd.conf

# dnsmasq
dnsmasq --test

常见问题:

  • subnet 写错
  • 缺少 option routers
  • range 与 subnet 不匹配
  • 少了分号 ;

2️⃣ 监听网卡没有 IP 地址

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

3️⃣ 端口 67 被占用

常见于:

  • dnsmasq 和 dhcpd 同时运行
  • 多个 DHCP 服务冲突

检查

ss -lunp | grep :67

解决 只保留一个 DHCP 服务


4️⃣ SELinux / 防火墙限制

尤其在 RHEL / CentOS / Rocky

临时验证

setenforce 0

防火墙:

firewall-cmd --add-service=dhcp

5️⃣ 服务名或系统不对

不同发行版差异很大:

系统 服务
CentOS 7 dhcpd
Ubuntu isc-dhcp-server
通用 dnsmasq
新系统 systemd-networkd

错误示例

systemctl start dhcp  # 错

正确

systemctl start isc-dhcp-server

6️⃣ 接口未启用

网卡是 DOWN 状态

ip link set eth0 up

7️⃣ 配置文件路径不对

例如 Ubuntu:

/etc/default/isc-dhcp-server
INTERFACESv4="eth0"

没写接口 → 启动失败


8️⃣ IPv6 / 双栈问题

开启了 v6 但没配置

systemctl stop dhcpd6

二、标准排查流程(推荐)

# 1. 看错误
journalctl -xeu dhcpd

# 2. 测试配置
dhcpd -t

# 3. 看端口
ss -lunp | grep 67

# 4. 看网卡
ip addr

三、如果你愿意,我可以精准定位

你可以直接贴出:

  1. 发行版(Ubuntu / CentOS / Debian?)
  2. 用的什么 DHCP(dhcpd / dnsmasq?)
  3. 启动命令
  4. 报错日志(journalctl 或 systemctl status)

我可以一行一行帮你改。

0 踩