找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 37188|回复: 51

小包优先+web优先+游戏爆发+单IP限速+连接数限制 QOS脚本V2.0

[复制链接]
本帖最后由 zhoutao0712 于 2010-2-9 22:52 编辑

前一版地址:http://bbs.dualwan.cn/thread-12192-1-1.html
PS:其实ZD的dualwan的QOS已经很好了,但是不同的人要求不同,
我这个脚本是专为miniISP多机共享所写。改脚本仅仅适用于dualwan,其他固件或linux PC可能需要改动。

仍然是单WAN的,不打算写多WAN的,多WAN的先飘过。

主要变化有:
1.小包定义发生变化:
上传数据包中长度小于128Byte并且状态为ESTABLISHED的数据包
下载数据包中长度小于256Byte并且状态为ESTABLISHED的数据包
这个ESTABLISHED是什么东东呢?
解释:iptables中数据包有INVALID,ESTABLISHED,NEW,RELATED,UNTRACKED等状态。
具体解释:http://man.chinaunix.net/network ... html#USERLANDSTATES
这个ESTABLISHED指连接已经完全建立的数据包了,而NEW指新建一个连接所使用的第一个数据包。
这样,就排除了那些状态为NEW的小包。
好处:有些人总是热衷于“修改XP最大连接数”来提高BT下载速率。其实这个所谓的“最大连接数”是指“最大并发连接数”,
也就是XP每秒能够发送状态为NEW的数据包,默认值是10。有些垃圾的BT软件将其修改为1000,这样庞大的连接数将会导致
瞬间上传速率非常大,如果将其优先级设置太高,将会导致网络延迟的震荡(一会高一会低)。
PS:“修改XP最大连接数”是无法提高BT下载的速率的,最多可以提高达到最大速率的时间。比如说不修改30秒达到最大速率,修改
后可能10秒就达到最大速率。但是会带来操作系统不稳定,路由器压力增大,蠕虫攻击,网络延迟震荡等不良后果。
微软在IT业混了几十年,从来就不提倡所谓的“修改最大连接数”。

2.不再对利用web端口进行下载BT数据包进行单独的分类,直接进入IP分类。
但正常的web浏览仍然具有较高的优先级。
3.游戏爆发的定义:
当某个内网IP的速率小于10KB/S的时候,那么该IP的数据包进入“游戏爆发队列”。时间为5秒。
“游戏爆发队列”的优先级仅仅低于“小包队列”

对于那些只玩游戏不下载的IP有帮助。
4.需要修改的参数减少,特殊队列的速率直接用总速率计算,不用用户干预。
5.对特殊IP改变限速规则的方法作了举例说明。
6.连接数限制,单IP限速等没有改变,仅仅做了一些效率优化

用法:打开路由器web管理界面,把脚本粘贴到“系统管理----脚本设置----防火墙----保存”,保存之后重启路由器。
(其实不重启也可以,只要切换到“新增功能---IPID调整----保存”,保存之后,脚本即可生效)
注意最好不要同时开启其它QOS.

可修改参数说明:
网段号:UIP,NET
IPS="2",IPE="8"
开始和结束IP192.168.1.2---192.168.1.8

UP=35,DOWN=180
总上传速率35KB/S,总下载速率180KB/S

UPLOADR=1,UPLOADC=8
单IP保证上传速率1KB/S,最大上传速率8KB/S

DOWNLOADR=$(($DOWN/$((IPE-IPS+5)))),DOWNLOADC=$(($DOWN*80/100))
DOWNLOADR是单IP保证下载速率,DOWNLOADC是最大下载速率。
已经由总下载速率DOWN计算,可自行修改为指定数字。


参数修改建议:
1.总带宽最好设小点,以保证更好的网络延迟。
比如2MADSL实际下载可达205KB/S我设180KB/S。实际上传45KB/S我设置35KB/S。
PS:上传速率对网络延迟的影响比下载更大。
2.修改变量时候注意引号和逗号是英文的,空格不要乱加,一旦错误将导致脚本运行异常
3.保证速率不要调得过大,否则反而缺少“保证”

改变特殊IP限速规则:
(0--7,数字越小优先级越高)普通IP的优先级是5,小包的优先级是0,游戏爆发的优先级是1,web浏览的优先级是3
如果要把192.168.1.5限速为:保证上传5KB/S,最大上传20KB/S,保证下载30KB/S,最大下载180KB/S,并且改IP优先级是4,
只需要在脚本的最后加上:
tc class replace dev imq1 parent 1:1 classid 1:5 htb rate 5kbps ceil 20kbpskbps prio 4
tc class replace dev imq0 parent 1:1 classid 1:5 htb rate 30kbps ceil 180kbpskbps prio 4
tc qdisc replace dev imq1 parent 1:5 handle 5: sfq perturb 15
tc qdisc replace dev imq0 parent 1:5 handle 5: sfq perturb 15
其中1:5,5:和IP尾数相关(因为192.168.1.5的尾数是5),prio 4表示优先级是4(比一般IP优先级高)
再比如要把经常BT下载的192.168.1.7限速:保证上传1KB/S,最大上传5KB/S,保证下载5KB/S,最大下载50KB/S,并且改IP优先级是6,
只需要在脚本的最后加上:
tc class replace dev imq1 parent 1:1 classid 1:7 htb rate 1kbps ceil 5kbpskbps prio 6
tc class replace dev imq0 parent 1:1 classid 1:7 htb rate 5kbps ceil 50kbpskbps prio 6
tc qdisc replace dev imq1 parent 1:7 handle 7: sfq perturb 15
tc qdisc replace dev imq0 parent 1:7 handle 7: sfq perturb 15
依次类推,想加的特殊IP限速规则都可以添加。


脚本如下:(以#开头的说明性文字可以删除,第1行除外 好用的吼下,不好用自己闷头揣摩,或则当我是骗子也可以
  1. #copyright by zhoutao0712
  2. #变量初始化(速率单位是KB/S)
  3. UIP="192.168.1."
  4. NET="192.168.1.0/24"
  5. IPS="2"
  6. IPE="8"
  7. UP=35
  8. DOWN=180
  9. UPLOADR=1
  10. UPLOADC=8
  11. DOWNLOADR=$(($DOWN/$((IPE-IPS+5))))
  12. DOWNLOADC=$(($DOWN*80/100))
  13. #装载核心模块,创建QOS专用链
  14. insmod imq
  15. insmod ipt_IMQ
  16. insmod ipt_length.o
  17. insmod ipt_hashlimit.o
  18. ifconfig imq1 up
  19. ifconfig imq0 up
  20. iptables -t mangle -N QOSDOWN
  21. iptables -t mangle -N QOSUP
  22. iptables -t mangle -I FORWARD -s $NET -j QOSUP
  23. iptables -t mangle -I FORWARD -d $NET -j QOSDOWN
  24. iptables -t mangle -A QOSDOWN -j IMQ --todev 0
  25. iptables -t mangle -A QOSUP -j IMQ --todev 1
  26. #在5秒内平均下载速率小于10KB/S的IP进入高优先级队列253
  27. iptables -t mangle -N GAME_BURST
  28. iptables -t mangle -A QOSDOWN -m length --length 256: -j GAME_BURST
  29. iptables -t mangle -A GAME_BURST -m hashlimit --hashlimit 10/sec --hashlimit-burst 100 --hashlimit-mode dstip --hashlimit-name game_burst -j RETURN
  30. iptables -t mangle -A GAME_BURST -m recent --rdest --name game_burst --set -j RETURN
  31. iptables -t mangle -A QOSDOWN -m recent --rdest --name game_burst ! --rcheck  --seconds 5 -j MARK --set-mark-return 253
  32. iptables -t mangle -A QOSDOWN -p tcp -m mport --sports 80,443 -j BCOUNT
  33. iptables -t mangle -A QOSDOWN -p tcp -m mport --sports 80,443 -m bcount --range :307200 -j MARK --set-mark-return 255
  34. iptables -t mangle -A QOSDOWN -m state --state ESTABLISHED -m length --length :256 -j MARK --set-mark-return 254
  35. iptables -t mangle -A QOSUP -p tcp -m mport --dports 80,443 -j BCOUNT
  36. iptables -t mangle -A QOSUP -p tcp -m mport --dports 80,443 -m bcount --range :204800 -j MARK --set-mark-return 255
  37. iptables -t mangle -A QOSUP -m state --state ESTABLISHED -m length --length :128 -j MARK --set-mark-return 254
  38. iptables -t mangle -I QOSUP -m state --state NEW -p udp --dport 53 -j RETURN
  39. iptables -t mangle -A QOSDOWN -j MARK --ipaddr 1
  40. iptables -t mangle -A QOSUP -j MARK --ipaddr 0
  41. #根队列初始化
  42. tc qdisc del dev imq0 root
  43. tc qdisc del dev imq1 root
  44. tc qdisc add dev imq0 root handle 1: htb
  45. tc qdisc add dev imq1 root handle 1: htb
  46. tc class add dev imq1 parent 1: classid 1:1 htb rate $((UP))kbps
  47. tc class add dev imq0 parent 1: classid 1:1 htb rate $((DOWN))kbps
  48. #小包,web浏览和游戏爆发队列限速
  49. tc class add dev imq1 parent 1:1 classid 1:254 htb rate $((UP))kbps quantum 12000 prio 0
  50. tc class add dev imq1 parent 1:1 classid 1:255 htb rate $((UP/5))kbps ceil $((UP/2))kbps quantum 2000 prio 3
  51. tc filter add dev imq1 parent 1:0 protocol ip prio 5 handle 255 fw flowid 1:255
  52. tc filter add dev imq1 parent 1:0 protocol ip prio 4 handle 254 fw flowid 1:254
  53. tc class add dev imq0 parent 1:1 classid 1:254 htb rate $((DOWN))kbps quantum 12000 prio 0
  54. tc class add dev imq0 parent 1:1 classid 1:255 htb rate $((DOWN*20/100))kbps ceil $((DOWN*80/100))kbps prio 3
  55. tc filter add dev imq0 parent 1:0 protocol ip prio 5 handle 255 fw flowid 1:255
  56. tc filter add dev imq0 parent 1:0 protocol ip prio 4 handle 254 fw flowid 1:254
  57. tc class add dev imq0 parent 1:1 classid 1:253 htb rate $((DOWN/2))kbps quantum 5000 prio 1
  58. tc filter add dev imq0 parent 1:0 protocol ip prio 5 handle 253 fw flowid 1:253
  59. #所有普通IP单独限速
  60. i=$IPS;
  61. while [ $i -le $IPE ]
  62. do
  63. tc class add dev imq1 parent 1:1 classid 1:$i htb rate $((UPLOADR))kbps ceil $((UPLOADC))kbps quantum 1000 prio 5
  64. tc qdisc add dev imq1 parent 1:$i handle $i: sfq perturb 15
  65. tc filter add dev imq1 parent 1:0 protocol ip prio 6 handle $i fw classid 1:$i
  66. tc class add dev imq0 parent 1:1 classid 1:$i htb rate $((DOWNLOADR))kbps ceil $((DOWNLOADC))kbps quantum 1000 prio 5
  67. tc qdisc add dev imq0 parent 1:$i handle $i: sfq perturb 15
  68. tc filter add dev imq0 parent 1:0 protocol ip prio 6 handle $i fw classid 1:$i
  69. i=`expr $i + 1`
  70. done
  71. #每IP限制TCP连接数100,UDP连接数150,并且对DNS,WEB,QQ等端口例外
  72. iptables -t mangle -N CONNLMT
  73. iptables -t mangle -I FORWARD -m state --state NEW -s $NET -j CONNLMT
  74. iptables -t mangle -A CONNLMT -p tcp -m connlimit --connlimit-above 100 -j DROP
  75. iptables -t mangle -A CONNLMT -p ! tcp -m connlimit --connlimit-above 150 -j DROP
  76. iptables -t mangle -I CONNLMT -p udp -m mport --dports 53,4000:8000 -j RETURN
  77. iptables -t mangle -I CONNLMT -p tcp -m mport --dports 20:23,25,80,110,443 -j RETURN
  78. #改变特殊IP限速规则(自己依照说明添加)
复制代码
我的恩山、我的无线 The best wifi forum is right here.
虽然不会用,先做个记号吧
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

感谢楼主无私奉献,记号先,改天试试
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

做个记号
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

大哥有没有普通tomato版本的
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

做个记号先,感谢lz!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

dualwan 最新版 依然pppoe断线不稳定
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

拜iptables大牛
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

做个记号,起码比我自己设置好吧
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

顶!!!有技术含量哦。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

谢谢分享~~~~~~~~
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

试试看效果如何,谢谢楼主分享。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

谢谢高手。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

mark
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

希望完善一下山寨版智能QOS  出个2.0版本 智能判断主机数 而不是要指定ip
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

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

GMT+8, 2024-4-30 06:14

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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