在 Ubuntu 上通过 DHCP 本身是不能直接限制带宽的,DHCP 只负责分配 IP、网关、DNS 等网络参数。
要实现“通过 DHCP 分配的客户端限速”,通常做法是:
DHCP + 流量控制(tc / nftables / iptables)
下面给你几种常见、实用的方案。
tc(推荐,最标准)适用于:
isc-dhcp-serversudo apt update
sudo apt install isc-dhcp-server
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8;
}
tc 限制带宽(按 IP)假设内网网卡是 eth0,限制 192.168.1.100 为 2Mbps:
# 根队列
sudo tc qdisc add dev eth0 root handle 1: htb default 30
# 总带宽
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
# 限速类
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 2mbit ceil 2mbit
# 过滤(按 IP)
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
match ip dst 192.168.1.100 flowid 1:10
✅ 优点:精确、稳定
❌ 缺点:IP 变动需重新配置(可写脚本)
iptables + tc(动态用户)适合:
iptables -t mangle -A FORWARD -s 192.168.1.0/24 -j MARK --set-mark 10
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:10 htb rate 5mbit
tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 10 fw flowid 1:10
dnsmasq + wondershaper(简单)sudo apt install dnsmasq wondershaper
dhcp-host=aa:bb:cc:dd:ee:ff,192.168.1.50
wondershaper eth0 2048 2048
如果你不是必须纯 Ubuntu:
都支持:
| 需求 | 推荐方案 |
|---|---|
| 简单限速 | tc |
| 多用户 | iptables + tc |
| 图形界面 | pfSense / OpenWrt |
| 纯 Ubuntu | isc-dhcp + tc |
如果你愿意,可以告诉我:
我可以给你一套可直接用的配置。