網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
Iptables防火墻limit模塊擴(kuò)展匹配規(guī)則
@[TOC]
limit模塊的作用是針對(duì)報(bào)文的速率進(jìn)行限制,限制的單位有秒、分鐘、小時(shí)、天等,例如一分鐘內(nèi)只接收10個(gè)請(qǐng)求報(bào)文,多余的報(bào)文則會(huì)被丟棄。
limit模塊的常用參數(shù):
-
--limit rate[/second|/minute|/hour|/day]
:指定限制的平均速率單位,以秒(s)、分(m)、時(shí)(h)、天為單位,默認(rèn)是3小時(shí)。 -
--limit-burst
:要匹配的最大初始包的數(shù)量,例如1分鐘內(nèi)限制10個(gè)請(qǐng)求報(bào)文,那么首先一次性會(huì)接收我們指定初始化包的數(shù)量,剩余請(qǐng)求包按著速率單位來(lái)進(jìn)行接收,默認(rèn)值為5個(gè)報(bào)文。
1.限制每分鐘接收10個(gè)ICMP數(shù)據(jù)報(bào)文
1.先添加一條規(guī)則,限制1分鐘內(nèi)只收10個(gè)icmp協(xié)議的請(qǐng)求報(bào)文。
[root@jxl-1 ~]# iptables -t filter -I INPUT -p icmp -m limit --limit 10/minute -j ACCEPT2.然后添加第二條規(guī)則,超出10個(gè)報(bào)文后,其余的報(bào)文全部丟棄。
[root@jxl-1 ~]# iptables -t filter -A INPUT -p icmp -j DROP?3.查看添加的防火墻規(guī)則
[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個(gè)數(shù)據(jù)包都可以正常接收,那是因?yàn)閘imit默認(rèn)初始包就是5個(gè),因此沒(méi)有任何問(wèn)題,從第六個(gè)數(shù)據(jù)包開(kāi)始后,每隔6秒才會(huì)正常處理一個(gè)數(shù)據(jù)包,因?yàn)?分鐘限制10次數(shù)據(jù)包的接收,那就表示6秒收一個(gè),效果如下圖所示。
也可以理解為是一開(kāi)始可以快速通過(guò)5個(gè)數(shù)據(jù)報(bào)文,后面的數(shù)據(jù)報(bào)文是每分鐘通過(guò)10個(gè)。
2.允許10個(gè)數(shù)據(jù)報(bào)文快速通過(guò),然后限制每分鐘接收1個(gè)個(gè)ICMP數(shù)據(jù)報(bào)文
實(shí)現(xiàn)思路和1)中一模一樣,只不過(guò)就是調(diào)整一下初始包的數(shù)量。
1.先添加一條規(guī)則,限制1分鐘內(nèi)只收10個(gè)icmp協(xié)議的請(qǐng)求報(bào)文。
[root@jxl-1 ~]# iptables -t filter -I INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT
2.然后添加第二條規(guī)則,超出10個(gè)報(bào)文后,其余的報(bào)文全部丟棄。
[root@jxl-1 ~]# iptables -t filter -A INPUT -p icmp -j DROP?
效果如下,首先發(fā)送了10個(gè)數(shù)據(jù)包正常接收,剩下的數(shù)據(jù)包每隔1分鐘接收1個(gè)。
3.限速案例,限制網(wǎng)絡(luò)傳輸?shù)膸挷豢梢猿^(guò)500k/s
限速如何通過(guò)limit模塊來(lái)實(shí)現(xiàn)呢?其實(shí)也很簡(jiǎn)單,我們可以計(jì)算出1個(gè)數(shù)據(jù)包的大小,然后用500k的大小除以數(shù)據(jù)包的大小,得出500k能換算出多少個(gè)數(shù)據(jù)包,例如是300個(gè),那么最后設(shè)置1秒鐘接收的數(shù)據(jù)包的數(shù)量為300個(gè),就可以實(shí)現(xiàn)每秒的傳輸速率帶寬在500k左右。
一個(gè)數(shù)據(jù)包的大小大概在1500字節(jié)。
公式:(限制的帶寬速率*1000)/(單個(gè)數(shù)據(jù)包的大小)
500k的限速,每秒可限制的數(shù)據(jù)包數(shù)量大概為(500*1000/150 = 300個(gè))300個(gè)。
[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以內(nèi),可以根據(jù)測(cè)試的結(jié)果來(lái)調(diào)整每秒數(shù)據(jù)包的效果,如下圖所示,拉取文件的速率為327k/s,此時(shí)數(shù)據(jù)包的數(shù)量我是設(shè)置的120個(gè)。
原文鏈接:https://juejin.cn/post/7127958301685317669
相關(guān)推薦
- 2022-09-01 深入了解Golang的指針用法_Golang
- 2022-08-15 數(shù)據(jù)結(jié)構(gòu)之有頭鏈表的實(shí)現(xiàn)
- 2022-05-01 python3中apply函數(shù)和lambda函數(shù)的使用詳解_python
- 2022-11-06 Android實(shí)現(xiàn)圓形圖片小工具_(dá)Android
- 2022-02-02 css 水波紋效果
- 2022-06-01 Go中的gRPC入門教程詳解_Golang
- 2023-07-30 el-tab在切換時(shí)echarts圖表顯示不正常
- 2022-12-03 C?++迭代器iterator在string中使用方法介紹_C 語(yǔ)言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支