找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 13900|回复: 8

[原创]:每ip限速,就是这么简单!测试一下。

[复制链接]
发表于 2007-7-20 20:45:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
阅读基础:
仔细翻看linux流量控制 htb和u32分类器部分
完全明白ip数据流向和带宽。
能看明白限制下载的同理写上传很容易。
  1. #!/bin/sh
  2. tc qdisc del dev eth2 root 2>/dev/null                        (清空tc规则,eth2为内网NIC)
  3. tc qdisc add dev eth2 root handle 10: htb default 2254    (定义一个根,默认匹配2254"通道")
  4. tc class add dev eth2 parent 10: classid 10:1 htb rate 12500kbps ceil 12500kbps  (定义一个类10:1隶属于根,速度写死,100M)
  5. i=1                          (定义一个计数器,初始化为1)
  6. while [ $i -le 256 ]     (当i小于256:一个c类子网)
  7. do
  8. j=0                          (定义一个变量j,每次循环把i的值+100付给他)
  9. j=`expr $i + 100`     
  10. echo "$j"                  (用作标记排错,看有没有“撞车”的) 下面以第一个循环为例,代进变量值去。
  11. tc class add dev eth2 parent 10:1 classid $j htb rate 125kbps ceil 125kbps prio 1      (定义一个类10:101。101是j变量,每次递增1,隶属于根,速度写死,1M)

  12. echo "pfifo"  (用作标记排错,看有没有“撞车”的)
  13. tc filter add dev eth2 parent 10: protocol ip prio 1 u32 match ip dst 10.0.0.$i/32 classid 10:$j  (定义源地址如果是$i。$i这时等于1,也就是源地址是10.0.0.1/32,并且协议是ip,划归给类10:$j $j=101 也就是classid 10:101)
  14. echo "match"
  15. i=`expr $i + 1` (i加一,下次循环等于2)
  16. done       (返回去跑循环)

  17. 就是不用打mangle!!比起iptables mangle节约了80%的开支。如果有4个c,那么可以跑4个脚本,完成1220个client的限速。
  18. 作用于网桥或者纯路由不起nat的话可以在外网口也跑这么个脚本,
  19. tc filter add dev eth2 parent 10: protocol ip prio 1 u32 match ip dst 10.0.0.$i/32 classid 10:$j   这句把dst 改成src 用以完成上传流量的限制。

  20. 一句话概括:有几个源ip就有几个classid,每个class限速xx兆,用u32能根据ip地址分类来实现把 src地址的数据流匹配到已限速的class里。
  21. 完成限速的效果。让1k client单ip限速成为轻松的事情。
复制代码

[ 本帖最后由 hb2k 于 2007-7-26 15:12 编辑 ]
routeros
 楼主| 发表于 2007-7-20 20:49:47 | 显示全部楼层

linux版块应多一些自己解决问题的实例脚本

而不是像ros板块那样以应用为主,多做注释,避免阅读者“乱猜”!
欢迎各位朋友指正,渴望有消耗资源更低的方法。

[ 本帖最后由 hb2k 于 2007-7-20 20:55 编辑 ]
routeros
回复

使用道具 举报

头像被屏蔽
发表于 2007-7-24 13:11:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
routeros
回复

使用道具 举报

发表于 2007-7-25 07:30:14 | 显示全部楼层
hb2k兄~~~
mangle的用途~~~

你做的只是单独的限速,使用mangle却不仅仅是如你所做的简单限速。

还有就是 U32 分类器至今我也没细研究(HTB自己翻译过几篇文章,理解、使用的还可以)。。。  不知道你的脚本中在哪儿使用了U32分类器

--------------------------------------------------------------------------
回a99456820:
如果你在CL中不使用自带的限速设置的话,可以用HB2K的脚本。
routeros
回复

使用道具 举报

头像被屏蔽
发表于 2007-7-25 11:55:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
routeros
回复

使用道具 举报

发表于 2007-7-25 19:49:37 | 显示全部楼层
感谢楼主不再收金币即能让我们看到这样的贴子!

希望更多的朋友能发布一些有用的资料,通过交流能学习更深的东西.

我也感谢帮助我的一些网友,他们为我提供了我自己破解许久都得不出来的密码,现在我已经能自己编译飞鱼星3200,而且移植4500(实际上是模拟)的工作也正在进行中.
routeros
回复

使用道具 举报

 楼主| 发表于 2007-7-26 15:19:36 | 显示全部楼层

呵呵

nat只能iptables打mangle,

路由转发和桥接限制下载速率的思路是"dst to privateIP"去往内网私有地址的分别打到class里。作用在“内网”网卡。

同理,外网网卡"src from privateIP" 从内网私有地址的分别打到class里,作用在“外网”网卡。

迎合linux流量控制里的:无法做到控制别人给你的,但是可以控制从“界面”出去的。

mangle当然可以用,但iptables在1000多条规则后ifconfig 后 overrun会很多error的(性能下降厉害,处理不过来。)

外网一旦起了nat就是所有out的srcIP 都被伪装成合法ip,没有你的私有ip了,所以不会被命中,并分配到每个class里。

用处还是比较大的,接在pix之类的nat/pat设备前能做到单ip限速(上下行),成本比较低的。

对于iptables mangle限速,google上和cu上有大把的雷同文章。不用mangle进行classid分类从而节约系统资源是写这些的主要目的。

还有tos 作用同样的相当大,用它来区分网络流量应该可行的。

[ 本帖最后由 hb2k 于 2007-7-26 15:33 编辑 ]
routeros
回复

使用道具 举报

 楼主| 发表于 2007-8-7 14:49:30 | 显示全部楼层

衍生的一个问题。升级内核后tc无法使用。

确认内核里关于qos的选项已经全部选中了,可tc qdisc之后一片报错。
http://developer.osdl.org/dev/iproute2/download/
下载对应你内核版本的iproute2.tzr.gz,
cd /linux-2.6.20.14
cp iproute2.tar.gz
tar zxvf iproute2.tar.gz
make
make install
即可。
routeros
回复

使用道具 举报

发表于 2007-9-15 13:21:38 | 显示全部楼层
楼主老大 我是新手 没看明白 能否
介绍下WEB界面下

单IP怎么限速啊
routeros
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-16 10:06 , Processed in 0.054370 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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