排查 Linux 下的 DHCP 故障,可以按**“分层排查”的思路进行:从客户端配置 → 网络连通性 → DHCP 服务 → 日志分析 → 防火墙/策略**逐步定位。
先明确是哪种故障:
ip addr
ip route
169.254.x.x(APIPA,说明 DHCP 失败)# DHCP 客户端为 dhclient
sudo dhclient -r eth0
sudo dhclient eth0
或(NetworkManager 环境):
sudo nmcli device reapply eth0
cat /etc/network/interfaces # Debian
cat /etc/sysconfig/network-scripts/ifcfg-eth0 # RHEL/CentOS
确认:
BOOTPROTO=dhcp
ONBOOT=yes
ip link
ethtool eth0
UPLink detected: yes如果是跨网段:
ping <dhcp-server-ip>
systemctl status dhcpd
# 或
systemctl status isc-dhcp-server
dhcpd -t
常见问题:
cat /var/lib/dhcpd/dhcpd.leases
在客户端抓 DHCP 包:
sudo tcpdump -i eth0 port 67 or port 68 -n
正常流程应是:
DHCP Discover
DHCP Offer
DHCP Request
DHCP Ack
常见问题:
iptables -L
firewall-cmd --list-all
确保:
firewall-cmd --add-service=dhcp
journalctl -u NetworkManager
journalctl -u dhclient
journalctl -u dhcpd
/var/log/messages
/var/log/syslog
| 现象 | 可能原因 |
|---|---|
| 获取 169.254.x.x | DHCP 无响应 |
| Discover 无 Offer | 服务未起 / 防火墙 |
| Offer 无 Ack | 地址冲突 / 配置错误 |
| 跨网段失败 | 未配置 DHCP 中继 |
| 偶尔掉线 | IP 冲突 / 租期过短 |
如果你愿意,可以告诉我:
tcpdump 输出我可以帮你精准定位是哪一步出问题。