在 Linux 上“DHCP 限速”通常指两种场景,需要区分清楚:
** DHCP 只负责分配 IP,不直接限速 **
DHCP 本身(isc-dhcp / dnsmasq)不能限制带宽,只能分配 IP、网关、DNS。
** 真正限速要在“网关/网桥/接口”上做 **
常见做法:DHCP + tc / iptables / nftables / dnsmasq 限速插件。
下面按常见方案说明。
如果你用 dnsmasq 作为 DHCP 服务器,它可以配合 tc 或自身限制。
# /etc/dnsmasq.conf
dhcp-host=aa:bb:cc:dd:ee:ff,192.168.1.100,limit-pc
# 限制 192.168.1.100 上行/下行
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
⚠️ 缺点:IP 固定才好限,动态 IP 要脚本配合。
适合“每个 DHCP 客户端都限速”。
# /etc/dhcp/dhcpd.conf
on commit {
execute("/usr/local/bin/limit.sh", clientip);
}
#!/bin/bash
# limit.sh
tc class add dev eth0 parent 1: classid 1:${RANDOM} htb rate 2mbit
tc filter add dev eth0 u32 match ip dst $1 flowid 1:${RANDOM}
table inet filter {
chain forward {
type filter hook forward priority 0;
ip saddr 192.168.1.0/24 limit rate 2 mbytes/second accept
}
}
配合 DHCP 固定地址效果最好。
如果你是用 OpenWrt:
✅ 最简单,不需要命令行
| 场景 | 推荐方案 |
|---|---|
| 家庭/小公司 | dnsmasq + tc |
| 动态客户端 | DHCP 脚本 + tc |
| 路由器 | OpenWrt SQM |
| 企业 | 交换机/防火墙限速 |
如果你能告诉我:
我可以直接给你一份可复制的配置。