【轉】 LINUX中IPTABLES和TC對端口的帶寬限制 端口限速


不管是iptables還是tc(traffic control)功能都很強大,都是與網絡相關的工具,那么我們就利用這兩個工具來對端口進行帶寬的限制.

1.使用命令ifconfig查看服務器上的網卡信息,比如網卡eth0是用來對外的網絡,也就是用戶通過該網卡連接到系統,那么我們就對這個網卡進行帶寬的限制

ifconfig

2.建立eth0隊列

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.創建分類

tc class add dev eth0 parent 1:1 classid 1:20 htb rate 2Mbit ceil 3Mbit

以根分類1:1為父類創建分類1:20 ,類別為htb 限速 1Mbit 最大3Mbit(htb可借用其它類帶寬)

5.添加公平隊列

tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10

命令解釋:sfq是公平隊列 ,防止一個會話占用全部帶寬

6.創建分類過濾器

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM