找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 8228|回复: 26

【限速教程】之 定时限速 新手级教程

[复制链接]
发表于 2023-6-4 18:57 | 显示全部楼层 |阅读模式
本帖最后由 weigefenxiang 于 2023-6-9 18:29 编辑

本文仅针对有「定时限速」需求的小白。
新手教程,会用通俗的话来介绍,方便理解,如果有说错的地方欢迎指出

TC (Traffic Control)命令—linux自带高级流控
iptables 对 ip 、mac、时间等进行筛选(过滤)


效果图
Windows (下行限速100M,上行3M)


WiFi 只对上行进行限速


亲戚都在家,只能拿副宽做测试



重点
  • 固件支持 tc + iptables
  • tc + iptables 相关核心(重要),编译过程中加上(帖子最下方有详细说明)
  • 关闭硬件加速功能(流量监控,限速必要条件



下面以 360T7 H大固件 作为例子,需要在终端(ssh、ttyd等)完成


步骤


1.1 清空规则
避免其他规则干扰
  1. # 我的上行端口 pppoe-wan
  2.         upDEV="pppoe-wan"            
  3.         tc qdisc del dev $upDEV root 2>/dev/null
  4.         iptables -t mangle -F PREROUTING
复制代码


1.2 上传限速
  1. 192.168.1.50                           最低保障速率  1Mpbs 限速   3Mpbs
  2. 192.168.1.51                           最低保障速率  8Mpbs 限速 10Mpbs, 时间为 周一至周五,22:17 至 18:20(次日)
  3. 192.168.1.100-192.168.1.254    最低保障速率  1Mpbs 限速  3Mpbs
复制代码


将下面脚本代码 小作修改后,直接粘贴到终端,即可食用
  1. #!/bin/sh
  2. # 我的上行端口 pppoe-wan,这里请改为你的WAN口(或上行口),查看命令 ifconfig ,自行判断
  3. upDEV="pppoe-wan"

  4. # 1: (即 1:0 的缩写) 填哪个都行
  5. tc qdisc add dev $upDEV root handle 1: htb default 8

  6. # rate 50mbit = 50Mpbs,这里一般填写上行带宽速率
  7. tc class add dev $upDEV parent 1:0 classid 1:1 htb rate 50mbit

  8. tc class add dev $upDEV parent 1:1 classid 1:11 htb rate 1mbit ceil 3mbit
  9. tc class add dev $upDEV parent 1:1 classid 1:12 htb rate 8mbit ceil 10mbit

  10. # 这里别写错了,是 parent 1:0
  11. tc filter add dev $upDEV parent 1:0 protocol ip handle 2011 fw classid 1:11
  12. tc filter add dev $upDEV parent 1:0 protocol ip handle 2012 fw classid 1:12

  13. # iptables 设置
  14. iptables -t mangle -A PREROUTING -s 192.168.1.50 -j MARK --set-xmark 2011
  15. iptables -t mangle -A PREROUTING -s 192.168.1.50 -j RETURN

  16. 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
  17. iptables -t mangle -A PREROUTING -s 192.168.1.51 -j RETURN

  18. iptables -t mangle -A PREROUTING -m iprange --src-range 192.168.1.100-192.168.1.254 -j MARK --set-xmark 2011
  19. iptables -t mangle -A PREROUTING -m iprange --src-range 192.168.1.100-192.168.1.254 -j RETURN
复制代码

命令解释:
  1. # tc命令
  2. # rate                                                  :最低保障速率
  3. # ceil                                                   : 最高速率 (如不设置该项,最高速率=rate)
  4. # parent 1:1 classid 1:11                       : 这条规则继承父类(1:1),命名为1:11 。
  5. # handle 2011                                      : tc对于 iptables标记为(1:11)2011的包 ,进行限速,最低25Mpbs,最高40Mps
  6. #  PREROUTING                                   :(一般用作处理上行)  
  7. # iptables
  8. # -s  192.168.1.50                                :筛选 来源于 150 的IP
  9. # -j MARK --set-xmark 2011                   :对包进行标记 2011,交给 tc 分辨
  10. # -s 192.168.1.50  -j RETURN                :来源于 192.168.1.50 不再往下进行过滤) 可以理解为快速跳过这个步骤。
  11. #  -m time --timestart 22:17 --timestop 18:20             : 时间段控制 22:17~18:20(次日)
  12. # --kerneltz                                          :(系统时间,如不设置,iptables以UTC为标准,实际生效时间会比北京时间晚8小时整)
  13. # --weekdays 1,2,3,4,5                         :(周一至周五)
  14. # 注:-m iprange 需 iptables-mod-iprange 模块,若是ip很多,务必使用 iprange 减少规则。
  15. # -m iprange --dst-range 192.168.1.100-192.168.1.254                :过滤IP段X.[100-254]
复制代码

1.3 查看以上命令是否生效
  1. tc qdisc show dev $upDEV
  2. tc class show dev $upDEV
  3. iptables -t mangle -L PREROUTING
复制代码

1.4 清空规则(输入以下命令或重启,iptables 默认不保存规则),如果影响了其它应用,重启就能恢复如初。
  1. tc qdisc del dev $upDEV root
  2. iptables -t mangle -F PREROUTING
复制代码


2.0 下载限速

# 下行限制 通常为 br-lan
  1. dlDEVS="br-lan"
  2. ..................
复制代码
先写这么多吧,有空再补完吧。

相关内核/依赖
  1.         tc-tiny                                      重要
  2.         kmod-sched-core                      tc 限速核心
  3.         kmod-sched                             tc sfq 随机公平排队 相关 ,查看固件是否支持sfq ,终端命令:opkg files kmod-sched|grep sfq
  4.         kmod-sched-cake                     流量智能队列管理(QOS)
  5.         kmod-ifb                                 虚拟网卡,记得eqos、qos采用的就是这个,方便对同一网口进行上下行限速
  6.         iptables-mod-iprange                对IP段进行筛选(过滤)
  7.         iptables-mod-nat-extra              流量智能队列管理(QOS)
  8.         kmod-sched-connmark
  9.         kmod-sched-ipset
  10.                 以前整理过,丢了,有些我也忘记用途了,编译的时候尽量都打上,以后报错的时候原因不好找。
复制代码


3.0 进阶
以上命令成功后,且能轻松驾驭后,保存脚本!
想要理解tc命令的,或做进阶设置可参考 :

[译] 《Linux 高级路由与流量控制手册(2012)》第九章:用 tc qdisc 管理 Linux 网络带宽

帖子的编辑太大问题了,编辑了几十次,吞代码,太难受了
得用纯文本方式编辑才不容易出错

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2023-6-4 23:15 | 显示全部楼层
7981支持硬件qos,没必要关闭硬件加速呀,楼主你的固件是不是编译的时候没有弄相关的呀

点评

硬件qos,怎么用命令在 "计划任务" 里定时限速?  详情 回复 发表于 2023-6-6 09:28
回复 支持 反对

使用道具 举报

发表于 2023-6-6 09:28 | 显示全部楼层
电磁炮轰八方 发表于 2023-6-4 23:15
7981支持硬件qos,没必要关闭硬件加速呀,楼主你的固件是不是编译的时候没有弄相关的呀 ...

硬件qos,怎么用命令在 "计划任务" 里定时限速?

点评

跟据楼主发的,可以在iptables里设置 大概这样应该是可以的,我没试过。或者计划任务里定时执行和删除你写的iptables规则也是可以的  详情 回复 发表于 2023-6-6 09:49
回复 支持 反对

使用道具 举报

发表于 2023-6-6 09:49 | 显示全部楼层
363825021 发表于 2023-6-6 09:28
硬件qos,怎么用命令在 "计划任务" 里定时限速?

跟据楼主发的,可以在iptables里设置
  1. 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规则也是可以的

点评

谢谢回答,楼主的要关闭硬件加速不实用,现在要跑鲁班网心云,爱快可以设置时间段限速,刚换Openwrt,里面只有个Qos可以限速试了的确有效,但是要怎么在"计划任务" 里定时控制Qos, 用/etc/init.d/qos stop没用  详情 回复 发表于 2023-6-6 10:56
回复 支持 反对

使用道具 举报

发表于 2023-6-6 10:56 | 显示全部楼层
电磁炮轰八方 发表于 2023-6-6 09:49
跟据楼主发的,可以在iptables里设置

大概这样应该是可以的,我没试过。或者计划任务里定时执行和删除你 ...

谢谢回答,楼主的要关闭硬件加速不实用,现在要跑鲁班网心云,爱快可以设置时间段限速,刚换Openwrt,里面只有个Qos可以限速试了的确有效,但是要怎么在"计划任务" 里定时控制Qos, 用/etc/init.d/qos stop没用

点评

你说的是 luci-app-qos 吧 记得是要修改 /etc/config/qos 另外,Qos能正常,说明你的路由器硬件(有线或WiFi)加速并未实质生效,或者没有硬件加速功能。  详情 回复 发表于 2023-6-9 18:16
你那个固件确定是用的硬件qos吗?  详情 回复 发表于 2023-6-6 21:39
回复 支持 反对

使用道具 举报

发表于 2023-6-6 21:39 | 显示全部楼层
363825021 发表于 2023-6-6 10:56
谢谢回答,楼主的要关闭硬件加速不实用,现在要跑鲁班网心云,爱快可以设置时间段限速,刚换Openwrt,里面 ...

你那个固件确定是用的硬件qos吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-6-9 18:16 | 显示全部楼层
本帖最后由 weigefenxiang 于 2023-6-9 18:24 编辑
363825021 发表于 2023-6-6 10:56
谢谢回答,楼主的要关闭硬件加速不实用,现在要跑鲁班网心云,爱快可以设置时间段限速,刚换Openwrt,里面 ...

你说的是 luci-app-qos 吧
记得是要修改  /etc/config/qos
  1. config interface 'wan'
  2.         option enabled '0'
  3. '0'代表关闭,'1'代表开启
复制代码

用reload 生效。想要用定时的话,可以参考crontab,这里就不细致讲了。
  1. /etc/init.d/qos reload
复制代码

爱快的时间段,IP段限速,其实就是以 tc qdisc + iptables 实现的。
另外,Qos能正常,说明你的路由器硬件(有线或WiFi)加速并未实质生效,或者没有硬件加速功能。

点评

谢谢!感觉没有爱快方便  详情 回复 发表于 2023-6-10 09:43
回复 支持 反对

使用道具 举报

发表于 2023-6-10 09:43 | 显示全部楼层
本帖最后由 363825021 于 2023-6-10 10:28 编辑
weigefenxiang 发表于 2023-6-9 18:16
你说的是 luci-app-qos 吧
记得是要修改  /etc/config/qos

谢谢!试了一下果然可以,弄了个定时命令改qos,简直完美

点评

您好,我是在openwrt下跑网心的,您能贴一个具体的限速教程吗~包括定时命令的,先谢过了  详情 回复 发表于 2024-3-2 22:14
老哥,怎么用,可以详细说下吗  详情 回复 发表于 2023-7-30 17:26
回复 支持 反对

使用道具 举报

发表于 2023-6-10 10:32 | 显示全部楼层
#!/bin/sh
# 我的上行端口 pppoe-wan,这里请改为你的WAN口(或上行口),查看命令 ifconfig ,自行判断
upDEV="pppoe-wan"

这里WAN口,多播也是填 pppoe-wan吗?  有pppoe-wan1.2.3.45个口
回复 支持 反对

使用道具 举报

发表于 2023-7-23 07:05 来自手机 | 显示全部楼层
老哥,n1作为旁路由怎么搞?

点评

如果是单臂旁路由,就做不到  发表于 2023-9-17 15:36
回复 支持 反对

使用道具 举报

发表于 2023-7-30 17:26 | 显示全部楼层
363825021 发表于 2023-6-10 09:43
谢谢!试了一下果然可以,弄了个定时命令改qos,简直完美

老哥,怎么用,可以详细说下吗
回复 支持 反对

使用道具 举报

发表于 2023-11-16 23:07 | 显示全部楼层
太强了大佬,我系统内的eqosplus一直有问题,当天只要有一段时间限速,当天限速时段外也会使该设备限速。而楼主的命令则没有这个bug,真的是非常好用,感谢楼主分享
回复 支持 反对

使用道具 举报

发表于 2023-11-25 01:57 | 显示全部楼层
大佬能不能实现一个功能, 比如设备达到10G的流量后,开始进行限速
回复 支持 反对

使用道具 举报

发表于 2024-1-25 12:59 | 显示全部楼层
提示缺少依赖kmod-sched这个去哪里找,换了好几个源都没有。
回复 支持 反对

使用道具 举报

发表于 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
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-6-7 20:48

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表