CentOS DHCP故障排查步骤有哪些
小樊
35
2025-11-19 19:07:49
CentOS DHCP故障排查步骤
一 客户端快速自检
- 确认网卡处于UP并获取到地址:ip addr show ;如未激活,执行 ip link set up 或 nmcli device connect 。
- 查看是否由NetworkManager或systemd-networkd管理:systemctl status NetworkManager;必要时启动并设为开机自启。
- 核对接口配置(/etc/sysconfig/network-scripts/ifcfg-):确保 BOOTPROTO=dhcp、ONBOOT=yes;修改后重启网络服务。
- 手动触发 DHCP 获取:dhclient -r 释放;dhclient -4 仅请求 IPv4;若提示“No DHCPOFFERS received”,表示未收到服务器应答。
- 检查是否拿到地址与路由:ip addr show ;ip route;必要时检查 DNS(cat /etc/resolv.conf)。
- 查看客户端日志与租约:journalctl -u dhclient 或 grep dhclient /var/log/messages;cat /var/lib/dhcp/dhclient.leases。
二 连通性与防火墙排查
- 物理/二层连通性:确认网线、交换机端口、虚拟网络适配器正常;在虚拟环境中核对桥接/NAT模式是否合适。
- 抓包定位 DHCP 报文(UDP 67/68):
- 客户端:tcpdump -i -nn port 67 or port 68
- 服务器:tcpdump -i -nn port 67 or port 68
正常交互应见到 DHCPDISCOVER → DHCPOFFER → DHCPREQUEST → DHCPACK。
- 防火墙/安全组:临时关闭 firewalld 验证是否为阻断源;若确认,放行 DHCP 服务或端口:firewall-cmd --add-service=dhcp --permanent && firewall-cmd --reload(或放行 UDP 67/68)。
- 接入层安全策略:在交换机上启用 DHCP Snooping 并配置信任端口,必要时配合 IP Source Guard,防止伪造 DHCP 服务器与 IP 冲突。
三 作为DHCP服务器时的排查
- 配置语法与文件:dhcpd -t 检查 /etc/dhcp/dhcpd.conf 语法;必要时参考模板完善 subnet、range、routers、dns 等。
- 监听端口:ss -lunpt | grep dhcpd 或 ss -tulpn | grep 67,确认 UDP 67 处于监听。
- 服务状态与日志:systemctl status dhcpd;journalctl -u dhcpd -f;常见错误包括“No subnet declaration for ”(缺少对应子网声明)与“No free leases”(地址池耗尽)。
- 租约与地址冲突:cat /var/lib/dhcpd/dhcpd.leases 查看已分配租约;若疑似冲突,排查客户端静态 IP 冲突并清理异常租约。
- 防火墙与 SELinux:放行 UDP 67/68;如 SELinux 拦截,查看 /var/log/audit/audit.log 并按需调整策略,避免直接长期关闭 SELinux。
四 常见症状与对应处理
- 获取不到地址且提示“No DHCPOFFERS received”:多为无可用 DHCP 服务器、VLAN/物理隔离、虚拟网络模式不当或防火墙阻断;抓包无 OFFER 时优先检查网络路径与服务器可达性。
- 拿到地址后过一段时间丢失:常见于接口被 NetworkManager/其他进程反复重配置、租约异常或冲突;重启网络服务,释放并重新获取租约(dhclient -r; dhclient -4),核查日志与租约文件。
- 地址冲突:服务器侧出现 DHCPNAK 或客户端提示冲突;清理冲突租约,排查手工静态 IP 与交换机安全策略(DHCP Snooping、IP Source Guard)。
- 服务器侧“No free leases”:扩大 range、缩短租期、清理过期租约或增加地址池。
- 服务器启动失败或“No subnet declaration”:在 dhcpd.conf 中补充对应 subnet 声明,确保与服务器接口网段匹配。