在 Linux 上“DHCP 限速”通常有两种理解,下面分别说明,并给出常见做法。
DHCP 协议只负责分配 IP,不控制流量速率。
所以:
思路:
iptables 打标记tc 限速# 给 192.168.1.100 打标记
iptables -t mangle -A FORWARD -s 192.168.1.100 -j MARK --set-mark 10
iptables -t mangle -A FORWARD -d 192.168.1.100 -j MARK --set-mark 10
# 使用 tc 限速(假设出口 eth0)
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 handle 10 fw classid 1:10
✅ 适合:路由器 / 网关服务器
在 dhcpd.conf 中:
host pc1 {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.100;
}
然后写脚本,在 DHCP 分配后自动加 tc 规则(可用 on commit 或外部脚本)
dnsmasq 本身不能限速,但可:
dhcp-host=00:11:22:33:44:55,192.168.1.100
如果环境允许:
做 per-IP / per-MAC 限速
✅ 性能最好,不占用 Linux CPU
如果你用的是 OpenWrt:
| 场景 | 推荐方式 |
|---|---|
| Linux 网关 | iptables + tc |
| 软路由 | OpenWrt + SQM |
| 企业网络 | 交换机/AC 限速 |
| 只想简单控制 | 固定 IP + tc |
如果你能告诉我:
我可以直接给你一份可复制的配置。