温馨提示×

debian dhcp为什么丢包

小樊
46
2026-09-07 22:11:12
栏目: 智能运维

在 Debian 上运行 DHCP 服务(通常是 ISC DHCP Server / isc-dhcp-serverKea DHCP)时出现“丢包”,不一定真的是网络丢包,而是 DHCP 请求/响应没有被正确处理。下面按常见原因 → 排查方法来说明。


一、最常见原因

1. 接口没有正确监听(最容易忽略)

DHCP 只在指定接口上工作。

检查:

cat /etc/default/isc-dhcp-server

应有:

INTERFACESv4="eth0"

否则 DHCP 请求会“看似丢包”。

✅ 修复:

INTERFACESv4="eth0"
systemctl restart isc-dhcp-server

2. 防火墙(iptables / nftables)拦截

DHCP 使用:

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

检查:

iptables -L -n -v

✅ 允许:

iptables -A INPUT -p udp --dport 67 -j ACCEPT
iptables -A INPUT -p udp --dport 68 -j ACCEPT

3. 广播问题(跨 VLAN / 子网)

DHCP 是广播协议,以下情况会“丢包”:

  • 客户端和 DHCP 不在同一广播域
  • 没有 DHCP Relay(dhcrelay)
  • 交换机未开启 ip helper-address

✅ 解决:

  • 同 VLAN 测试
  • 或使用 dhcrely

4. 地址池耗尽

日志里常见:

no free leases

检查:

cat /var/lib/dhcp/dhcpd.leases

✅ 扩大地址池:

range 192.168.1.100 192.168.1.200;

5. MAC 绑定 / 拒绝规则

配置中如果有:

deny unknown-clients;

未绑定的设备会被“静默丢弃”。


6. 多网卡 / 路由混乱

如果 Debian 有多网卡,但:

  • 默认路由错误
  • 回包从别的口出去

客户端会收不到 Offer。


二、如何确认是不是“真丢包”

1. 抓包(最准)

tcpdump -i eth0 udp port 67 or udp port 68
  • 能看到 DISCOVER → 说明客户端正常
  • 没有 OFFER → 服务器问题

2. 查看 DHCP 日志

journalctl -u isc-dhcp-server
# 或
tail -f /var/log/syslog

三、快速自检清单 ✅

  • [ ] INTERFACESv4 配置正确
  • [ ] 防火墙放行 67/68
  • [ ] 同一广播域或配置 relay
  • [ ] 地址池未满
  • [ ] 没有 deny unknown-clients
  • [ ] tcpdump 能看到请求

如果你愿意,可以贴:

  • Debian 版本
  • dhcpd.conf
  • tcpdump 输出

我可以帮你精准定位是哪一层丢的包

0