Iptables防火墙limit模块扩展匹配规则详解(防火墙开启icmp协议)新鲜出炉

随心笔谈2年前发布 编辑
155 0
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买



目录Iptables防火墙limit模块扩展匹配规则@[TOC]1.限制每分钟接收10个ICMP数据报文2.允许10个数据报文快速通过,然后限制每分钟接收1个个ICMP数据报文3.限速案例,限制网络传输的带宽不可以超过500k/s

limit模块的作用是针对报文的速率进行限制,限制的单位有秒、分钟、小时、天等,例如一分钟内只接收10个请求报文,多余的报文则会被丢弃。

limit模块的常用参数:

:指定限制的平均速率单位,以秒(s)、分(m)、时(h)、天为单位,默认是3小时。:要匹配的最大初始包的数量,例如1分钟内限制10个请求报文,那么首先一次性会接收我们指定初始化包的数量,剩余请求包按着速率单位来进行接收,默认值为5个报文。

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个。

实现思路和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个。

限速如何通过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模块的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:Iptables防火墙自定义链表实现方式Iptables防火墙基本匹配条件应用详解Iptables防火墙四表五链概念及使用技巧详解Iptables防火墙iprange模块扩展匹配规则详解Iptables防火墙tcp-flags模块扩展匹配规则详解Iptables防火墙string模块扩展匹配规则Iptables防火墙connlimit与time模块扩展匹配规则

© 版权声明

相关文章