岁月联盟 · 中国技术网 本站主页 | 安全认证 | 用户服务 | 技术论坛
新闻快报 | 新手学堂 | 黑客特区 | 程序语言 | 数 据 库 | 防 火 墙 | 路由交换 | 系统集成 | 服 务 器 | 存储备份 | 考试认证
Windows | Linux | Java | 协议分析 | 问题解答 | 进程大全 | 网页设计 | 多 媒 体 | 图库资料 | 软件下载 | 站内下载
  您现在的位置: 岁月联盟 >> Linux频道 >> 网络管理 >> 网络管理 >> Linux频道正文
TC+IPTables实现下载和上传带宽限制脚本
作者:未知 文章来源:本站整理 点击数: 更新时间:2007-12-18 17:50:48
  每个IP单独限制,好随时修改。如果是用拨号上网的,请把以下内容加到/etc/ppp/ip-up.local中,否则断线重拨后会没有上传限制,对BT光限制下载是不够的。
 
  #!/bin/bash
 
  #
 
  # zyx@zyx.2288.org
 
  #
 
  # 定义上下带宽
 
  # 注意是 Kbit
 
  DOWNLOAD=800Kbit
 
  UPLOAD=160Kbit
 
  # 定义内网IP段
 
  INET=192.168.0.
 
  # 定义限制的IP范围
 
  IPS=1
 
  IPE=253
 
  # 定义本服务器IP
 
  ServerIP=254
 
  # 定义进出设备
 
  IDEV=eth0
 
  ODEV=ppp0
 
  #
 
  #
 
  #
 
  /sbin/tc qdisc del dev $IDEV root handle 10:
 
  /sbin/tc qdisc del dev $ODEV root handle 20:
 
  #
 
  /sbin/tc qdisc add dev $IDEV root handle 10: cbq bandwidth 100Mbit avpkt 1000
 
  /sbin/tc qdisc add dev $ODEV root handle 20: cbq bandwidth 1Mbit avpkt 1000
 
  #
 
  /sbin/tc class add dev $IDEV parent 10:0 classid 10:1 cbq bandwidth 100Mbit rate 100Mbit allot 1514 weight 1Mbit prio 8 maxburst 20 avpkt 1000
 
  /sbin/tc class add dev $ODEV parent 20:0 classid 20:1 cbq bandwidth 1Mbit rate 1Mbit allot 1514 weight 10Kbit prio 8 maxburst 20 avpkt 1000
 
  #
 
  # 不限制内网从本服务器下载。
 
  # 注意如本服务器上有代理,用户可通过代理绕过带宽限制,
 
  # 可取消以下三句限制从本服务器下载。
 
  /sbin/tc class add dev $IDEV parent 10:1 classid 10:10 cbq bandwidth 100Mbit rate 95Mbit allot 1514 weight 20Kbit prio 5 maxburst 20 avpkt 1000 bounded
 
  /sbin/tc qdisc add dev $IDEV parent 10:10 sfq quantum 1514b perturb 15
 
  /sbin/tc filter add dev $IDEV parent 10:0 protocol ip prio 50 u32 match ip src $INET$ServerIP flowid 10:10
 
  #
 
  #限制下载速度
 
  COUNTER=$IPS
 
  while [ $COUNTER -le $IPE ]
 
  do
 
  # 以下三句限制各IP的下载带宽
 
  /sbin/tc class add dev $IDEV parent 10:1 classid 10:1$COUNTER cbq bandwidth 100Mbit rate $DOWNLOAD allot 1514 weight 20Kbit prio 5 maxburst 20 avpkt 1000 bounded
 
  /sbin/tc qdisc add dev $IDEV parent 10:1$COUNTER sfq quantum 1514b perturb 15
 
  /sbin/tc filter add dev $IDEV parent 10:0 protocol ip prio 100 u32 match ip dst $INET$COUNTER flowid 10:1$COUNTER
 
  COUNTER=` expr $COUNTER + 1 `
 
  done
 
  #
 
  #限制上传速度
 
  COUNTER=$IPS
 
  while [ $COUNTER -le $IPE ]
 
  do
 
  # 以下三句限制各IP的上传带宽
 
  /sbin/tc class add dev $ODEV parent 20:1 classid 20:1$COUNTER cbq bandwidth 1Mbit rate $UPLOAD allot 1514 weight 4Kbit prio 5 maxburst 20 avpkt 1000 bounded
 
  /sbin/tc qdisc add dev $ODEV parent 20:1$COUNTER sfq quantum 1514b perturb 15
 
  /sbin/tc filter add dev $ODEV parent 20:0 protocol ip prio 100 handle $COUNTER fw classid 20:1$COUNTER
 
  COUNTER=` expr $COUNTER + 1 `
 
  done
 
  #特殊照顾的IP在以上范围的用户
 
  NIP=78
 
  #192.168.0.78 这家伙天天BT
 
  ND=200Kbit
 
  NU=50Kbit
 
  /sbin/tc class change dev $IDEV parent 10:1 classid 10:1$NIP bandwidth 100Mbit rate $ND allot 1514 weight 20Kbit prio 5 maxburst 20 avpkt 1000 bounded
 
  /sbin/tc class change dev $ODEV parent 20:1 classid 20:1$NIP cbq bandwidth 1Mbit rate $NU allot 1514 weight 4Kbit prio 5 maxburst 20 avpkt 1000 bounded
 
  #
 
  NIP=1
 
  # 192.168.0.1 增加我自已的带宽
 
  ND=1500Kbit
 
  NU=500Kbit
 
  /sbin/tc class change dev $IDEV parent 10:1 classid 10:1$NIP bandwidth 100Mbit rate $ND allot 1514 weight 20Kbit prio 5 maxburst 20 avpkt 1000 bounded
 
  /sbin/tc class change dev $ODEV parent 20:1 classid 20:1$NIP cbq bandwidth 1Mbit

[1] [2] 下一页


  • 上一个Linux频道:
  • 下一个Linux频道:
  •  
    热门文章
    推荐文章
    关于我们 | 发展历程 | 网站地图 | 广告服务 | 招贤纳士 | 战略合作 | 友情链接 | 著作声明 | 联系我们
    Copyright © 2002-2007 SYUE All rights reserved.
    E_mail:Admin@Syue.Com 皖ICP备05004589号
    未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
    天龙八部私服 传世私服 传奇世界私服 传奇私服 bet365 天龙八部私服 热血江湖私服 英雄合击传奇私服 热血江湖私服 bet365 bet365