頻寬控管
2024-07-21 02:36:31
供稿:網(wǎng)友
作者: 阿忠
依照大哥所翻譯的文章內(nèi)容來(lái)看,cbq是適合正式的ip不能經(jīng)過(guò)NAT的
有NAT的服務(wù)器是不能兼做CBQ 頻寬控管。
IN<--->ETH0--linux(防火墻)---ETH1<----->客戶端(正式的IP)
而經(jīng)過(guò)設(shè)定頻寬控管后如(上傳):
如下圖
IN<---ETH0(隊(duì)列)--LINUX(防火墻)---ETH1(隊(duì)列)<-----客戶端(正式的IP)
所以抓取以封包的程序
如:tc filter add dev eth0 parent 20:0 PRotocol ip prio 100 u32 /
match ip src 150.151.23.24 flowid 20:100
如封包經(jīng)過(guò)防火墻到達(dá)隊(duì)列時(shí)要比對(duì)來(lái)源ip match ip src
就可將比對(duì)到的封包頡取出來(lái),送入20:100的隊(duì)列當(dāng)中
而經(jīng)過(guò)設(shè)定頻寬控管后如(下傳):
如下圖
IN--->ETH0(隊(duì)列)--LINUX(防火墻)---ETH1(隊(duì)列)----->客戶端(正式的IP)
所以抓取以封包的程序
如:tc filter add dev eth1 parent 10:0 protocol ip prio 100 u32 /
match ip src 150.151.23.24 flowid 10:100
如封包經(jīng)過(guò)防火墻到達(dá)隊(duì)列時(shí)要比對(duì)來(lái)源ip match ip dst
就可將比對(duì)到的封包頡取出來(lái),送入20:100的隊(duì)列當(dāng)中
所以頻寬控管只能設(shè)在路由器(route)無(wú)法兼做偽裝。
----------------如要兼做(NAT)偽裝--------------------------------------
而經(jīng)過(guò)設(shè)定頻寬控管后如(上傳):
動(dòng)機(jī):
我的做法是:既然使用u32分類器來(lái)比對(duì)上傳的ip封包而受制
于封包偽裝的動(dòng)作比u32分類器比對(duì)ip還快一步執(zhí)行的話。
那就不要用這一個(gè)ip比對(duì)方式換一個(gè)
既然受制防火墻(nat)那就用防火墻來(lái)比對(duì)來(lái)源ip封包 FW
依照大哥所翻的文章第11.1項(xiàng) FW 分類器
iptables -I PREROUTING -t mangle -p tcp -d HostA /
-j MARK --set-mark 1
tc filter add dev eth0 protocol ip parent 1:0 prio 1 /
handle 1 fw classid 1:1
來(lái)設(shè)定其測(cè)試結(jié)果控頻寬功能照我們所設(shè)定的k數(shù)在上傳
底下是以u(píng)32來(lái)比對(duì)區(qū)塊圖
如下圖
IN<---ETH0(隊(duì)列)--LINUX(防火墻NAT)---ETH1(隊(duì)列)<-----客戶端(虛凝IP)
所以抓取以封包的程序
如:tc filter add dev eth0 parent 20:0 protocol ip prio 100 u32 /
match ip src 192.168.1.50 flowid 20:100
如封包經(jīng)過(guò)防火墻到達(dá)隊(duì)列時(shí)要比對(duì)來(lái)源ip match ip src
就可將比對(duì)到的封包頡取出來(lái),送入20:100的隊(duì)列當(dāng)中
但它是無(wú)法抓取到192.168.1.50的IP封包的只會(huì)從ROOT佇類通過(guò)而無(wú)法轉(zhuǎn)交下層的佇
類。
因?yàn)榉獍冉?jīng)先偽裝后再經(jīng)過(guò)佇類程序。
***我有將來(lái)源ip192.168.1.50換為match ip src 211.***.***.37 (eth0的正式ip)
就可頡取到封包送到root佇類而轉(zhuǎn)交到20:100佇類當(dāng)中
*****所以它所抓取到的封包是經(jīng)過(guò)偽裝后的封包
而經(jīng)過(guò)設(shè)定頻寬控管后如(下傳):
如下圖
IN--->ETH0(隊(duì)列)--LINUX(防火墻)---ETH1(隊(duì)列)----->客戶端(正式的IP)
所以抓取以封包的程序
如:tc filter add dev eth1 parent 10:0 protocol ip prio 100 u32 /
match ip dst 192.168.1.50 flowid 10:100
如封包經(jīng)過(guò)防火墻到達(dá)隊(duì)列時(shí)要比對(duì)來(lái)源ip match ip dst
就可將比對(duì)到的封包頡取出來(lái),送入20:100的隊(duì)列當(dāng)中
*****這部份:就沒(méi)有問(wèn)題一切正常受頻寬控制中
以下的例子是在我的計(jì)算機(jī)上所執(zhí)行當(dāng)中
歡迎大哥收入巧心得中
還希望大哥有空的話,多多翻些原文的文章,給我們這些不識(shí)英文的小子,能有一窺
linux領(lǐng)域的管道。謝謝
#!/bin/bash
# unded 敘述拿掉那么該類別就能夠借取其它類別的頻寬來(lái)用。
# eth0 為上傳
# eth1 為下傳
#下例為上傳:宣告隊(duì)列戒律
tc qdisc add dev eth0 root handle 10: cbq bandwidth 64Kbit avpkt 1000
#宣告頂層的類別為: 10:0
tc class add dev eth0 parent 10:0 classid 10:1 cbq bandwidth 64Kbit rate
512Kbit allot 1514 weight 3Kbit prio 8 maxburst 20 avpkt 1000
#宣告客戶類別,
及其頻寬大小 id:為10:300
# 忠的上傳頻寬
tc class add dev eth0 parent 10:1 classid 10:300 cbq bandwidth 64Kbit rate
18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
# 滋的上傳頻寬
tc class add dev eth0 parent 10:1 classid 10:100 cbq bandwidth 64Kbit rate
18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
# 修的上傳頻寬
tc class add dev eth0 parent 10:1 classid 10:110 cbq bandwidth 64Kbit rate
18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
# 雨仰的上傳頻寬
tc class add dev eth0 parent 10:1 classid 10:120 cbq bandwidth 64Kbit rate
18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
# 雪的上傳頻寬
tc class add dev eth0 parent 10:1 classid 10:130 cbq bandwidth 64Kbit rate
18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
# 阿賓的上傳頻寬
tc class add dev eth0 parent 10:1 classid 10:140 cbq bandwidth 64Kbit rate
18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
# 張?zhí)纳蟼黝l寬
tc class add dev eth0 parent 10:1 classid 10:150 cbq bandwidth 64Kbit rate
18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
# 煌的上傳頻寬
tc class add dev eth0 parent 10:1 classid 10:160 cbq bandwidth 64Kbit rate
18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
# 婷的上傳頻寬
tc class add dev eth0 parent 10:1 classid 10:180 cbq bandwidth 64Kbit rate
18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
# 裕的上傳頻寬
tc class add dev eth0 parent 10:1 classid 10:190 cbq bandwidth 64Kbit rate
18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
# 郵件主機(jī)的上傳頻寬
tc class add dev eth0 parent 10:1 classid 10:200 cbq bandwidth 64Kbit rate
18Kbit allot 1514 weight 3Kbit prio 5 maxburst 20 avpkt 1000 bounded
#-------------------------------------------------------------------------
# 宣告治理隊(duì)列
tc qdisc add dev eth0 parent 10:300 sfq quantum 1514b perturb 15
tc qdisc add dev eth0 parent 10:100 sfq quantum 1514b perturb 15
tc qdisc add dev eth0 parent 10:110 sfq quantum 1514b perturb 15
tc qdisc add dev eth0 parent 10:120 sfq quantum 1514b perturb 15
tc qdisc add dev eth0 parent 10:130 sfq quantum 1514b perturb 15
tc qdisc add dev eth0 parent 10:140 sfq quantum 1514b perturb 15
tc qdisc add dev eth0 parent 10:150 sfq quantum 1514b perturb 15
tc qdisc add dev eth0 parent 10:160 sfq quantum 1514b perturb 15
tc qdisc add dev eth0 parent 10:180 sfq quantum 1514b perturb 15
tc qdisc add dev eth0 parent 10:190 sfq quantum 1514b perturb 15
tc qdisc add dev eth0 parent 10:200 sfq quantum 1514b perturb 15
#-----------------------------------------------------------------------
# 向核心解釋什么樣的封包屬于什么樣別:
# 忠的封包設(shè)定及頡取
tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 30 fw classid
10:300
iptables -I PREROUTING -t mangle -s 192.168.2.50 -j MARK --set-mark 30
# 滋的封包設(shè)定及頡取
tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 1 fw classid
10:100
iptables -I PREROUTING -t mangle -s 192.168.1.10 -j MARK --set-mark 1
# 修的封包設(shè)定及頡取
tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 2 fw classid
10:110
iptables -I PREROUTING -t mangle -s 192.168.1.11 -j MARK --set-mark 2
# 雨仰的封包設(shè)定及頡取
tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 3 fw classid
10:120
iptables -I PREROUTING -t mangle -s 192.168.1.12 -j MARK --set-mark 3
# 雪的封包設(shè)定及頡取
tc filter add dev eth0 protocol ip parent 10:0 prio 100 handle 4 fw classid
10:130
iptables -I PREROUTING -t mangle -s 192.168.1.13 -j MAR right">(出處:清風(fēng)軟件下載學(xué)院)