(未完)

補: http://ssorc.tw/?p=243

1。cbq.init 是基於 CBQ traffic control 的 script

2。不需要再用更複雜的 ip 與 tc 指令

3。為了加速 cbq.init start,它有個 cache 檔在 /var/cache/cbq.init 裡 ???

4。cbq.init compile 可以透出 tc 指令化

5。cbq 的設定預設是放在 /etc/sysconfig/cbq 目錄底下

6。設定檔格式長這樣子 cbq-<clsid>.<name>

clsid 從0002 到 FFFF,它實際是 CBQ 的 class ID,且是 16 進位的數值
name 是 class name,可以自行定義

7。設定檔內容說明

DEVICE=eth0,10Mbit,1Mbit               # DEVICE=<ifname>,<bandwidth>,<weight>
# ifname = 網卡名稱
# bandwidth = 網卡上限頻寬
# weight = bandwidth / 10
# 如果同一個 eth0 要多個設定檔,bandwidth 及 weight 只能設一次不能重覆
# 其它的檔只有 DEVICE=eth0RATE=2Mbit                                      # 限頻寬,單位可以是 Kbit, Mbit, bps, Kbps, Mbps,如果都沒給預設是 bits/sec
# 假如你要像 IPS 分用你的網路 2Mbits/256Kbits 的話這裡就設定 2Mbit

WEIGHT=200Kbit                              # WEIGHT = RATE / 10

PRIO=5                                             # 優先權 (值介於1到8),預設為 5

PARENT=0002                                   # 父系 clsid,預設沒有

LEAF=none | tbf | sfq                        # 預設為tbf,可以防止這個class從父系借入頻寬,即使 BOUNCED=no時,
# 如果要讓可以從父系借入頻寬就要設定 LEAF=none或LEAF=sfq
# 在相同的class如果要確定分流是公平的就設 LEAF=sfq

BOUNDED=yes | no                           # 預設為 yes
# 設成 yes,將在超出限制的情況下不允許從它的父系借入頻寬,
# 當設成 no,時還要搭配LEAF=none 或 LEAF=sfq

ISOLATED=yes | no                           # 預設為 no
# 設成 yes,將不會借出沒用到的頻寬給下層使用

BUFFER=10Kb/8

LIMIT=15Kb

PEAK=

MTU=1500

QUANTUM=

PERTURB=10

RULE=10.1.1.0/24:80                    # 目的為10.1.1.0的網段,且port為80
RULE=10.2.2.5                               # 目的為10.2.2.5的主機
RULE=10.2.2.5:20/0xfffe                # 目的為10.2.2.5的主機,且port為20和21
RULE=:25,10.2.2.128/26:5000       # 來源port為25,到目的網段為10.2.2.128,且port為5000
RULE=10.5.5.5:80,                          # 來源主機為10.5.5.5,且port 為80
# ps: RULE 可以多筆
# ps: “沒”加逗點的為目的端,”有”加逗點的為來源端

REALM=

MARK=                                             # 搭配 iptables的 mangle,如果你不用 RULE的話

TIME=                                              # 依時間限頻 ???
# 可多筆 TIME=
# 有重覆的話依最後一筆為主
# 0=sunday, 1=monday
# TIME=[<dow>,<dow>, …,<dow>/]<from>-<till>;<rate>/<weight>[/<peak>]
# TIME=0,1,2,5/18:00-06:00;256Kbit/25Kbit
# TIME=60123/18:00-06:00;256Kbit/25Kbit
# TIME=18:00-06:00;256Kbit/25Kbit

8。cbq 的作用是在於流出的封包,如果你有一個 NAT 環境,eht1是對外、eth0是對內,那限eth1就是限到上傳,限eth0就是限到下載,對像是內網的 client

模擬一個環境:

1。我今天租用了 ADSL 8Mbits/640Kbits 的網路,同時間我要分享我的網路給我室友用,給個 2Mbits/256Kbits吧

2。使用撥接的方式,網路的架構如下

internet ———-+ ppp0 [ server ] eth0 +—————— client1 (朋友) (dhcp配 ip,區段是: 10.1.1.33 ~ 10.1.1.55)
|——————-client2 (其它)

3。這次的設定概念放在設定檔裡的頻寬值為主、使用 MARK 搭配 iptables,所以我對誰可以使用多少頻寬之後只要用 iptables 加入即可

4。client1 下載 internet 的檔案限在 2Mbits

編輯設定檔:

cbq-0011.eth0_dl_global

DEVICE=eth0,100Mbit,10Mbit
RATE=100Mbit
WEIGHT=10Mbit

cbq-0012.eth0_dl_2M_MARK50

DEVICE=eth0
RATE=4000Kbit
WEIGHT=400Kbit
MARK=50

iptables 設定

iptables -t mangle -A FORWARD        -o eth0 -m iprange –dst-range 10.1.1.33-10.1.1.55 -j MARK –set-mark 50#  或者用
iptables -t mangle -A POSTROUTING -o eth0 -m iprange –dst-range 10.1.1.33-10.1.1.55 -j MARK –set-mark 50

重啟 cbq restart

5。client1 下載 server 也是 2M,這次只要設定 iptables 就好

iptables -t mangle -A OUTPUT -o eth0 -m iprange –dst-range 10.1.1.33-10.1.1.55 -j MARK –set-mark 50

6。client1 上載至 internet 的檔案限在 256Kbits

最後修改日期: 2012 年 07 月 01 日

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。