温馨提示×

ubuntu dhcp为何不分配

小樊
44
2026-09-19 06:05:40
栏目: 智能运维

在 Ubuntu 上“DHCP 不分配 IP”通常分两种情况:Ubuntu 作为 DHCP 客户端拿不到地址,或 Ubuntu 作为 DHCP 服务器不分配地址。下面分别说明常见原因和排查方法。


一、Ubuntu 作为客户端(拿不到 IP)

1. 网络接口未启用

ip link

如果接口是 DOWN,先启用:

sudo ip link set eth0 up

2. Netplan 配置错误(18.04+ 常见)

查看配置:

cat /etc/netplan/*.yaml

正确示例(DHCP):

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true

应用配置:

sudo netplan apply

3. 没有 DHCP 服务器

确认网络中有 DHCP 服务器:

sudo dhclient -v eth0

如果一直无响应,可能是:

  • 交换机/路由器未开 DHCP
  • 网线/VLAN 不对

4. 防火墙或 SELinux/AppArmor(少见)

确认没有拦截 UDP 67/68。

5. 使用了 NetworkManager 但被禁用

systemctl status NetworkManager

二、Ubuntu 作为 DHCP 服务器(不分配地址)

1. 服务未运行

systemctl status isc-dhcp-server

若失败,看日志:

journalctl -u isc-dhcp-server

2. 配置文件错误(/etc/dhcp/dhcpd.conf)

常见问题:

  • subnet 写错
  • 没有 range
  • 接口不在 subnet 内

示例:

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;
}

3. 监听接口未指定

编辑:

/etc/default/isc-dhcp-server

确保:

INTERFACESv4="eth0"

4. 接口 IP 不在 subnet 内

DHCP 服务器接口必须有对应网段 IP:

ip addr show eth0

5. 端口被占用

sudo ss -lunp | grep 67

三、快速排查命令汇总

ip addr
ip route
journalctl -u isc-dhcp-server
tcpdump -i eth0 port 67 or port 68

如果你能贴出:

  • Ubuntu 版本
  • 客户端还是服务器
  • 相关配置文件或报错日志

我可以直接帮你定位具体原因。

0