prerouting对应In.internet,postrouting对应Out.internet,然后分别对此进行包标记,标记名称自己随意,建议简洁明了,一目了然,不要用特殊字符,防止转译时出现问题。
当然此种方法还是不够智能化,毕竟还要人为手动点击运行脚本,实在是比较呆,下面给大家传授一种自动化QOS,用下面代码或者图形化页面操作都一样。
- /system scheduler add interval=24h name="QOS_10M" start-time=9:00:00 on-event=start_QOS10
复制代码
进入脚本菜单,或者命令行直接用代码也是一样的,新建脚本命令,脚本名称要与上面计划任务中调用的名称要一致。
- /system script add name="start_QOS10" source={:for x from 1 to 254 do={ /queue simple add target=("172.20.3." . $x) max-limit=10000000/10000000 packet-marks=QOS-D,QOS-U } }
- #进入脚本菜单,添加名称为start_QOS10,代码解释参考前面的,不多废话。
复制代码
等待设定的时间点到达,QOS限速脚本会自动执行,效果如下图所示,很方便。
当然,除此之外,还可以根据时间段进行限速,限速之前,需要先清除之前的限速命令,防止多条队列重合,当然也可以写个判断语句进行自动化处理。
- /queue simple remove [find type=queue9527 ]
- #进入queue菜单,找到类型为queue类型,找到后删除类型为queue(简单队列)9527条,根据自己的实际情况写数字
复制代码首先添加两个计划任务,分别设定时间段,以24h为一个循环每天定时执行时间段限速脚本,图形化配置如图,命令行代码我已经写好。
- /system scheduler add interval=24h name="QOS_10M" start-time=9:00:00 on-event=start_QOS10
- 早上9点执行start_QOS10这个脚本,上下行10M,周期为24h,计划任务名字可随意,脚本名称必须要一致!
- /system scheduler add interval=24h name="QOS_20M" start-time=18:00:00 on-event=start_QOS20
- 下午6点执行start_QOS20这个脚本,上下行限速20M,周期为24h,计划任务名字可随意,脚本名称必须要一致!
复制代码再添加两个限速脚本,分别为上下行10M与20M,每天循环执行限速脚本,图形化配置如图,命令行代码我已经写好,可直接复制使用。
- :if ([/queue simple remove [find type=queue9527 ]]<0) do={ :for x from 1 to 254 do={ /queue simple add target=("172.20.3." . $x) max-limit=10000000/10000000 packet-marks=QOS-D,QOS-U } }
- #if条件语句. 如果一个逻辑判断为真,这时执行do分程序块中的命令,否则选择 else 分程序块中的执行,此处直接用if和do就完全够用了,除非有特殊情况;此处我写的代码逻辑很简单,首先进入queue菜单,找到类型为queue的所有简单队列,然后删除类型为queue(简单队列)9527条,删除后总数肯定小于0,然后代码会执行do分程序中的程序;分程序中只需要重新执行一次脚本就可以了。
复制代码最终实践效果达到预期的目标,打完收工,看不清楚图片的,可以关注我的微信公众号,定期分享Routeros和Openwrt、Python的硬核技术!