查看: 18787|回复: 27
【限速教程】之 定时限速 新手级教程
[复制链接]
weigefenxiang
weigefenxiang
当前离线
积分426
IP卡
狗仔卡
电梯直达
1#
发表于 2023-6-4 18:57
|
只看该作者
|倒序浏览
|阅读模式
本帖最后由 weigefenxiang 于 2023-6-9 18:29 编辑
本文仅针对有「定时限速」需求的小白。
新手教程,会用通俗的话来介绍,方便理解,如果有说错的地方欢迎指出。
TC (Traffic Control)命令—linux自带高级流控
iptables 对 ip 、mac、时间等进行筛选(过滤)
效果图
Windows (下行限速100M,上行3M)
WiFi 只对上行进行限速
亲戚都在家,只能拿副宽做测试
重点
固件支持 tc + iptablestc + iptables 相关核心(重要),编译过程中加上(帖子最下方有详细说明)
关闭硬件加速功能(流量监控,限速必要条件)
下面以 360T7 H大固件 作为例子,需要在终端(ssh、ttyd等)完成
步骤:
1.1 清空规则
避免其他规则干扰
# 我的上行端口 pppoe-wan
upDEV="pppoe-wan"
tc qdisc del dev $upDEV root 2>/dev/null
iptables -t mangle -F PREROUTING复制代码
1.2 上传限速
192.168.1.50 最低保障速率 1Mpbs 限速 3Mpbs
192.168.1.51 最低保障速率 8Mpbs 限速 10Mpbs, 时间为 周一至周五,22:17 至 18:20(次日)
192.168.1.100-192.168.1.254 最低保障速率 1Mpbs 限速 3Mpbs复制代码
将下面脚本代码 小作修改后,直接粘贴到终端,即可食用
#!/bin/sh
# 我的上行端口 pppoe-wan,这里请改为你的WAN口(或上行口),查看命令 ifconfig ,自行判断
upDEV="pppoe-wan"
# 1: (即 1:0 的缩写) 填哪个都行
tc qdisc add dev $upDEV root handle 1: htb default 8
# rate 50mbit = 50Mpbs,这里一般填写上行带宽速率
tc class add dev $upDEV parent 1:0 classid 1:1 htb rate 50mbit
tc class add dev $upDEV parent 1:1 classid 1:11 htb rate 1mbit ceil 3mbit
tc class add dev $upDEV parent 1:1 classid 1:12 htb rate 8mbit ceil 10mbit
# 这里别写错了,是 parent 1:0
tc filter add dev $upDEV parent 1:0 protocol ip handle 2011 fw classid 1:11
tc filter add dev $upDEV parent 1:0 protocol ip handle 2012 fw classid 1:12
# iptables 设置
iptables -t mangle -A PREROUTING -s 192.168.1.50 -j MARK --set-xmark 2011
iptables -t mangle -A PREROUTING -s 192.168.1.50 -j RETURN
iptables -t mangle -A PREROUTING -s 192.168.1.51 -j MARK --set-xmark 2012 -m time --timestart 22:17 --timestop 18:20 --kerneltz --weekdays 1,2,3,4,5
iptables -t mangle -A PREROUTING -s 192.168.1.51 -j RETURN
iptables -t mangle -A PREROUTING -m iprange --src-range 192.168.1.100-192.168.1.254 -j MARK --set-xmark 2011
iptables -t mangle -A PREROUTING -m iprange --src-range 192.168.1.100-192.168.1.254 -j RETURN复制代码
命令解释:
# tc命令
# rate :最低保障速率
# ceil : 最高速率 (如不设置该项,最高速率=rate)
# parent 1:1 classid 1:11 : 这条规则继承父类(1:1),命名为1:11 。
# handle 2011 : tc对于 iptables标记为(1:11)2011的包 ,进行限速,最低25Mpbs,最高40Mps
# PREROUTING :(一般用作处理上行)
# iptables
# -s 192.168.1.50 :筛选 来源于 150 的IP
# -j MARK --set-xmark 2011 :对包进行标记 2011,交给 tc 分辨
# -s 192.168.1.50 -j RETURN :来源于 192.168.1.50 不再往下进行过滤) 可以理解为快速跳过这个步骤。
# -m time --timestart 22:17 --timestop 18:20 : 时间段控制 22:17~18:20(次日)
# --kerneltz :(系统时间,如不设置,iptables以UTC为标准,实际生效时间会比北京时间晚8小时整)
# --weekdays 1,2,3,4,5 :(周一至周五)
# 注:-m iprange 需 iptables-mod-iprange 模块,若是ip很多,务必使用 iprange 减少规则。
# -m iprange --dst-range 192.168.1.100-192.168.1.254 :过滤IP段X.[100-254]复制代码
1.3 查看以上命令是否生效
tc qdisc show dev $upDEV
tc class show dev $upDEV
iptables -t mangle -L PREROUTING复制代码
1.4 清空规则(输入以下命令或重启,iptables 默认不保存规则),如果影响了其它应用,重启就能恢复如初。
tc qdisc del dev $upDEV root
iptables -t mangle -F PREROUTING复制代码
2.0 下载限速
# 下行限制 通常为 br-landlDEVS="br-lan"
..................复制代码先写这么多吧,有空再补完吧。
附: 相关内核/依赖
tc-tiny 重要
kmod-sched-core tc 限速核心
kmod-sched tc sfq 随机公平排队 相关 ,查看固件是否支持sfq ,终端命令:opkg files kmod-sched|grep sfq
kmod-sched-cake 流量智能队列管理(QOS)
kmod-ifb 虚拟网卡,记得eqos、qos采用的就是这个,方便对同一网口进行上下行限速
iptables-mod-iprange 对IP段进行筛选(过滤)
iptables-mod-nat-extra 流量智能队列管理(QOS)
kmod-sched-connmark
kmod-sched-ipset
以前整理过,丢了,有些我也忘记用途了,编译的时候尽量都打上,以后报错的时候原因不好找。复制代码
3.0 进阶
以上命令成功后,且能轻松驾驭后,保存脚本!
想要理解tc命令的,或做进阶设置可参考 :
[译] 《Linux 高级路由与流量控制手册(2012)》第九章:用 tc qdisc 管理 Linux 网络带宽
帖子的编辑太大问题了,编辑了几十次,吞代码,太难受了
得用纯文本方式编辑才不容易出错
wifi定时限速
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
分享到:
QQ好友和群
QQ空间
收藏22
支持1
反对0
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
置顶卡
沉默卡
喧嚣卡
顶贴卡
显身卡
电磁炮轰八方
电磁炮轰八方
当前离线
积分613
IP卡
狗仔卡
2#
发表于 2023-6-4 23:15
|
只看该作者
7981支持硬件qos,没必要关闭硬件加速呀,楼主你的固件是不是编译的时候没有弄相关的呀
点评
363825021
硬件qos,怎么用命令在 "计划任务" 里定时限速?
详情
回复
发表于 2023-6-6 09:28
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
363825021
363825021
当前离线
积分862
IP卡
狗仔卡
3#
发表于 2023-6-6 09:28
|
只看该作者
电磁炮轰八方 发表于 2023-6-4 23:15
7981支持硬件qos,没必要关闭硬件加速呀,楼主你的固件是不是编译的时候没有弄相关的呀 ...
硬件qos,怎么用命令在 "计划任务" 里定时限速?
点评
电磁炮轰八方
跟据楼主发的,可以在iptables里设置
大概这样应该是可以的,我没试过。或者计划任务里定时执行和删除你写的iptables规则也是可以的
详情
回复
发表于 2023-6-6 09:49
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
电磁炮轰八方
电磁炮轰八方
当前离线
积分613
IP卡
狗仔卡
4#
发表于 2023-6-6 09:49
|
只看该作者
363825021 发表于 2023-6-6 09:28
硬件qos,怎么用命令在 "计划任务" 里定时限速?
跟据楼主发的,可以在iptables里设置
iptables -t mangle -A FORWARD -s 192.168.1.51 -j MARK --set-mark 1 -m time --timestart 22:17 --timestop 18:20 --kerneltz --weekdays 1,2,3,4,5复制代码
大概这样应该是可以的,我没试过。或者计划任务里定时执行和删除你写的iptables规则也是可以的
点评
363825021
谢谢回答,楼主的要关闭硬件加速不实用,现在要跑鲁班网心云,爱快可以设置时间段限速,刚换Openwrt,里面只有个Qos可以限速试了的确有效,但是要怎么在"计划任务" 里定时控制Qos, 用/etc/init.d/qos stop没用
详情
回复
发表于 2023-6-6 10:56
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
363825021
363825021
当前离线
积分862
IP卡
狗仔卡
5#
发表于 2023-6-6 10:56
|
只看该作者
电磁炮轰八方 发表于 2023-6-6 09:49
跟据楼主发的,可以在iptables里设置
大概这样应该是可以的,我没试过。或者计划任务里定时执行和删除你 ...
谢谢回答,楼主的要关闭硬件加速不实用,现在要跑鲁班网心云,爱快可以设置时间段限速,刚换Openwrt,里面只有个Qos可以限速试了的确有效,但是要怎么在"计划任务" 里定时控制Qos, 用/etc/init.d/qos stop没用
点评
weigefenxiang
你说的是 luci-app-qos 吧
记得是要修改 /etc/config/qos
另外,Qos能正常,说明你的路由器硬件(有线或WiFi)加速并未实质生效,或者没有硬件加速功能。
详情
回复
发表于 2023-6-9 18:16
电磁炮轰八方
你那个固件确定是用的硬件qos吗?
详情
回复
发表于 2023-6-6 21:39
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
电磁炮轰八方
电磁炮轰八方
当前离线
积分613
IP卡
狗仔卡
6#
发表于 2023-6-6 21:39
|
只看该作者
363825021 发表于 2023-6-6 10:56
谢谢回答,楼主的要关闭硬件加速不实用,现在要跑鲁班网心云,爱快可以设置时间段限速,刚换Openwrt,里面 ...
你那个固件确定是用的硬件qos吗?
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
weigefenxiang
weigefenxiang
当前离线
积分426
IP卡
狗仔卡
7#
楼主|
发表于 2023-6-9 18:16
|
只看该作者
本帖最后由 weigefenxiang 于 2023-6-9 18:24 编辑
363825021 发表于 2023-6-6 10:56
谢谢回答,楼主的要关闭硬件加速不实用,现在要跑鲁班网心云,爱快可以设置时间段限速,刚换Openwrt,里面 ...
你说的是 luci-app-qos 吧
记得是要修改 /etc/config/qos
config interface 'wan'
option enabled '0'
'0'代表关闭,'1'代表开启复制代码
用reload 生效。想要用定时的话,可以参考crontab,这里就不细致讲了。
/etc/init.d/qos reload复制代码
爱快的时间段,IP段限速,其实就是以 tc qdisc + iptables 实现的。
另外,Qos能正常,说明你的路由器硬件(有线或WiFi)加速并未实质生效,或者没有硬件加速功能。
点评
363825021
谢谢!感觉没有爱快方便
详情
回复
发表于 2023-6-10 09:43
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
363825021
363825021
当前离线
积分862
IP卡
狗仔卡
8#
发表于 2023-6-10 09:43
|
只看该作者
本帖最后由 363825021 于 2023-6-10 10:28 编辑
weigefenxiang 发表于 2023-6-9 18:16
你说的是 luci-app-qos 吧
记得是要修改 /etc/config/qos
谢谢!试了一下果然可以,弄了个定时命令改qos,简直完美
点评
Stanley25535
您好,我是在openwrt下跑网心的,您能贴一个具体的限速教程吗~包括定时命令的,先谢过了
详情
回复
发表于 2024-3-2 22:14
highwill
老哥,怎么用,可以详细说下吗
详情
回复
发表于 2023-7-30 17:26
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
363825021
363825021
当前离线
积分862
IP卡
狗仔卡
9#
发表于 2023-6-10 10:32
|
只看该作者
#!/bin/sh
# 我的上行端口 pppoe-wan,这里请改为你的WAN口(或上行口),查看命令 ifconfig ,自行判断
upDEV="pppoe-wan"
这里WAN口,多播也是填 pppoe-wan吗? 有pppoe-wan1.2.3.45个口
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
961335435
961335435
当前离线
积分152
IP卡
狗仔卡
10#
发表于 2023-7-23 07:05
来自手机
|
只看该作者
老哥,n1作为旁路由怎么搞?
点评
weigefenxiang
如果是单臂旁路由,就做不到
发表于 2023-9-17 15:36
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
highwill
highwill
当前离线
积分678
IP卡
狗仔卡
11#
发表于 2023-7-30 17:26
|
只看该作者
363825021 发表于 2023-6-10 09:43
谢谢!试了一下果然可以,弄了个定时命令改qos,简直完美
老哥,怎么用,可以详细说下吗
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
X拉普拉斯
X拉普拉斯
当前离线
积分31
IP卡
狗仔卡
12#
发表于 2023-11-16 23:07
|
只看该作者
太强了大佬,我系统内的eqosplus一直有问题,当天只要有一段时间限速,当天限速时段外也会使该设备限速。而楼主的命令则没有这个bug,真的是非常好用,感谢楼主分享
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
cjf350300
cjf350300
当前离线
积分245
IP卡
狗仔卡
13#
发表于 2023-11-25 01:57
|
只看该作者
大佬能不能实现一个功能, 比如设备达到10G的流量后,开始进行限速
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
lianqiu45
lianqiu45
当前离线
积分56
IP卡
狗仔卡
14#
发表于 2024-1-25 12:59
|
只看该作者
提示缺少依赖kmod-sched这个去哪里找,换了好几个源都没有。
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡
Stanley25535
Stanley25535
当前离线
积分335
IP卡
狗仔卡
15#
发表于 2024-3-2 15:24
|
只看该作者
本帖最后由 Stanley25535 于 2024-3-2 17:11 编辑
编辑掉。奇怪了,按照楼主的设置,ip地址填了我自己的电脑的,但是测试的时候依旧是满速...我用的是pc端的speed test,没有楼主这种指定ip去测试的。
tc class add dev $upDEV parent 1:0 classid 1:1 htb rate 150mbit
tc class add dev $upDEV parent 1:1 classid 1:11 htb rate 0.5mbit ceil 2mbit
tc filter add dev $upDEV parent 1:0 protocol ip handle 2011 fw classid 1:11
# iptables 设置
iptables -t mangle -A PREROUTING -s 192.168.15.151 -j MARK --set-xmark 2011
iptables -t mangle -A PREROUTING -s 192.168.15.151 -j RETURN
然后用了
tc qdisc show dev $upDEV
tc class show dev $upDEV
iptables -t mangle -L PREROUTING
得到:
class htb 1:11 parent 1:1 prio 0 rate 500Kbit ceil 2Mbit burst 1600b cburst 1600b
class htb 1:1 root rate 150Mbit ceil 150Mbit burst 1575b cburst 1575b
target prot opt source destination
MARK all -- 192.168.15.151 anywhere MARK set 0x7db
RETURN all -- 192.168.15.151 anywhere
但是测试的结果时候还是满速.....系统是ImmortalWrt 23.0.5.1
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复
使用道具
举报
显身卡