温馨提示×

debian dhcp如何调试故障

小樊
42
2026-10-19 12:27:40
栏目: 智能运维

在 Debian 上排查 DHCP 故障,通常分为 服务器端(isc-dhcp-server / kea) 和 客户端(DHCP 获取失败) 两类。下面按“通用思路 + 常见命令 + 典型问题”来说明。


一、先确认基本环境

1. 确认 DHCP 服务是否安装

dpkg -l | grep -E 'isc-dhcp-server|kea'

常见服务名:

  • 传统:isc-dhcp-server
  • 新方案:kea-dhcp4

2. 查看服务状态

systemctl status isc-dhcp-server
# 或
systemctl status kea-dhcp4-server

如果失败:

journalctl -u isc-dhcp-server -xe

二、服务端调试(DHCP Server)

1. 前台运行(最常用调试方式)

dhcpd -f -d -cf /etc/dhcp/dhcpd.conf
  • -f:前台运行
  • -d:调试日志
  • -cf:指定配置文件

会直接打印 DHCPDISCOVER / DHCPOFFER / DHCPREQUEST 等过程

2. 打开详细日志

编辑:

/etc/default/isc-dhcp-server

加入:

OPTIONS="-d"

或在 dhcpd.conf 中:

log-facility local7;

配合 /etc/rsyslog.conf 输出到单独文件。

3. 检查配置文件语法

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

4. 确认监听网卡

/etc/default/isc-dhcp-server

示例:

INTERFACESv4="eth0"

查看是否监听:

ss -upln | grep dhcp

三、客户端调试(获取不到 IP)

1. 手动获取 IP

dhclient -v eth0

释放再获取:

dhclient -r eth0
dhclient -v eth0

2. 抓包(非常关键)

tcpdump -i eth0 port 67 or port 68

你应该看到:

  • DHCPDISCOVER
  • DHCPOFFER
  • DHCPREQUEST
  • DHCPACK

3. 查看客户端日志

journalctl -u networking
journalctl -u dhclient

四、常见故障与排查点

1. 防火墙拦了 DHCP

iptables -L -n

确保:

  • UDP 67(server)
  • UDP 68(client)

临时关闭测试:

systemctl stop nftables

2. 交换机 / VLAN 问题

  • 跨网段必须有 DHCP Relay(dhcrelay)
  • 同 VLAN 才能直接广播

3. 地址池耗尽

服务端日志常见:

no free leases on subnet

解决:

  • 扩大 range
  • 缩短 default-lease-time

4. MAC 绑定冲突

host fixed {
  hardware ethernet 00:11:22:33:44:55;
  fixed-address 192.168.1.50;
}

若 IP 不在 subnet 内会直接失败。


5. 多网卡导致服务起不来

dhcpd 只会在指定接口启动,否则:

Not configured to listen on any interfaces!

五、Kea(Debian 新默认方案)简要调试

systemctl status kea-dhcp4-server
journalctl -u kea-dhcp4-server

配置文件:

/etc/kea/kea-dhcp4.conf

测试配置:

kea-dhcp4 -t /etc/kea/kea-dhcp4.conf

六、快速排查清单(建议顺序)

  1. systemctl status
  2. journalctl -xe
  3. dhcpd -t
  4. dhcpd -f -d
  5. tcpdump
  6. dhclient -v
  7. 查防火墙 / VLAN / 地址池

如果你愿意,可以贴出:

  • Debian 版本
  • 用的 DHCP 软件(isc / kea)
  • 报错日志或 tcpdump 输出

我可以直接帮你定位具体原因。

0 踩