温馨提示×

ubuntu dhcp怎样限制带宽

小樊
45
2026-10-18 18:23:18
栏目: 智能运维

在 Ubuntu 上通过 DHCP 本身是不能直接限制带宽的,DHCP 只负责分配 IP、网关、DNS 等网络参数。
要实现“通过 DHCP 分配的客户端限速”,通常做法是:

DHCP + 流量控制(tc / nftables / iptables)

下面给你几种常见、实用的方案。


方案一:DHCP + tc(推荐,最标准)

适用于:

  • Ubuntu 做网关 / 路由器
  • 使用 isc-dhcp-server

1. 安装 DHCP 服务

sudo apt update
sudo apt install isc-dhcp-server

2. 配置 DHCP(示例)

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;
}

3. 使用 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 变动需重新配置(可写脚本)


方案二:DHCP + iptables + tc(动态用户)

适合:

  • 用户经常变动
  • 按 MAC 或 IP 段限速

1. 标记 DHCP 用户

iptables -t mangle -A FORWARD -s 192.168.1.0/24 -j MARK --set-mark 10

2. tc 按 mark 限速

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(简单)

1. 安装

sudo apt install dnsmasq wondershaper

2. dnsmasq 分配固定 IP

dhcp-host=aa:bb:cc:dd:ee:ff,192.168.1.50

3. 限速脚本

wondershaper eth0 2048 2048

方案四:使用专业网关系统(最省心)

如果你不是必须纯 Ubuntu:

  • OpenWrt
  • pfSense
  • OPNsense

都支持:

  • DHCP
  • 每 IP / 每 MAC 限速
  • 图形界面

总结建议

需求 推荐方案
简单限速 tc
多用户 iptables + tc
图形界面 pfSense / OpenWrt
纯 Ubuntu isc-dhcp + tc

如果你愿意,可以告诉我:

  • Ubuntu 是 做路由器还是普通主机
  • 想限 上传 / 下载 / 双向
  • DHCP 服务用的是 isc-dhcp 还是 dnsmasq

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

0 踩