温馨提示×

debian dhcp怎样排错

小樊
43
2026-10-07 18:44:17
栏目: 智能运维

在 Debian 上排查 DHCP 问题,通常可以按客户端和服务器两类来分别处理。下面给你一套比较实用的排错思路。


一、先确认你是哪一类问题

  • 客户端获取不到 IP(DHCP Client)
  • 服务器不下发 IP(DHCP Server,通常是 isc-dhcp-server)

二、DHCP 客户端排错(Debian 作为客户端)

1. 看网络接口是否 up

ip link
ip addr

确保网卡是 UP 状态,例如:

ip link set eth0 up

2. 手动请求 DHCP(最有用)

dhclient -v eth0

观察输出:

  • 有没有 DHCPDISCOVER
  • 有没有 DHCPOFFER
  • 有没有 DHCPACK

如果卡在 DHCPDISCOVER,说明:

  • 网络不通
  • 没 DHCP 服务器
  • 防火墙拦截

3. 检查 NetworkManager / systemd-networkd 冲突

Debian 常见坑:

  • NetworkManager 和 dhclient 抢接口

查看:

systemctl status NetworkManager
systemctl status systemd-networkd

如果是服务器,建议:

systemctl stop NetworkManager
systemctl disable NetworkManager

4. 检查防火墙

iptables -L
nft list ruleset

DHCP 用:

  • UDP 67(服务器)
  • UDP 68(客户端)

三、DHCP 服务器排错(isc-dhcp-server)

1. 服务是否运行

systemctl status isc-dhcp-server
journalctl -u isc-dhcp-server -e

常见错误:

  • 配置文件语法错误
  • 监听网卡不对

2. 配置文件检查

dhcpd -t

或:

/usr/sbin/dhcpd -t -cf /etc/dhcp/dhcpd.conf

3. 确认监听网卡

编辑:

/etc/default/isc-dhcp-server

示例:

INTERFACESv4="eth0"

重启:

systemctl restart isc-dhcp-server

4. 看租约日志(非常关键)

tail -f /var/log/syslog

或:

journalctl -u isc-dhcp-server -f

正常应看到:

DHCPDISCOVER
DHCPOFFER
DHCPREQUEST
DHCPACK

5. 子网配置示例(常见错误点)

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
  option routers 192.168.1.1;
  option domain-name-servers 8.8.8.8;
}

注意:

  • subnet 必须和网卡 IP 在同一网段
  • 否则 dhcpd 不监听

四、跨网段 / VLAN / 中继问题

如果是:

  • 客户端和 DHCP 不在同一广播域

需要:

  • DHCP Relay(dhcrelay)
  • 或交换机 ip helper-address

测试:

tcpdump -i eth0 udp port 67 or udp port 68

看有没有 DHCP 包到达服务器。


五、快速排错清单(总结)

✅ 网卡 UP
✅ 无 NetworkManager 冲突
✅ dhclient 能发请求
✅ 服务器配置语法正确
✅ subnet 匹配网卡 IP
✅ 防火墙未拦 UDP 67/68
✅ 日志中有 DHCP 交互


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

  • Debian 版本
  • 是客户端还是服务器
  • /etc/dhcp/dhcpd.conf
  • journalctl -u isc-dhcp-server 报错

我可以按你的实际环境一步步排。

0 踩