1.
cd /tmp
wget -c -q http://puzzle.dl.sourceforge.net/sourceforge/cbqinit/cbq.init-v0.7.3&
2.
mv /tmp/cbq.init-v0.7.3 /sbin/cbq
chmod u+x /sbin/cbq
3.
mkdir -p /etc/sysconfig/cbq
4.
cd /etc/sysconfig/cbq/
建立下面文件
cbq-0002.manager
cbq-0004.limit
cbq-0010.other
cbq-0002.manager内容如下:
#(eth1为我的第二块网卡,实际带宽为100Mbit,根据公式weight~=RATE/10所以实际速率为10Mbit)
DEVICE=eth1,100Mbit,10Mbit
#(限制最大带宽)
RATE=4Mbit
#(限制最大速率)
WEIGHT=400Kbit
#(优先级别)
PRIO=5
#(规则,是来自192.168.100.86,到目的地地址192.168.1.0网段的1080端口)
RULE=192.168.1.0/24:1080,192.168.100.86
#(规则,是来自192.168.100.76,到目的地地址192.168.1.0网段的1081端口)
RULE=192.168.1.0/24:1081,192.168.100.76
cbq-0004.limit内容如下:
DEVICE=eth1,100Mbit,10Mbit
RATE=100Kbit
WEIGHT=20Kbit
PRIO=5
#(规则,是来自192.168.100.51网段,到目的地地址192.168.1.0网段的1080端口)
RULE=192.168.1.0/24:1080,192.168.100.51/32
#(规则,是来自192.168.100.41网段,到目的地地址192.168.1.0网段的1081端口)
RULE=192.168.1.0/24:1081,192.168.100.41/32
cbq-0010.other内容如下:
DEVICE=eth1,100Mbit,10Mbit
RATE=800Kbit
WEIGHT=80Kbit
PRIO=5
#(规则,是来自192.168.100.0网段,到目的地地址192.168.1.0网段的1081端口)
RULE=192.168.1.0/24:1081,192.168.100.0/24
(规则,是来自192.168.100.0网段,到目的地地址192.168.1.0网段的1080端口)
RULE=192.168.1.0/24:1080,192.168.100.0/24
5.
最后启动 cbq
cbq start
6.
注意
/etc/sysconfig/cbq/
下的文件不能以cbq-0001开始
cbq-后面的数字要以0002开始递增
cbq-000x-后面的英文可根据自己需要命名
网络限速实际是weight的值
停止cbq的命令为
cbq stop
列出目前规则
cbq list
查看当前状态
cbq stats
更多内容请参考http://puzzle.dl.sourceforge.net/sourceforge/cbqinit/cbq.init-v0.7.3
cbq的实现原理是通过tc来实现的。所以系统首先装有tc哦
如果不用cbq可以把下面的内容改成适合你的就可
/sbin/tc qdisc del dev eth1 root
/sbin/tc qdisc add dev eth1 root handle 1 cbq bandwidth 100Mbit avpkt 1000 cell 8
/sbin/tc class change dev eth1 root cbq weight 10Mbit allot 1514
/sbin/tc class add dev eth1 parent 1: classid 1:2 cbq bandwidth 100Mbit rate 4Mbit weight 400Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1
000 bounded
/sbin/tc qdisc add dev eth1 parent 1:2 handle 2 tbf rate 4Mbit buffer 10Kb/8 limit 15Kb mtu 1500
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1080 0xffff match ip dst 192.168.2
00.86 classid 1:2
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1081 0xffff match ip dst 192.168.2
00.86 classid 1:2
/sbin/tc class add dev eth1 parent 1: classid 1:3 cbq bandwidth 100Mbit rate 4Mbit weight 40Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 10
00 bounded
/sbin/tc qdisc add dev eth1 parent 1:3 handle 3 tbf rate 4Mbit buffer 10Kb/8 limit 15Kb mtu 1500
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1080 0xffff match ip dst 192.168.1
00.21 classid 1:3
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1081 0xffff match ip dst 192.168.1
00.21 classid 1:3
/sbin/tc class add dev eth1 parent 1: classid 1:4 cbq bandwidth 100Mbit rate 200Kbit weight 20Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt
1000 bounded
/sbin/tc qdisc add dev eth1 parent 1:4 handle 4 tbf rate 200Kbit buffer 10Kb/8 limit 15Kb mtu 1500
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1080 0xffff match ip dst 192.168.1
00.51/32 classid 1:4
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1081 0xffff match ip dst 192.168.1
00.51/32 classid 1:4
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1080 0xffff match ip dst 192.168.1
00.41/32 classid 1:4
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1081 0xffff match ip dst 192.168.1
00.41/32 classid 1:4
/sbin/tc class add dev eth1 parent 1: classid 1:10 cbq bandwidth 100Mbit rate 800Kbit weight 80Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt
1000 bounded
/sbin/tc qdisc add dev eth1 parent 1:10 handle 10 tbf rate 800Kbit buffer 10Kb/8 limit 15Kb mtu 1500
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1081 0xffff match ip dst 192.168.1
00.0/24 classid 1:10
/sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1080 0xffff match ip dst 192.168.1
00.0/24 classid 1:10
tc教程可参考http://www.ms555.cn/linux/sysadmin/39.html
不过个人觉得对于新手来说还是 cbq来的快
如果没做NAT上传的做法跟下传的方法是一致的
好像要使用iptable才能应用限制带宽的(我也不是太肯定)
对于限制带宽的第一个地址如:xxx.xxx.xxx.1好像有问题,要避开限制第一个地址
如做了NAT上传带宽的限制在iptable的策略中要加
iptables -t mangle -A PREROUTING -s YOUR_INTERNAL_IP -j MARK --set-mark DECIMAL_NUMBER
无非是将你要限制的东西给标出来,再在你对应的cbq-xxx.xxx中 MARK=DECIMAL_NUMBER 这个数字可以很大的。
限制下传的:
DEVICE=eth0,10Mbit,1Mbit
RATE=240Kbit
WEIGHT=24Kbit
PRIO=5
RULE=172.16.0.100
限制上传的:
DEVICE=eth1,10Mbit,1Mbit
RATE=64Kbit
WEIGHT=8Kbit
PRIO=5
MARK=2