温馨提示×

CentOS DHCP故障排查步骤有哪些

小樊
42
2025-11-19 19:07:49
栏目: 智能运维

CentOS DHCP故障排查步骤

一 客户端快速自检

  • 确认网卡处于UP并获取到地址:ip addr show ;如未激活,执行 ip link set up 或 nmcli device connect
  • 查看是否由NetworkManagersystemd-networkd管理:systemctl status NetworkManager;必要时启动并设为开机自启。
  • 核对接口配置(/etc/sysconfig/network-scripts/ifcfg-):确保 BOOTPROTO=dhcpONBOOT=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 声明,确保与服务器接口网段匹配。

0