首頁 > 軟體

Iptables防火牆limit模組擴充套件匹配規則詳解

2022-08-05 18:02:00

Iptables防火牆limit模組擴充套件匹配規則

@[TOC]

limit模組的作用是針對報文的速率進行限制,限制的單位有秒、分鐘、小時、天等,例如一分鐘內只接收10個請求報文,多餘的報文則會被丟棄。

limit模組的常用引數:

  • --limit rate[/second|/minute|/hour|/day]:指定限制的平均速率單位,以秒(s)、分(m)、時(h)、天為單位,預設是3小時。
  • --limit-burst:要匹配的最大初始包的數量,例如1分鐘內限制10個請求報文,那麼首先一次性會接收我們指定初始化包的數量,剩餘請求包按著速率單位來進行接收,預設值為5個報文。

1.限制每分鐘接收10個ICMP資料包文

1.先新增一條規則,限制1分鐘內只收10個icmp協定的請求報文。
[root@jxl-1 ~]# iptables -t filter -I INPUT -p icmp -m limit --limit 10/minute -j ACCEPT

2.然後新增第二條規則,超出10個報文後,其餘的報文全部丟棄。
[root@jxl-1 ~]# iptables -t filter -A INPUT -p icmp -j DROP 

3.檢視新增的防火牆規則
[root@jxl-1 ~]# iptables -L -n -v --line-number
Chain INPUT (policy ACCEPT 1331 packets, 1111K bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 10/min burst 5
2        0     0 DROP       icmp --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1334 packets, 1844K bytes)
num   pkts bytes target     prot opt in     out     source               destination  

檢視效果,可以看到前5個封包都可以正常接收,那是因為limit預設初始包就是5個,因此沒有任何問題,從第六個封包開始後,每隔6秒才會正常處理一個封包,因為1分鐘限制10次封包的接收,那就表示6秒收一個,效果如下圖所示。

也可以理解為是一開始可以快速通過5個資料包文,後面的資料包文是每分鐘通過10個。

2.允許10個資料包文快速通過,然後限制每分鐘接收1個個ICMP資料包文

實現思路和1)中一模一樣,只不過就是調整一下初始包的數量。

1.先新增一條規則,限制1分鐘內只收10個icmp協定的請求報文。
[root@jxl-1 ~]# iptables -t filter -I INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT

2.然後新增第二條規則,超出10個報文後,其餘的報文全部丟棄。
[root@jxl-1 ~]# iptables -t filter -A INPUT -p icmp -j DROP 

效果如下,首先傳送了10個封包正常接收,剩下的封包每隔1分鐘接收1個。

3.限速案例,限制網路傳輸的頻寬不可以超過500k/s

限速如何通過limit模組來實現呢?其實也很簡單,我們可以計算出1個封包的大小,然後用500k的大小除以封包的大小,得出500k能換算出多少個封包,例如是300個,那麼最後設定1秒鐘接收的封包的數量為300個,就可以實現每秒的傳輸速率頻寬在500k左右。

一個封包的大小大概在1500位元組。

公式:(限制的頻寬速率*1000)/(單個封包的大小)

500k的限速,每秒可限制的封包數量大概為(500*1000/150 = 300個)300個。

[root@jxl-1 ~]# iptables -t filter -I OUTPUT -p  tcp -m limit --limit 300/s  -j ACCEPT
[root@jxl-1 ~]# iptables -t filter -A OUTPUT -p  tcp -j DROP

速率頻寬多多少少是由落差的,如果就想限制在500k以內,可以根據測試的結果來調整每秒封包的效果,如下圖所示,拉取檔案的速率為327k/s,此時封包的數量我是設定的120個。

以上就是Iptables防火牆limit模組擴充套件匹配規則詳解的詳細內容,更多關於Iptables防火牆limit模組的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com