欢迎 chinavb 加入本站!
 免费注册  用户登陆  汇款方式  汇款确认  产品报价  联系我们  帮助中心
加入收藏
设为首页
会员体系
申请VIP
网站首页 光盘超市 软件下载 技术文章 专题 用户中心 VIP会员 技术论坛 网站留言 娱乐中心 卓越资源
今天是:2009年01月08日 星期四  您现在位于: 首页 → 技术文章 → linux网关之流量控...
   linux网关之流量控制(Qos)
作者:jiangdaoyou  出处:jiangdaoyou.cublog.c  更新时间: 2007年02月14日 
iptables+TC进行流量控制 下面是我们一个子公司的一个linux网关的Qos设置,利用iptables和TC,感觉效果很好的。

 

 实例: 

  

流量控制:

 

防火墙上eth0连接内网,eth1连接外网线路,带宽为2.5M,目标:

 

1、内网用户下载占用的带宽最多为1000kbit/s 而192.168.37.167主192.168.37.168下载带宽可达到1.5Mbit/s

 

2、内网中的192.168.37.124和192.168.37.140的上传占用的带宽最多为1.5M,而其它用户最多为150Kbit/s

 

(这样的流量控制后,内网中即使有人使用bt之类的软件也不怕。因为他的上传最多只能占用150Kbit/s,下载最多1000kbit/s ^-^)

 

 

 

#!/bin/sh

 

TC="/sbin/tc"

LAN_IFACE="eth0"

INET_IFACE="eth1"

ERP1="192.168.37.167/32"

ERP2="192.168.37.168/32"

INTERNAL_LAN="192.168.37.0/24"

 

start(){

 

#################### Qos rule on eth0  ########################

 

#$TC qdisc add dev eth1 root tbf rate 512kbit lantency 50ms burst 1540

if [ "$LAN_IFACE" != "" ];then

        $TC qdisc add dev $LAN_IFACE root handle 1:0 cbq bandwidth 100Mbit avpkt 1000 cell 8

        $TC class add dev $LAN_IFACE parent 1:0 classid 1:1 cbq bandwidth 100Mbit rate 2.5Mbit weight 3Mbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded

        $TC class add dev $LAN_IFACE parent 1:1 classid 1:2 cbq bandwidth 100Mbit rate 1500kbit weight 2Mbit prio 6 allot 1514 cell 8 maxburst 20 avpkt 1000

        $TC class add dev $LAN_IFACE parent 1:1 classid 1:3 cbq bandwidth 100Mbit rate 1000kbit weight 1Mbit prio 7 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded

        $TC qdisc add dev $LAN_IFACE parent 1:2 handle 20: sfq

        $TC qdisc add dev $LAN_IFACE parent 1:3 handle 30: sfq

        $TC filter add dev $LAN_IFACE parent 1:0 protocol ip prio 2 u32 match ip dst $ERP1 flowid 1:2

        $TC filter add dev $LAN_IFACE parent 1:0 protocol ip prio 2 u32 match ip dst $ERP2 flowid 1:2

        $TC filter add dev $LAN_IFACE parent 1:0 protocol ip prio 4 u32 match ip dst $INTERNAL_LAN flowid 1:3

        echo ""

        echo ""

        echo "qos rule on eth0 start ...........ok!"

        echo ""

        echo ""

fi

 

#################### Qos rule on eth1  ########################

 

if [ "$INET_IFACE" != "" ];then

        iptables -F -t mangle

        iptables -X -t mangle

        iptables -Z -t mangle

        iptables -A PREROUTING -t mangle -s $ERP1 -j MARK --set-mark 1

        iptables -A PREROUTING -t mangle -s $ERP2 -j MARK --set-mark 1

        iptables -A PREROUTING -t mangle -s 192.168.37.124/32 -j MARK --set-mark 1

        iptables -A PREROUTING -t mangle -s 192.168.37.140/32 -j MARK --set-mark 1

        iptables -I PREROUTING -t mangle -s $INTERNAL_LAN -j MARK --set-mark 2

 

 

        $TC qdisc add dev $INET_IFACE root handle 2:0 cbq bandwidth 100Mbit avpkt 1000 cell 8

        $TC class add dev $INET_IFACE parent 2:0 classid 2:1 cbq bandwidth 100Mbit rate 2Mbit weight 1Mbit prio 8 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded

        $TC class add dev $INET_IFACE parent 2:1 classid 2:2 cbq bandwidth 100Mbit rate 1500kbit weight 150kbit prio 6 allot 1514 cell 8 maxburst 20 avpkt 1000

        $TC class add dev $INET_IFACE parent 2:1 classid 2:3 cbq bandwidth 100Mbit rate 150kbit weight 20kbit prio 7 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded

        $TC qdisc add dev $INET_IFACE parent 2:2 handle 20: sfq

        $TC qdisc add dev $INET_IFACE parent 2:3 handle 30: sfq

 

        $TC filter add dev $INET_IFACE parent 2:0 protocol ip prio 1 handle 1 fw classid 2:2

        $TC filter add dev $INET_IFACE parent 2:0 protocol ip prio 2 handle 2 fw classid 2:3

        echo ""

        echo ""

        echo "qos rule on eth1 start ...........ok!"

        echo ""

        echo ""

fi

 

}

 

stop(){

 

if [ "$LAN_IFACE" != "" ];then

        $TC qdisc del dev $LAN_IFACE root

fi

if [ "$INET_IFACE" != "" ];then

        $TC qdisc del dev $INET_IFACE root

fi

iptables -F -t mangle

iptables -X -t mangle

iptables -Z -t mangle

 

}

 

status(){

echo "show qdisc ............ "

echo ""

echo ""

echo ""

$TC -d -s qdisc

echo ""

echo ""

echo "show filter ............ "

echo ""

echo ""

if [ "$LAN_IFACE" != "" ];then

        $TC -d -s filter ls dev $LAN_IFACE

fi

echo ""

echo ""

if [ "$INET_IFACE" != "" ];then

        $TC -d -s filter ls dev $INET_IFACE

fi

echo ""

echo ""

echo "show class ............ "

echo ""

echo ""

if [ "$LAN_IFACE" != "" ];then

        $TC -d -s class ls dev $LAN_IFACE

fi

echo ""

echo ""

if [ "$INET_IFACE" != "" ];then

        $TC -d -s class ls dev $INET_IFACE

fi

echo ""

echo ""

 

}

 

case "$1" in

  start)

    start

    ;

  stop)

    stop

    ;

  restart)

    stop

    start

    ;

  status)

    status

    ;

  *)

    echo $"Usage:$0 {start|stop|restart|status}"

    exit 1

esac

 
 
 
 
 (本文已被浏览 2623 次)
 发布人:sdccf
 → 推荐给我的好友
上篇文章:Linux邮件服务器安装与配置
下篇文章:oracle备份与恢复精华资料
 相关文章:
TCP Wrappers 在OSR5和UW7下的使用 Debian4.0下如何用less察看中文文本
利用iptables防火墙保护Oracle数据库 Debian GNU/Linux 4安装随谈
Debian GNU/Linux 4.0 正式发布 Linux下基于路由策略的IP地址控制实例
Linux防火墙之IPtables概念与用法 Fedora Core6中IPtables日志管理技巧
Informix-4GL中FETCH和FOREACH的说明 SCO OpenServer输入用户名后阻塞的解决方法
Linux+Informix后台数据库系统编程设置 Linux下IpTables的配置
Linux下三种网络管理工具功能及使用 LINUX高级应用之IPTABLES实例分析
用Linux+iptables构建防火墙实例 Linux 更改IP地址
linux流量控制精华实例 提高Linux系统性能加速网络应用程序
Linux网络部分优化策略方法 Linux操作系统下的硬盘提速方案

相关搜索
查看百度中关于linux网关之流量控制(Qos)的更多内容
查看google中关于linux网关之流量控制(Qos)的更多内容
   文章分类
操作系统 |
SCO_UNIX  Sun_Solaris  IBM_AIX  HP_UX  Linux  BSD  Tru64_UNIX 
通用UNIX知识  Windows  Minix 
程序设计 |
Shell编程  C/C++  汇编  PHP  JAVA  Perl  Python 
ASP/HTML  XML  中间件 
数据库 |
Oracle  Informix  Sybase  Fox  DB2  SQL  MySQL 
PostgreSQL 
网络应用 |
网络应用 
计算机硬件 |
计算机主机  打印机  路由器  交换机  终端  磁带机  MO 
刻录机  终端服务器  调制解调器 
   文章评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论
您的姓名: 您的Email:
评论内容:
250字内
发表评论:      发表评论须知 →
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  • 关于我们 ┋  网站留言 ┋  网站地图 ┋  友情链接 ┋  与我在线 ┋  汇款确认 ┋  管理 ┋  TOP
    Unix爱好者家园  http://www.unix-cd.com/
    联系我们:sdccf@163.com
    腾讯QQ: 7644599
    备案序号:鲁ICP备05000455号
    Copyright (c) 2001-2008 Unix-cd.com. All Rights Reserved.