CentOS DHCP故障怎么排查
导读:CentOS DHCP故障排查清单 一 快速定位思路 明确角色:是 DHCP 客户端(拿不到地址)还是 DHCP 服务器(租约发不出去)。 客户端优先做三步:看链路是否 UP、网卡是否配置为 DHCP、手动触发一次 DHCP 握手 并观察...
CentOS DHCP故障排查清单
一 快速定位思路
- 明确角色:是 DHCP 客户端(拿不到地址)还是 DHCP 服务器(租约发不出去)。
- 客户端优先做三步:看链路是否 UP、网卡是否配置为 DHCP、手动触发一次 DHCP 握手 并观察结果。
- 服务器侧核对:配置文件语法、监听端口 UDP 67、防火墙放行、地址池是否耗尽、租约文件与日志是否正常。
二 客户端排查步骤
- 查看链路与地址
- 执行:
ip -br link、ip -br addr、ip route,确认接口为 UP 且已有 IPv4 地址;若只有 127.0.0.1 或仅有 IPv6 链路本地,说明未拿到地址。
- 执行:
- 确认网卡使用 DHCP
- 查看配置文件(CentOS 7 常见):
cat /etc/sysconfig/network-scripts/ifcfg-< ifname>,确保有BOOTPROTO=dhcp、ONBOOT=yes;修改后执行systemctl restart NetworkManager(或systemctl restart network)。
- 查看配置文件(CentOS 7 常见):
- 激活接口并手动获取地址
- 执行:
ip link set < ifname> up - 释放并重取:
dhclient -r < ifname> & & dhclient -4 < ifname>(或dhclient -v < ifname>观察握手过程) - 若长时间卡在 DHCPDISCOVER 无回应,通常是网络模式/防火墙/无可用 DHCP 服务器导致。
- 执行:
- 虚拟机场景专项
- 确认虚拟网卡已“连接”,网络模式选择 NAT/桥接;改模式后建议重启虚拟机再测。
- 防火墙与安全组
- 临时关闭
firewalld验证是否为策略阻断:systemctl stop firewalld(验证后记得恢复并配置放行规则)。
- 临时关闭
三 服务器端排查步骤
- 安装与配置
- 安装:
yum install -y dhcp - 主配置:
/etc/dhcp/dhcpd.conf,至少包含subnet声明、range、option routers、option domain-name-servers等;可用dhcpd -t检查语法。
- 安装:
- 指定监听接口
- 编辑:
/etc/sysconfig/dhcpd,设置INTERFACES="eth0"(替换为实际接口)。
- 编辑:
- 启动与开机自启
- 执行:
systemctl start dhcpd、systemctl enable dhcpd
- 执行:
- 端口与防火墙
- 监听检查:
ss -tulpen | grep :67或ss -lun4 | grep 67,应看到 UDP 67 监听 - 放行规则:
firewall-cmd --permanent --add-service=dhcp & & firewall-cmd --reload
- 监听检查:
- 日志与租约
- 实时日志:
journalctl -u dhcpd -f或tail -f /var/log/messages | grep dhcpd - 租约文件:
/var/lib/dhcpd/dhcpd.leases,核对是否分配成功与租约时间
- 实时日志:
- 常见报错速查
- “No subnet declaration for eth0”:
dhcpd.conf缺少该接口所在子网的subnet声明 - “No free leases”:地址池耗尽,扩大
range或清理过期租约 - “DHCPNAK …”:客户端请求的 IP 冲突/租约异常,检查是否有静态同 IP 或冲突
- “No subnet declaration for eth0”:
四 抓包与网络连通性验证
- 在客户端抓 DHCP 握手
tcpdump -i < ifname> -nn -vv port 67 or port 68,正常应见到 DHCPDISCOVER → DHCPOFFER → DHCPREQUEST → DHCPACK 四步;若只有 DISCOVER 无 OFFER,通常是服务器未响应、网络隔离或防火墙阻断。
- 在服务器侧抓监听
tcpdump -i < ifname> -nn -vv udp port 67,确认收到客户端 DISCOVER 并发出 OFFER
- 服务器连通性测试
dhcping -c 4 < 服务器IP>,验证 DHCP 服务可达与响应性。
五 常见现象与处理对照表
| 现象 | 快速检查 | 处理要点 |
|---|---|---|
| 客户端只有 lo 或只有 IPv6 链路本地 | ip -br addr、ip link |
接口未 UP 或 BOOTPROTO 非 dhcp;ip link set up;修正 ifcfg 并 systemctl restart NetworkManager |
手动 dhclient 长时间无响应 |
tcpdump 是否见 DHCPOFFER |
网络模式错误(仅主机/隔离)、防火墙阻断、无可用 DHCP;改为 NAT/桥接、放行 UDP 67/68、确认上游有 DHCP |
| 拿到地址后过一段时间丢失 | journalctl -u dhcpd、/var/lib/dhcpd/dhcpd.leases |
租约过短/被他处 DHCP 抢占;延长租约、排查网络中其他 DHCP 服务器、核对网关与路由 |
| 服务器启动失败或报错 | dhcpd -t、`ss -lun4 |
grep 67` |
| “No free leases” | cat /var/lib/dhcpd/dhcpd.leases |
地址池耗尽;扩大 range、清理冲突/过期租约、检查是否有静态占用 |
| 虚拟机拿不到地址 | 虚拟网卡“连接”状态、网络模式 | 勾选“连接”,改为 NAT/桥接,重启虚拟机再测 |
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS DHCP故障怎么排查
本文地址: https://pptw.com/jishu/780473.html
