欢迎
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.