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

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

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

相關文章
相關標籤/搜索