DHCP故障可分为客户端无法获取IP和服务端无法分配IP两类,以下是系统化的排查步骤:
使用ip addr show <接口名>(如eth0)查看接口是否处于UP状态(state UP),并确认是否已分配IP地址(若有inet字段则表示已获取IP)。若接口未激活,用ip link set <接口名> up开启。
CentOS中DHCP客户端服务为dhclient,执行systemctl status dhclient.service检查是否运行。若未运行,用systemctl start dhclient.service启动;若需开机自启,执行systemctl enable dhclient.service。
执行sudo dhclient -v <接口名>(如eth0),-v参数会显示详细交互过程(如发送DHCPDISCOVER、接收DHCPOFFER等)。若输出中出现“no DHCPOFFER received”(无服务器响应)或“timeout”(超时),说明与服务端通信存在问题。
DHCP客户端配置文件为/etc/sysconfig/network-scripts/ifcfg-<接口名>(如ifcfg-eth0),确保以下关键参数正确:
BOOTPROTO=dhcp(必须为dhcp,static/none会导致无法自动获取);ONBOOT=yes(网卡随系统启动自动激活);IPADDR、NETMASK等静态IP配置(避免与DHCP冲突)。systemctl stop firewalld),若能获取IP,则需放行DHCP端口(UDP 67/68):firewall-cmd --add-service=dhcp --permanent + firewall-cmd --reload;grep dhcp /var/log/audit/audit.log | audit2why),必要时调整策略。ip neigh show查看是否有冲突的IP地址(FAILED状态),若有,可尝试重启网络(systemctl restart network)或手动释放/重新获取IP(dhclient -r <接口名> + dhclient <接口名>);使用journalctl -u dhclient.service或grep dhclient /var/log/messages查看详细日志,常见错误包括“无法连接到DHCP服务器”(服务端未运行)、“接口未激活”(网络配置问题)。
执行systemctl status dhcpd(CentOS 7+)或service dhcpd status(CentOS 6)查看服务是否运行。若未运行,用systemctl start dhcpd启动;若需开机自启,执行systemctl enable dhcpd。
DHCP服务端配置文件为/etc/dhcp/dhcpd.conf,使用dhcpd -t命令检查语法(无输出表示正常)。常见语法错误包括:缺少分号、括号不匹配、subnet声明错误(如子网掩码格式不对)。
执行ss -tulpn | grep dhcpd,正常应看到udp 0.0.0.0:67(DHCP服务器端口)和udp 0.0.0.0:68(DHCP客户端端口)。若未监听67端口,可能是配置文件中INTERFACES未指定正确接口(如/etc/sysconfig/dhcpd中的INTERFACES="eth0")。
tail -f /var/log/dhcpd.log),若有“no address available in pool”(地址池无可用IP),需扩大地址池范围(修改range参数)或清理过期/冲突IP;dhcpd -t时会自动检查冲突,也可查看日志中的“duplicate IP address”记录,手动释放冲突IP(ip addr del <IP>/<掩码> dev <接口名>)。使用firewall-cmd --list-services检查是否放行dhcp服务,若未放行,执行firewall-cmd --add-service=dhcp --permanent + firewall-cmd --reload。若使用iptables,需添加规则:iptables -A INPUT -p udp --dport 67:68 --dport 67:68 -j ACCEPT。
在服务端本地执行sudo dhclient -v <接口名>(如eth0),模拟客户端请求,查看是否能正常获取IP。若本地能获取,但客户端无法获取,可能是网络中间设备(如路由器、交换机)阻断了DHCP广播。
DHCP服务端日志默认位于/var/log/messages或/var/log/dhcpd.log,使用tail -f /var/log/dhcpd.log实时查看。常见日志信息:
通过以上步骤,可逐步定位并解决CentOS环境下DHCP故障。需根据具体场景(客户端/服务端)选择对应排查路径,优先检查基础配置(如接口状态、服务运行、防火墙),再深入分析日志细节。