Linux防健忘日誌No.65-Ubuntu 12.04 tc 指令做 QOS 流量管控單純腳本無介紹篇

前幾天小弟家的內網速度相當之緩慢

 

檢查了好幾個地方都檢查不出所以然來

之後才發現原來我朋友把我的Server開的AjaXplorer當免空用= =

傳了一堆子的大檔上來,吃我的下載事小

 

但別人要抓大檔回去就是吃我的上傳阿…,種花電信上傳這麼悲劇,經不起折磨

 

所以上傳頻寬都被吃光了

 

由於AjaXplorer是屬於WEB服務,其實之前就要做WEB的QOS,但一直找不到好方法

前天有找到Apache人家寫的cband模組,但好難用,而且只能限制上下載加再一起的總頻寬

相當貧弱的模組…,眼看只有最後Linux內建的tc指令可以搞定這件事情

 

但tc好難喔…我不是網路通訊專業,已經到我自學的極限,沒投入時間下去無法突破理解這個指令阿

 

於是昨天請好友竹竿在幫我下個腳本,結合之前的iptables防火牆做一個搭配

以下示範控管Server本機總上傳量限制在3Mbps,因為家中只有一台Server主機,身兼數職…gateway, router, dhcp sv, web sv, samba sv…

所以因為Linux架構的緣故,無法將輸入(下載)Server的流量作控管,僅能對輸出做流向限制(上傳)

 

不過還好,50M的下載,沒幹啥大事業,通常傳檔過來的Upload速率都比我Download還慢上很多倍,所以目前不擔心這個

 

廢話不說,經過竹竿同意,public他幫我下的tc指令,請各位自行取用,我無法解釋…只知道大略簡單需要改的速度部分

把這些指令接續到上一篇文章中iptables底下,不接也可以…自己看著辦就是:http://thkaw.pixnet.net/blog/post/89372793

 

ppp0是對外的連接port,如果內網有請求,Server的上傳速度最高限制在3Mbps,如果內網無機器啟動無網路請求,則會自動條回5Mbps最高上傳速率

還有這裡的速率有點特殊喔,他的kbps其實是Kilobytes per second,也就是大KB,所以已經是除完8Bit的速率,所以反而是3Mbps/8=640KByte/s=這裡的640kbps…

看man paper才發現,原來是因為Liunx習慣都是小寫來做指令,所以才會無法用大小寫來區分這裡是byte還是bit

 

至於FORWARD到哪裡去,就是內網分派的IP網段,這要自己算,除非你規劃的跟我規畫的一樣,紅字是需要自己視情況調整的

 

#=========================================================

tc qdisc del dev ppp0 root
tc qdisc add dev ppp0 root handle 1:0 htb
tc class add dev ppp0 parent 1:0 classid 1:1 htb rate 640kbps
tc class add dev ppp0 parent 1:1 classid 1:2 htb rate 384kbps ceil 640kbps
tc filter add dev ppp0 parent 1:0 protocol ip handle 1 fw classid 1:1
tc filter add dev ppp0 parent 1:0 protocol ip handle 2 fw classid 1:2 prio 10

iptables -t mangle -A OUTPUT -o ppp0 -j MARK –set-mark 2
iptables -t mangle -A FORWARD -s 192.168.1.0/24 -o ppp0 -j MARK –set-mark 1

#=========================================================

 

 

 

 

thx for:竹竿

Leave a comment

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料