温馨提示×

linux dhcp怎样限速

小樊
38
2026-09-25 01:05:40
栏目: 智能运维

在 Linux 上做 DHCP 限速,通常分两种理解,下面分别说明,并给出常见做法。


一、DHCP 本身不能限速(先说清楚)

DHCP 协议只负责分配 IP,不控制流量速率
所以“DHCP 限速”一般是指:

通过 DHCP 分配 IP 后,对对应客户端进行带宽限制

常见实现方式有两种:


二、方式一:DHCP + TC(流量控制,推荐)

思路

  • isc-dhcp-server 分配固定 IP
  • 根据 IP 或 MAC 用 tc 限速
  • 可配合脚本在 lease 时自动加规则

示例:限制某 IP 上行/下行速率

# 限制 eth0 上 192.168.1.100 的速率为 1M
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:10 htb rate 1mbit ceil 1mbit
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
  match ip dst 192.168.1.100 flowid 1:10

这是下行限速(从服务器到客户端)


自动限速(DHCP lease 时)

在 dhcpd.conf 中:

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
  on commit {
    exec "/usr/local/bin/limit.sh", clientIP;
  }
}

limit.sh 里写 tc 命令即可。


三、方式二:DHCP + 防火墙(iptables / nftables)

限制某个网段速率

# 限制 192.168.1.0/24 总带宽
tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms

或更精细:

iptables -A FORWARD -s 192.168.1.0/24 -m limit --limit 100/s -j ACCEPT

适合简单粗粒度限速


四、方式三:使用 dnsmasq(轻量方案)

dnsmasq 本身不支持限速,但可配合 tc:

dhcp-range=192.168.1.100,192.168.1.200,12h

再按 IP 写 tc 规则。


五、方式四:用专业网管工具(企业环境)

如果你是要做真正用户级限速,推荐:

  • ✅ OpenWrt + SQM
  • ✅ RouterOS(MikroTik)
  • ✅ FreeRADIUS + CoA
  • ✅ Panabit / 爱快

六、总结建议

需求 推荐方案
简单限速 tc + DHCP
自动按用户 DHCP on commit + tc
企业级 RADIUS / 网管系统
路由器环境 OpenWrt SQM

如果你能告诉我:

  • 用的是 isc-dhcp / dnsmasq / 路由器
  • 限速是 上行 / 下行 / 总带宽
  • 单 IP 还是整网段

我可以直接给你一套可复制的配置。

0 踩