温馨提示×

linux dhcp怎么排查

小樊
51
2026-09-09 18:08:01
栏目: 智能运维

在 Linux 下排查 DHCP 相关问题,可以按「客户端 → 服务端 → 网络 → 日志」逐步定位。下面给你一套实用排查思路。


一、先确认是“拿不到地址”还是“地址有问题”

常见现象:

  • 一直 192.168.x.x169.254.x.x(APIPA,没拿到 DHCP)
  • 拿到了但上不了网
  • 地址冲突 / 租约异常

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

1. 查看当前 IP

ip addr

ifconfig

如果是 169.254.* → 基本是 DHCP 失败。


2. 手动释放并重新获取

DHCP 客户端不同,命令不同

systemd 系统(主流)

sudo dhclient -r eth0
sudo dhclient eth0

sudo systemctl restart networking

NetworkManager

nmcli device reapply eth0

nmcli connection down eth0
nmcli connection up eth0

3. 实时看 DHCP 过程(非常关键)

sudo dhclient -v eth0

观察是否:

  • 发送 DISCOVER
  • 收到 OFFER
  • 发送 REQUEST
  • 收到 ACK

卡在哪一步,问题就在那一侧。


三、服务端排查(如果你是 DHCP Server)

1. 服务是否运行

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

2. 配置文件检查

常见文件:

  • ISC DHCP:/etc/dhcp/dhcpd.conf
  • dnsmasq:/etc/dnsmasq.conf

重点看:

  • subnet 网段是否正确
  • range 地址池是否够
  • 网关 / DNS 是否配置
  • 接口是否绑定正确

3. 地址池是否耗尽

cat /var/lib/dhcp/dhcpd.leases

看有没有可用 IP。


四、网络层排查(非常容易忽略)

1. 防火墙是否拦了 DHCP

DHCP 用:

  • UDP 67(Server)
  • UDP 68(Client)
sudo iptables -L -n

sudo nft list ruleset

2. 是否在正确 VLAN / 网段

  • 跨 VLAN 必须配置 DHCP Relay(DHCP 中继)
  • 交换机端口 VLAN 配错,永远拿不到

3. 抓包(终极手段)

sudo tcpdump -i eth0 port 67 or port 68

看:

  • 有没有 DISCOVER
  • 有没有 OFFER 回来

五、日志排查

客户端日志

journalctl -u NetworkManager
journalctl -u dhclient

服务端日志

journalctl -u isc-dhcp-server
/var/log/syslog
/var/log/messages

六、常见坑总结

✅ 网卡没 up
✅ DHCP 服务没监听正确网卡
✅ 虚拟机桥接模式配错
✅ 多 DHCP 服务器冲突
✅ 静态 IP 和 DHCP 混用
✅ 租约时间太短导致频繁掉线


如果你愿意,可以把下面信息发我,我可以直接帮你定位:

  1. 发行版(CentOS / Ubuntu / 麒麟等)
  2. 是客户端还是服务器
  3. dhclient -v 的输出
  4. 网络环境(物理机 / 虚拟机 / 容器 / 云)

我可以直接给你“下一步该敲哪条命令”。

0