温馨提示×

ubuntu dhcp为什么无法启动

小樊
43
2026-10-01 04:55:05
栏目: 智能运维

Ubuntu 上 DHCP 服务(通常是 isc-dhcp-server 或 dnsmasq)无法启动,原因比较常见,下面按排查思路 + 常见原因 + 解决方法给你说明。


一、先确认你用的是哪个 DHCP 服务

systemctl status isc-dhcp-server
systemctl status dnsmasq

常见情况:

  • 服务器环境:isc-dhcp-server
  • 桌面/轻量环境:dnsmasq

二、最常见导致 DHCP 无法启动的原因

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

isc-dhcp-server

配置文件:

/etc/dhcp/dhcpd.conf

常见错误:

  • 少了分号 ;
  • subnet 写错
  • 没有 option routers
  • 地址池和网段不匹配

查看错误:

journalctl -xe
systemctl status isc-dhcp-server

示例正确配置:

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 subnet-mask 255.255.255.0;
  option domain-name-servers 8.8.8.8;
}

2️⃣ 没有监听网卡(非常常见)

isc-dhcp-server

需要指定网卡:

/etc/default/isc-dhcp-server

示例:

INTERFACESv4="eth0"

⚠️ 如果网卡名不对(如 enp3s0),DHCP 一定起不来。

查看网卡名:

ip addr

3️⃣ 网卡没有 IP 地址

DHCP 服务器必须在对应网段有 IP

检查:

ip addr show eth0

如果没有:

sudo ip addr add 192.168.1.1/24 dev eth0

或写进 netplan(Ubuntu 18+):

/etc/netplan/*.yaml

4️⃣ 端口 67 被占用(dnsmasq / systemd-resolved)

查看:

sudo netstat -tulnp | grep :67

常见冲突:

  • dnsmasq
  • systemd-resolved

解决:

sudo systemctl stop dnsmasq
sudo systemctl disable dnsmasq

或修改 resolved 配置。


5️⃣ AppArmor 限制(服务器版常见)

查看:

sudo aa-status

可临时测试:

sudo systemctl stop apparmor

6️⃣ 防火墙(ufw)

虽然不常导致“启动失败”,但会导致客户端拿不到地址:

sudo ufw allow 67/udp
sudo ufw allow 68/udp

三、快速排查流程(推荐)

sudo systemctl restart isc-dhcp-server
journalctl -xe | tail -n 50

把报错信息贴出来,我可以直接帮你定位。


四、你可以补充的信息(方便精准诊断)

  1. Ubuntu 版本(lsb_release -a)
  2. 使用的 DHCP 软件
  3. 报错日志(journalctl -xe)
  4. 网卡名称和 IP

如果你愿意,可以把日志直接发我,我可以逐行帮你分析。

0 踩