温馨提示×

CentOS DHCP故障排查步骤

小樊
31
2025-12-07 11:38:17
栏目: 智能运维

CentOS DHCP故障排查步骤

一 快速判定与定位

  • 明确角色:是 DHCP客户端(获取地址)还是 DHCP服务器(分配地址)。
  • 客户端快速自检:
    • 查看链路与地址:ip -br linkip -br addr,确认网卡为 UP 且是否有 inet 地址。
    • 查看路由:ip route,确认是否存在 default 路由。
    • 手动触发获取:dhclient -v <iface>,观察是否出现 DHCPACK;若一直卡在 DHCPDISCOVER,多为服务器不可达、被防火墙阻断或地址池耗尽。
    • 虚拟机场景:确认网卡已“连接”,网络模式为 NAT/桥接 且与宿主机同网段;必要时重启实例后复测。
    • 服务管理:使用 systemctl status NetworkManagersystemctl status systemd-networkd 确认网络栈运行正常。

二 客户端排查清单

  • 配置核对:编辑网卡配置文件(如 /etc/sysconfig/network-scripts/ifcfg-),确保 BOOTPROTO=dhcpONBOOT=yes;修改后执行 systemctl restart NetworkManager(或 systemctl restart network)。
  • 接口与链路:若 ip linkDOWN,执行 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)。
  • 特殊场景:
    • 长时间运行后出现“突然没 IP”,可能是 dhclient 进程被清理 或续租失败,按官方指引重启 dhclient/检查进程与租约文件。
    • 调整过系统时间且跨度超过 租约时间 会导致续租失败与 IP 丢失,恢复正确时间后重建租约。

三 服务器排查清单

  • 服务与语法:
    • 安装:yum install dhcp(或 dnf)。
    • 启动与开机:systemctl start dhcpdsystemctl enable dhcpd
    • 配置校验:dhcpd -t 检查 /etc/dhcp/dhcpd.conf 语法;服务启动失败用 systemctl status dhcpdjournalctl -xe 定位。
  • 配置要点:
    • 必须包含与服务器本机地址在同一网段的 subnet 声明,否则服务会忽略该接口请求(日志典型提示:No subnet declaration for )。
    • 示例最小配置:
      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
  • 地址池与冲突:
    • 检查是否 地址池耗尽、存在 过期租约冲突 IP(服务器端日志/租约文件与告警),必要时扩容网段或清理冲突记录。
  • 防火墙与网络:
    • 放通 UDP 67/68(DHCP 服务器/客户端端口),确认与客户端二层可达(同一 VLAN/网段 或路由可达)。

四 抓包与日志分析

  • 服务器端抓包定位握手是否到达与回应是否发出:
    • tcpdump -i <iface> -nn -vv port 67 or port 68
    • 正常交互应见到 DHCPDISCOVER → DHCPOFFER → DHCPREQUEST → DHCPACK;若只有 DISCOVER 无 OFFER,多为服务器未监听该网段、配置无匹配 subnet、或被防火墙丢弃。
  • 客户端详细输出:dhclient -v <iface> 可直接看到 DISCOVER/OFFER/REQUEST/ACK 过程与对端 IP
  • 系统日志:
    • 服务器:tail -f /var/log/messagesjournalctl -u dhcpd -xe
    • 客户端:tail -f /var/log/messages/var/log/syslog,关注 dhclient 与网络服务报错。

五 常见症状与修复对照表

症状 快速检查 修复建议
客户端 ip addrIPv4 ip -br addrip linkdhclient -v 确认 BOOTPROTO=dhcpONBOOT=yes,接口为 UP;虚拟机检查网卡连接与 NAT/桥接;必要时 dhclient -r 后重取
获取 IP 后过一段时间丢失 `ps aux grep dhclientcat /var/lib/dhclient/*.leases`
服务器启动失败 systemctl status dhcpdjournalctl -xedhcpd -t 补全 /etc/dhcp/dhcpd.confsubnetrange;确保本机接口在该网段
一直卡在 DISCOVER 服务器抓包、客户端 dhclient -v、防火墙 放通 UDP 67/68;核对服务器 subnet 匹配与接口监听;排查二层连通性
提示 No subnet declaration journalctl 日志 为对应接口所在网段添加 subnet 声明
地址冲突或租约异常 服务器日志、租约文件 清理冲突记录、扩容 range、检查网关/DNS 配置一致性
虚拟机拿不到地址 网卡连接状态、网络模式 勾选“连接”,使用 NAT/桥接;必要时重启实例再测

0