在 Debian 上排查 DHCP 故障,通常分 服务器端(DHCP Server) 和 客户端(获取不到 IP) 两类。下面按常见场景给你一套系统排查思路。
Debian 常见 DHCP 软件:
isc-dhcp-serverkeadnsmasqdhclient 或 systemd-networkd先确认:
dpkg -l | grep -E "isc-dhcp-server|kea|dnsmasq"
systemctl status isc-dhcp-server
# 或
systemctl status kea-dhcp4-server
没运行的话:
journalctl -xeu isc-dhcp-server
ISC DHCP 主配置:
/etc/dhcp/dhcpd.conf
常见错误:
subnet)和接口 IP 不匹配range检查语法:
dhcpd -t
ISC DHCP:
/etc/default/isc-dhcp-server
确认:
INTERFACESv4="eth0"
DHCP 用:
检查:
iptables -L -n -v | grep -E "67|68"
临时放行:
iptables -A INPUT -p udp --dport 67 -j ACCEPT
tcpdump -i eth0 udp port 67 or udp port 68
ip addr
ip link
如果 DOWN:
ip link set eth0 up
dhclient -v eth0
看输出有没有:
Debian 12 常用:
/etc/network/interfacessystemd-networkdauto eth0
iface eth0 inet dhcp
应用:
ifdown eth0; ifup eth0
journalctl -u dhclient
# 或
journalctl -f
tcpdump -i eth0 udp port 68
| 现象 | 可能原因 |
|---|---|
| 一直 DHCPDISCOVER | 服务器没响应 / 网段不对 |
| 有 OFFER 但没 ACK | 地址冲突 / 配置错误 |
| 获取的是 169.254.x.x | DHCP 彻底失败(APIPA) |
| 虚拟机拿不到 IP | 桥接 / NAT 设置错误 |
| VLAN 环境异常 | DHCP 中继未配置 |
ip addr
ping 网关
systemctl status isc-dhcp-server
dhcpd -t
tcpdump -i eth0 udp port 67
dhclient -v eth0
如果你愿意,可以告诉我:
cat /etc/os-release)tcpdump 输出我可以帮你精确定位问题。