温馨提示×

怎样排查linux dhcp故障

小樊
38
2026-09-03 15:58:11
栏目: 智能运维

排查 Linux 下的 DHCP 故障,可以按**“分层排查”的思路进行:从客户端配置 → 网络连通性 → DHCP 服务 → 日志分析 → 防火墙/策略**逐步定位。


一、确认问题现象

先明确是哪种故障:

  • 客户端获取不到 IP
  • 获取到 IP 但无法上网
  • IP 冲突 / 频繁掉线
  • 特定网段 / 特定主机有问题

二、客户端排查(最常见)

1. 查看当前网络状态

ip addr
ip route
  • 是否是 169.254.x.x(APIPA,说明 DHCP 失败)
  • 是否有默认网关

2. 手动释放并重新获取

# DHCP 客户端为 dhclient
sudo dhclient -r eth0
sudo dhclient eth0

或(NetworkManager 环境):

sudo nmcli device reapply eth0

3. 检查网卡是否启用 DHCP

cat /etc/network/interfaces        # Debian
cat /etc/sysconfig/network-scripts/ifcfg-eth0  # RHEL/CentOS

确认:

BOOTPROTO=dhcp
ONBOOT=yes

三、网络与连通性排查

1. 确认链路正常

ip link
ethtool eth0
  • 网卡是否 UP
  • 是否 Link detected: yes

2. 确认能到达 DHCP 服务器

如果是跨网段:

ping <dhcp-server-ip>
  • 跨 VLAN 必须配置 DHCP Relay(DHCP 中继)

四、DHCP 服务端排查(若你管理服务器)

1. 服务是否运行

systemctl status dhcpd
# 或
systemctl status isc-dhcp-server

2. 配置文件检查

dhcpd -t

常见问题:

  • 子网写错
  • 网关/DNS 配置错误
  • 地址池耗尽

3. 地址池是否满

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

常见问题:

  • 只有 Discover,没有 Offer → 服务端/中继问题
  • 有 Offer 但无 Ack → 配置或冲突

六、防火墙与安全策略

1. 客户端防火墙

iptables -L
  • 不应拦截 67/68 端口

2. 服务端防火墙

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 冲突 / 租期过短

如果你愿意,可以告诉我:

  • 客户端还是服务器
  • Linux 发行版(CentOS / Ubuntu 等)
  • 报错日志或 tcpdump 输出

我可以帮你精准定位是哪一步出问题

0