CentOS DHCP故障排查步骤
一 快速判定与定位
ip -br link、ip -br addr,确认网卡为 UP 且是否有 inet 地址。ip route,确认是否存在 default 路由。dhclient -v <iface>,观察是否出现 DHCPACK;若一直卡在 DHCPDISCOVER,多为服务器不可达、被防火墙阻断或地址池耗尽。systemctl status NetworkManager 或 systemctl status systemd-networkd 确认网络栈运行正常。二 客户端排查清单
BOOTPROTO=dhcp、ONBOOT=yes;修改后执行 systemctl restart NetworkManager(或 systemctl restart network)。ip link 为 DOWN,执行 ip link set dev <iface> up 再测。cat /var/lib/dhclient/dhclient-<iface>.leases。ps aux | grep dhclient | grep <iface>;异常时 ifup <iface> 或 dhclient -r <iface> && dhclient <iface> 重建租约。systemctl stop firewalld(测试后按需恢复并放通 UDP 67/68)。dhclient/检查进程与租约文件。三 服务器排查清单
yum install dhcp(或 dnf)。systemctl start dhcpd、systemctl enable dhcpd。dhcpd -t 检查 /etc/dhcp/dhcpd.conf 语法;服务启动失败用 systemctl status dhcpd 与 journalctl -xe 定位。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, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
}
dhcpd.conf 中使用 interfaces "eth0"; 或在 systemctl 启动参数中指定 -cf /etc/dhcp/dhcpd.conf -lf /var/lib/dhcpd/dhcpd.leases eth0。四 抓包与日志分析
tcpdump -i <iface> -nn -vv port 67 or port 68dhclient -v <iface> 可直接看到 DISCOVER/OFFER/REQUEST/ACK 过程与对端 IP。tail -f /var/log/messages、journalctl -u dhcpd -xetail -f /var/log/messages 或 /var/log/syslog,关注 dhclient 与网络服务报错。五 常见症状与修复对照表
| 症状 | 快速检查 | 修复建议 |
|---|---|---|
客户端 ip addr 无 IPv4 |
ip -br addr、ip link、dhclient -v |
确认 BOOTPROTO=dhcp、ONBOOT=yes,接口为 UP;虚拟机检查网卡连接与 NAT/桥接;必要时 dhclient -r 后重取 |
| 获取 IP 后过一段时间丢失 | `ps aux | grep dhclient、cat /var/lib/dhclient/*.leases` |
| 服务器启动失败 | systemctl status dhcpd、journalctl -xe、dhcpd -t |
补全 /etc/dhcp/dhcpd.conf 的 subnet 与 range;确保本机接口在该网段 |
| 一直卡在 DISCOVER | 服务器抓包、客户端 dhclient -v、防火墙 |
放通 UDP 67/68;核对服务器 subnet 匹配与接口监听;排查二层连通性 |
| 提示 No subnet declaration | journalctl 日志 |
为对应接口所在网段添加 subnet 声明 |
| 地址冲突或租约异常 | 服务器日志、租约文件 | 清理冲突记录、扩容 range、检查网关/DNS 配置一致性 |
| 虚拟机拿不到地址 | 网卡连接状态、网络模式 | 勾选“连接”,使用 NAT/桥接;必要时重启实例再测 |