找回密码
 注册

QQ登录

只需一步,快速开始

查看: 19564|回复: 6

[教程] 第三方固件:番茄TOMATO固件设置小包优先+WEB优先+IP限速+连接数限制 的脚本

[复制链接]
发表于 2010-1-14 23:55:57 | 显示全部楼层 |阅读模式
这是一个更加个性化QOS设置。/ t+ N" c; W& I- ^7 W
心得:最好的方法是看别人的脚本,高手的脚本是怎么写的。Dualwan中3种QOS的脚本都很有水平。3 Z  L' P( U# K. P, `" F, o

! E/ R5 |2 E' H0 J' s脚本测试环境是一条2MADSL,版本是dualwan 1.23.0432,关闭所有其它QOS,把脚本保存到 防火墙脚本 中,重起路由就OK。
7 X# c. R# T/ C0 o) b* k该脚本不定义特定接口,采用IMQ(中介队列),直接把源地址和目的地址为192.168.1.0/24的数据包分别送进imq1和imq0虚拟接口。- @7 Y! i6 T+ ~$ t
imq0控制下载,imq1控制上传。( A' u( t) Y% J9 ^
在小区宽带应该也可以使用。未在DD-WRT上测试,应该也能使用。. I2 f% a" A7 _# P# [6 N
正常网页浏览和p2p软件冒用用80端口也作了区分。判定逻辑是:一个连接传输数据在200kB以下是网页浏览,数据包放进高优先队列。1 f9 w; n  I  C5 Y
超过后判定为P2P软件冒用,后续数据包放进低优先级队列。(脚本中204800代表200KB)
4 |8 A) o2 n0 e1 j8 X数据包分类逻辑是:先 小包分类→网页浏览分类→p2p软件冒用80端口→IP地址分类。
4 X5 x: ~4 [4 W" T9 d9 a8 \并且每个数据包都只属于一种分类。比如说,一个tcp小包,即使其源IP地址是192.168.1.2,并且目的端口是80,
: b, _' V# e# Q也只会属于小包分类。) D0 m7 J2 c2 D+ u
分类的优先级:小包分类=网页浏览(prio 0)  > IP地址分类 (prio 2) > p2p软件冒用80端口(prio 7)
) B3 Z& S/ }1 W, w: _! b2 G8 h& W2 z% B
变量解释:" m0 I/ k: Q! S7 G# S
UP,DOWN分别是上传和下载总带宽。
* u5 D+ z4 D2 i3 m. O% m9 b6 d8 LUP2R,UP2C,UP3R,UP3C,DOWN2R,DOWN2C,DOWN3R,DOWN3C& O0 k" I8 H0 l8 L' C. e
2是小包和网页浏览的分类队列编号,3是p2p软件冒用80端口的分类队列编号。UP和DOWN分别代表上行和下载。8 [0 r% l1 C* ]/ ^9 O, ]
R代表rate(保证速率),C代表ceil(最大速率)。4 m5 j" Y$ i7 B) E2 N
UPLOADR,UPLOADC,DOWNLOADC,DOWNLOADR代表单机速率的4个参数。
6 h# |1 S! m: n  a! F8 f  fUIP是内网用户IP前缀,NET代表内网网段。
0 A3 M9 d0 B. ?; r) [UPSP=":128 " 上传数据包中大小在0----128的数据包。(小包,small packets)0 L4 c2 e' b& H' s# |4 S0 l
DOWNSP=":512" 同上。8 |2 i! Y! g2 m$ n3 |
IPS="2",开始IP地址192.168.1.2
9 f7 r# V, Y. ]IPE="8",结束IP地址192.168.1.8
5 t3 B/ |& e3 }( c6 c! V$ i( D9 `, T
由于每个人的情况不同,参数需要自己做一些调整。
8 c' Y8 w. R' H) i, m) [建议:
+ Z  v( ~0 G  \, ~: E1.总带宽最好设小点,以保证更好的网络延迟。, J% u! s- B( F
比如2MADSL实际下载可达205KB/S我设180KB/S。(在linux中bps=KB/S)& Z* w/ }( H0 m: @
2.原则上,所有分类的rate之和小于总rate, 即IP数*UPLOADR+UP2R+UP3R<=UP,IP数*DOWNLOADR+DOWN2R+DOWN2R<=DOWN2 G( a6 ^+ Z9 x0 f4 k
3.UP2R和DOWN2R大约为总带宽1/3。可以自己尝试调整。
1 w8 t3 Q0 e0 C4.修改变量时候注意引号,逗号是英文的,空格不要乱加,一旦错误将导致脚本无法运行。
' F6 \# p+ J# Z7 M. O5.最后的连接数限制为TCP 50,UDP 80。可自行修改。1 m  X  P5 L7 e% X
例外端口可以添加。可以将一些游戏端口添加进去。9 m& x4 a6 `! A: |  z
比如需要例外UDP 53,100---200,3777,14555-14559
4 ~3 o: d* i, a1 P- e; |. T. f0 r9 k8 ?
iptables -t mangle -I LMT -s 192.168.1.0/24 -p udp -m mport --dports 53 -j RETURN
1 C% d- J# q4 F5 l3 p) H. w改成
" L6 H& J  a: R# kiptables -t mangle -I LMT -s 192.168.1.0/24 -p udp -m mport --dports 53,100:200,3777,14555:14559 -j RETURN
" [# ~) n% @$ s& d8 A就OK了。
* p8 O; R; p3 o8 E  p欢迎各位测试   
2 U$ G% e3 q# d4 M5 L: x3 D8 p# m* J! W
#!/bin/sh8 n5 g7 c& z9 n0 x+ Y) |' S
#变量初始化
0 H+ Z4 d% f' O# R  S- P1 WUP="40kbps"
0 Q/ A8 ~5 Y; T3 |& x5 U& `( o  fDOWN="180kbps"
( u- ]: w0 n) U' `! g" bUP2R="14kbps"
( N  ^% {! n1 k; [$ X7 a8 SUP2C="20kbps"1 ]3 z8 T% _& T9 q" s
UP3R="1kbps"
) i! c+ Y3 U$ U) ~/ T4 c7 wUP3C="10kbps"6 T7 T3 U- d4 \4 `
DOWN2R="60kbps"
: ^; D) V) I! CDOWN2C="150kbps"
- B: E) @3 {0 G/ VDOWN3R="10kbps"0 s4 X4 x1 c2 ?( d5 v, K
DOWN3C="80kbps"
8 a- g) z9 ]+ t. I. oUPLOADR="1kbps". g( z3 Y& m: U7 }
DOWNLOADR="10kbps"
3 K' @* q* K2 P5 [6 [$ sUPLOADC="6kbps"$ Q8 H  P, k* J. n
DOWNLOADC="80kbps"
% S3 v: G. S: l+ Z- l- UUIP="192.168.1."
; q; I2 a& A2 q4 DNET="192.168.1.0/24"
2 B8 e5 j: }% k& fUPSP=:1282 d" U* k6 @8 b0 Q9 J
DOWNSP=:512! {$ f' t6 f6 y+ M9 L
IPS="2"
2 ~$ F9 c, l9 E5 m, C3 }( oIPE="8"4 n7 z2 T9 X- |0 ^' M: z

0 Q# \6 t( r2 o7 ~0 S  ~4 r) `#装载核心模块,创建QOS专用链
8 d% v' ~/ r3 C; P8 Y  g  ]9 Linsmod imq4 o- c2 x. \% u& q, t3 c; l
insmod ipt_IMQ' f; Z. s5 f3 ~0 h; G2 w
ifconfig imq1 up
' o" J6 A! _- @" iifconfig imq0 up$ l! _! ?6 O! v+ q: }5 I3 j1 i
insmod ipt_length.o
0 O9 I9 E4 Q! Z3 ~" w3 q" `iptables -t mangle -N QOSDOWN2 u9 m6 k- Y5 U! ], g$ Y
iptables -t mangle -N QOSUP
7 A8 ~) s* F7 T3 C7 t8 W" h! t6 eiptables -t mangle -I FORWARD -d $NET -j QOSDOWN8 U# V2 {0 c, O- r) Y
iptables -t mangle -I FORWARD -s $NET -j QOSUP
# m% Z* s" ^8 }# ]9 c) kiptables -t mangle -A QOSDOWN -j IMQ --todev 0
! F( m& U! B" eiptables -t mangle -A QOSUP -j IMQ --todev 1
; c" c0 V; k  t% D) c7 I% Z  S1 }. D- r  I
#根队列初始化0 L9 b) a4 y) |' g8 p, p/ G2 O
tc qdisc del dev imq0 root
! H( k; k/ w6 g1 ?tc qdisc del dev imq1 root
% F7 _  ?' H, q& Z) |tc qdisc add dev imq0 root handle 1: htb
' S' y, q  `$ s6 f# m$ H6 dtc qdisc add dev imq1 root handle 1: htb
; j! l/ v; s8 g: W% Ltc class add dev imq1 parent 1: classid 1:1 htb rate $UP
# }4 S, g( B2 H& F) O+ ttc class add dev imq0 parent 1: classid 1:1 htb rate $DOWN
4 e. r, V" y2 D0 E0 [6 d
7 P% C5 U; f. e" n7 ?) |#特殊队列(小包,http)初始化4 ?2 l' W6 B7 w" W% z+ t9 A
tc class add dev imq0 parent 1:1 classid 1:2 htb rate $DOWN2R ceil $DOWN2C prio 0
- E/ C5 u: r- R$ G2 @$ g/ ztc class add dev imq0 parent 1:1 classid 1:3 htb rate $DOWN3R ceil $DOWN2C prio 71 Z8 f4 k+ ~7 v! j& h0 M$ t
tc filter add dev imq0 parent 1:0 protocol ip handle 2 fw flowid 1:2
( d. d& m+ Q7 [tc filter add dev imq0 parent 1:0 protocol ip handle 3 fw flowid 1:3; F) Z" V9 p7 m( ]
iptables -t mangle -A QOSDOWN -j BCOUNT- z3 a5 c# f8 T9 _
iptables -t mangle -A QOSDOWN -m length --length $DOWNSP -j MARK --set-mark-return 2: C  `) K" Z( q) O! d# P
iptables -t mangle -A QOSDOWN -p tcp -m mport --sports 80,443 -m bcount --range :204800 -j MARK --set-mark-return 2% [0 O5 [( E. \2 |" h: q
iptables -t mangle -A QOSDOWN -p tcp -m mport --sports 80,443 -m bcount --range 204801: -j MARK --set-mark-return 3' B; q3 v9 e' J7 g4 |) E
tc class add dev imq1 parent 1:1 classid 1:2 htb rate $UP2R ceil $UP2C prio 0
4 a' ^. u) n: s0 s% B& e. Gtc class add dev imq1 parent 1:1 classid 1:3 htb rate $UP3R ceil $UP3C prio 79 `( z7 X+ e: G. f/ x8 ^+ l4 r: G
tc filter add dev imq1 parent 1:0 protocol ip handle 2 fw flowid 1:2
- P, [- v. q$ b: @2 _8 r. Qtc filter add dev imq1 parent 1:0 protocol ip handle 3 fw flowid 1:3
' _8 ?+ n' n/ e( _5 A& G$ X' aiptables -t mangle -A QOSUP -j BCOUNT; S4 {  j( T+ o( [
iptables -t mangle -A QOSUP -m length --length :128 -j MARK --set-mark-return 2
8 J  b( L$ i  Qiptables -t mangle -A QOSUP -p tcp -m mport --dports 80,443 -m bcount --range :204800 -j MARK --set-mark-return 20 q' u3 `: ^" f% [2 y$ k" A$ q3 ^
iptables -t mangle -A QOSUP -p tcp -m mport --dports 80,443 -m bcount --range :204801 -j MARK --set-mark-return 3; N$ V; V/ i8 y7 m4 z: P

* p' ~7 i& |" n! }& y7 ^#特殊IP限速(未给出): I0 M- R+ ^: O# \

: V, x& o0 |! W: @  n#所有普通IP单独限速
* }/ n# ]4 [2 I8 }$ l; C2 z" ?i=$IPS;
. l5 }5 u3 n; `2 l. Owhile [ $i -le $IPE ]
; `! m- B9 f( y( D4 T4 `do# ?7 M# t( x, D# t/ i0 M0 b: Q
tc class add dev imq1 parent 1:1 classid 1:1$i htb rate $UPLOADR ceil $UPLOADC prio 2
- f5 v. l: E+ {7 C# Xtc qdisc add dev imq1 parent 1:1$i handle 1$i: sfq perturb 15
( i- _$ f" ^) e3 m; [7 otc filter add dev imq1 parent 1:0 protocol ip handle 1$i fw classid 1:1$i 5 o7 n2 R3 g. l" h
tc class add dev imq0 parent 1:1 classid 1:1$i htb rate $DOWNLOADR ceil $DOWNLOADC prio 2
2 d: Y8 D6 Y0 X. P4 J5 Ztc qdisc add dev imq0 parent 1:1$i handle 1$i: sfq perturb 15
+ D# b  ]6 n; h% K) Ctc filter add dev imq0 parent 1:0 protocol ip handle 1$i fw classid 1:1$i; ]* }( d9 r% Y. [. o7 |, }" _. |
iptables -t mangle -A QOSUP -s $UIP$i -j MARK --set-mark-return 1$i
4 g- U( [2 S4 ?/ c1 N( F, eiptables -t mangle -A QOSDOWN -d $UIP$i -j MARK --set-mark-return 1$i: D% |3 n# H7 b
i=`expr $i + 1`
7 d2 S  S$ T  H( ndone. C, v7 b6 v2 n" u
- U/ P- o0 ]" t4 C) Q  U
#每IP限制TCP连接数50,UDP连接数80,并且对53,80等端口例外(该模块可以单独使用)
& S* S! ]/ i( T% N  Eiptables -t mangle -N LMT
5 C1 y2 F6 E9 S$ uiptables -t mangle -I PREROUTING -i br0 -j LMT, ~" e2 B' f1 a2 J. ^
iptables -t mangle -A LMT -p tcp --syn -m connlimit --connlimit-above 50 --connlimit-mask 32 -j DROP
! t* ?% s' O' }; ?+ Aiptables -t mangle -A LMT -p udp -m udplimit --udplimit-above 80 --udplimit-mask 32 -j DROP . l/ A- \2 i( ~9 b
iptables -t mangle -I LMT -s 192.168.1.0/24 -p udp -m mport --dports 53 -j RETURN1 ^4 @' ^' n6 h$ `7 B  F
iptables -t mangle -I LMT -s 192.168.1.0/24 -p tcp -m mport --dports 20:23,25,53,80,110,443 -j RETURN

本帖子中包含更多资源

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

×
发表于 2010-3-5 00:35:04 | 显示全部楼层
多谢老大指点!!
发表于 2010-5-9 17:54:55 | 显示全部楼层
多谢发的好软件
发表于 2010-7-25 06:47:07 | 显示全部楼层
试试看效果如何。
luorobin 该用户已被删除
发表于 2010-10-13 21:29:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
minifish 该用户已被删除
发表于 2010-12-21 19:12:13 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2011-3-5 18:12:49 | 显示全部楼层
多谢楼主的脚本
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-6-17 21:05 , Processed in 0.026678 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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