亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iptables的限速測試總結

發布時間:2020-08-07 14:42:04 來源:網絡 閱讀:38935 作者:ptallrights 欄目:安全技術

         iptables的限速測試總結

一、iptables的簡介

    iptables 是用來設置、維護和檢查Linux內核的IP數據包過濾規則的。

 

    iptables 在對信息包進行過濾處理時,是遵循一定的規則的,這些規則被存放在信息過濾表里面,防火墻會根據這些表里的規則對信息包進行相應的處理;而在這些信息過濾表中實際上是把規則下放到相應的鏈上;iptables就是一個可以對這些信息過濾表進行添加、修改、刪除規則的工具。

 

    其分為兩個模塊組成,一個是netfilter和iptables;netfilter是防火墻的模塊,主要在內核空間是一些信息過濾表;iptables則是管理netfilter的工具。

 

二、iptables的表和鏈

    iptables主要由3個表組成,分別是filter、nat、mangle.在每個表里面會包含不同的鏈,我們主要是在表里面寫鏈上的定義規則(策略)

 

    默認一般不指定就是使用filter表,主要包括3個鏈:INPUT鏈、FORWARD鏈和OUTPUT鏈

    INPUT主要是用來處理發送給自己的包,即數據包的目的地址是自己的。通過定義一些INPUT鏈的規則去對這些數據包采取一些相應的動作。

    FORWARD主要是用來處理通過自己的數據包,即這個數據包通過自己,但源地址和目的地址都不是自己,針對這些數據包去采取相應的動作。

    OUTPUT主要是處理自己生成的數據包,即源地址是自己的,去通過鏈上的規則去采取相應的動作。

 

下面簡單說明一下3條鏈之間的關系:

iptables的限速測試總結

    數據包來了先經過判斷,然后選擇是INPUT鏈處理還是FORWARD鏈處理,出去的時候會判斷是不是OUTPUT鏈需要處理。

 

 

三、iptables鏈上的動作

         在鏈上有很多的動作可以執行,比如ACCEPT、DROP、REJECT

    ACCEPT對滿足規則條件的數據包允許通過

    DROP丟棄數據包,并且是不返回信息的

    REJECT丟棄數據包,返回拒絕的信息

 

四、iptables的命令參數說明

下面關于iptables命令的詳細參數簡單說明一下:

-t(table)指定表

-A(append) 追加,一般將新加的規則(策略)是追加到表中鏈上的末尾規則

-I(insert) 插入鏈 后面加數字可以指定講規則加到相應的行,默認是所有規則最前面

-L(list)查看規則 可以加-n、-v參數效果查看更明顯

-F(flush) 清除所有規則

-D(delete)刪除某個規則  可以指定相應鏈上的規則順序號去刪除,--line-numbers可以查看

 

匹配數據包的一些條件參數:

-i進入的網卡

-o 出去的網卡

-s ip源地址IP

-d ip 目的地址IP

--dport端口號  目的端口號

--sdport 端口號  源端口號

 

五、iptables的規則匹配順序

    數據包通過防火墻的時候是要順序匹配策略的,從上往下依次匹配,一個包不符合某條規則,就會由后面的規則來處理,如果都不符合,就由缺省的策略處理。

 

六、實際線下測試

1)環境

下面是我自己線下測試的環境以及所寫的規則:

環境:3臺redhat6.5(VM虛擬機)

iptables的限速測試總結

2)定義的規則

在開啟iptables的機器上寫入以下規則,這樣我們根據實際寫的規則去解釋一下:

#iptables -I FORWARD 1 -p tcp -i eth0 -o eth2 -s 192.168.2.3 -d192.168.3.3 --dport 80 -m limit --limit=500/s --limit-burst=1000  -j ACCEPT

這條規則是:允許轉發從eth0進來的源IP為192.168.2.3,去訪問從eth2出去的目的IP為192.168.3.3的80端口(即http服務)的數據包,其中會對包的速率做匹配,是每秒轉發500個包,初始的burst值是1000

 

#iptables -I FORWARD 2 -p tcp -i eth2 -o eth0 -s 192.168.3.3 -d192.168.2.3 --dport 80 -m limit --limit=500/s --limit-burst=1000  -j ACCEPT

這條規則是:允許轉發從eth2進來的源IP為192.168.3.3,去訪問從eth0出去的目的IP為192.168.2.3的80端口(即http服務)的數據包,其中會對包的速率做匹配,是每秒轉發500個包,初始的burst值是1000

 

#iptables -A FORWARD -p tcp -i eth0 -o eth2 -s 192.168.2.3 -d192.168.3.3 --dport 80 -j DROP

這是對從eth0進來的源IP為192.168.2.3,并且從eth2出去的目的IP為192.168.3.3的80端口(即http服務)的數據包進行丟棄

 

#iptables -A FORWARD -p tcp -i eth2 -o eth0 -s 192.168.3.3 -d192.168.2.3 --dport 80 -j DROP     

這是對從eth2進來的源IP為192.168.3.3,并且從eth0出去的目的IP為192.168.2.3的80端口(即http服務)的數據包進行丟棄

 

3)limit的相關解釋

    其中限速的實現是依靠limit規則做限制,兩條規則(ACCEPT和DROP)相配合實現的;通過對每秒匹配包的個數進行限制,多余的由后面相應的DROP規則去處理,這樣就實現了iptables限速

 

    --limit 500/s 表示每秒500次; 1/m 則為每分鐘一次
    --limit-burst 表示允許觸發 limit 限制的最大次數 (預設5)

 

    這里的--limit-burst=1000相當于說最開始我有1000的可以匹配的包去轉發,然后我匹配的包的個數是根據--limit=500/s進行限制的,也就是每秒限制轉發500個數據包,多余的會被下面符合要求的DROP規則去處理,去進行丟棄,這樣就實現了對數據包的限速問題。

 

    這里“limit”這個詞準確說,應該是“按一定速率去匹配”,至于“限制”還是“放行”是后面 -j 動作來實現的,limit 僅僅是個 match 模塊,他的功能是匹配,匹配方式是按一定速率.用iptables的limit模塊,目標是ACCEPT.當你設置300/s時,它大約每3ms發出一個令牌,獲得令牌的包可以發出去,沒有獲得令牌的包只能等待下一個令牌到來,這樣不會造成一些包丟失,更不會造成所謂“斷線”的

4)實際生成規則展示

    實際生成的規則如下,一般寫好的規則是放在內存中的,重啟就會被清除,可以通過service iptables save 去保存定義好的規則,這樣重啟還是會存在的

iptables的限速測試總結

 

 

5)測試數據

下面是一些線下測試限速的結果,僅供參考,具體以線上實際穩定的速率為準:

測試命令是通過:wget http://192.168.2.3/filename

 

 

羅列一下--limit=1000/s --limit-burst=1000的相關數據:

2016-08-2214:49:31 (55.4 MB/s) - “1M” saved [1048576/1048576]

2016-08-2214:49:31 (140 MB/s) - “10M” saved [10485760/10485760]

2016-08-2214:49:33 (23.7 MB/s) - “50M” saved [52428800/52428800]

2016-08-2214:49:36 (40.0 MB/s) - “100M” saved [104857600/104857600]

2016-08-2214:50:05 (34.8 MB/s) - “1G” saved [1073741824/1073741824]

2016-08-2214:52:15 (39.7 MB/s) - “5G” saved [5368709120/5368709120]

2016-08-2214:52:15 (37.4 MB/s) - “1M” saved [1048576/1048576]

2016-08-2214:52:15 (33.4 MB/s) - “10M” saved [10485760/10485760]

2016-08-2214:52:16 (62.5 MB/s) - “50M” saved [52428800/52428800]

2016-08-2214:52:18 (54.6 MB/s) - “100M” saved [104857600/104857600]

2016-08-2214:52:40 (46.9 MB/s) - “1G” saved [1073741824/1073741824]

2016-08-2214:55:02 (36.1 MB/s) - “5G” saved [5368709120/5368709120]

2016-08-2214:55:02 (35.3 MB/s) - “1M” saved [1048576/1048576]

2016-08-2214:55:02 (35.0 MB/s) - “10M” saved [10485760/10485760]

2016-08-2214:55:04 (37.4 MB/s) - “50M” saved [52428800/52428800]

2016-08-2214:55:05 (58.6 MB/s) - “100M” saved [104857600/104857600]

2016-08-2214:55:29 (42.8 MB/s) - “1G” saved [1073741824/1073741824]

2016-08-2214:57:24 (44.6 MB/s) - “5G” saved [5368709120/5368709120]

 

 

最后這是我測試改變相關參數后,iptables限速的一些數據:

iptables的限速測試總結

6)分析

   通過對上面的數據分析,可以知道,利用iptables進行限速主要是利用率iptables的limit模塊對數據包進行匹配處理,從而實現限速的;--limit=match,這個是限定了匹配包的速率,換句話說就是每秒可以轉發多少個數據包,這是對iptables做限速的最主要的參數,通過制定它就基本可以確定要控制的限制速率是多少;--limit-burst是允許觸發 limit 限制的最大次數,默認預設是5;也就是說最開始的5個包會被直接轉發,這時burst就會減為0,再來的包就會丟給下一條規則去處理(這里設定是DROP),直到limit參數產生新的令牌,才會繼續去匹配轉發。

    簡單來說限速最主要的就是limit和burst,burst是最初有多少令牌可以去轉發包,后面limit會進行按速率匹配,相當于按時間補充令牌數,第一條規則達到速率上限就會把剩下的包丟給下一條規則去處理,我們下一條和它對應的就是DROP,所以會把剩下的包丟棄,從而實現了限速。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

旬邑县| 石嘴山市| 遂宁市| 繁昌县| 西宁市| 黄冈市| 尚义县| 长顺县| 崇明县| 浦北县| 汤原县| 大田县| 潜江市| 罗定市| 揭东县| 贞丰县| 冕宁县| 赤水市| 碌曲县| 琼结县| 聂拉木县| 永兴县| 原阳县| 抚远县| 铜山县| 徐水县| 云龙县| 西平县| 成安县| 白银市| 道孚县| 香河县| 临高县| 黄浦区| 义马市| 湟中县| 元谋县| 达尔| 杭锦旗| 江阴市| 当涂县|