1.使用命令ifconfig查看服務器上的網卡信息,好比網卡eth0是用來對外的網絡,也就是用戶經過該網卡鏈接到系統,那麼咱們就對這個網卡進行帶寬的限制html
ifconfig
2.創建eth0隊列bash
tc qdisc add dev eth0 root handle 1: htb default 20
命令解釋:將一個htb隊列綁定在eth0上,編號爲1:0,默認歸類是 20服務器
3.創建跟分類網絡
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 3Mbit
命令解釋:在隊列1:0上建立根分類1:1 限速,類別htb,限速3Mbit工具
4.建立分類code
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 2Mbit ceil 3Mbit
以根分類1:1爲父類建立分類1:20 ,類別爲htb 限速 1Mbit 最大3Mbit(htb可借用其它類帶寬)htm
5.添加公平隊列隊列
tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10
命令解釋:sfq是公平隊列 ,防止一個會話佔用所有帶寬ip
6.建立分類過濾器it
tc filter add dev eth0 parent 1:20 protocol ip u32 match ip sport 8080 0xffff classid 1:20
命令解釋:以分類1:20爲父類建立編號爲1:20的過濾器 ,加載u32模塊,指定端口爲8080
到此爲止帶寬就限制住了,最大帶寬爲3Mbit,也就是200多k的下載速度。
7.刪除tc隊列
tc qdisc del dev eth0 root
把創建好的隊列刪除,帶寬再也不限制。
以上只是使用tc進行對帶寬的限制,固然也能夠結合iptables使用,那麼以上的第六步就不太同樣了
6.建立過濾器並制定handle
tc filter add dev em2 parent 1:0 protocol ip prio 1 handle 1000 fw classid 1:20
7.使用iptable對端口綁定tc隊列
iptables -t mangle -I POSTROUTING -o eth0 -sport 8080 -j MARK --set-mark 1000 iptables -t mangle -I POSTROUTING -o eth0 -sport 8080 -j RETURN
以上就是iptables與tc結合的結果,這裏限制的是端口,固然也能夠制定某個目標ip只限制制定ip的帶寬。
總結
這裏提到限制的是帶寬,並且下載根據鏈接數進行平均分配,對TC而言,限制200k的話,一個鏈接那速度就是200k,若是兩個鏈接就變成100k一個,而iptables的話,若是一個鏈接佔滿了200k的帶寬,那麼第二個鏈接就直接被拒絕了。
最終若是隻是想對應用系統的下載的全部鏈接每一個鏈接都限制在200k的下載速度的話,最好仍是應用服務器本身進行限制。
本文轉載自:http://www.fullstacks.cn/archives/423