Iptables防火墙limit模块扩展匹配规则

在配置防火墙时,除了控制“谁能访问”,还有一个同样重要的议题:“能以多快的频率访问”。这就要提到Iptables的limit模块了,它就是专门为报文速率戴上“紧箍咒”的工具。

简单来说,limit模块的核心功能是控制单位时间内通过的数据包数量,可以精确到每秒、每分钟、每小时甚至每天。比如,你可以设定规则,要求一分钟内只放行10个ICMP请求,多出来的请求一律按规则处理。

用好这个模块,主要依赖两个关键参数:

1. 限制每分钟接收10个ICMP数据报文

咱们来看一个最常见的场景:限制ICMP Ping请求的频率,防止被简单的ping flood攻击拖垮。

首先,添加一条规则,在一分钟内最多接受10个ICMP协议的请求报文。

[root@jxl-1 ~]# iptables -t filter -I INPUT -p icmp -m limit --limit 10/minute -j ACCEPT

紧接着,必须加上第二条规则:所有超出上述限制的ICMP报文,全部丢弃。

[root@jxl-1 ~]# iptables -t filter -A INPUT -p icmp -j DROP

最后,用详细列表查看一下规则是否生效。

[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: a vg 10/min burst 5

2 0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0

Iptables防火墙limit模块扩展匹配规则详解

实际测试一下,你会发现前5个Ping包是畅通无阻的。这正是默认的--limit-burst 5在起作用,给了流量一个初始的“弹性空间”。

从第6个包开始,限制才真正生效。因为每分钟只允许10个,换算下来就是每6秒放行一个包。所以你会看到,第6个包之后,响应开始有规律地间隔出现。

所以,这条规则更直观的理解是:起初放行5个包(快速通过),之后每分钟稳定放行10个包。

Iptables防火墙limit模块扩展匹配规则详解

2. 允许10个数据报文快速通过,然后限制每分钟接收1个ICMP数据报文

这个场景是对上一个例子的灵活调整。比如,你希望服务启动初期能快速响应一些探测请求,但之后要进入严格的低速监控模式。

实现思路完全一样,核心就是手动调整--limit-burst这个初始突发值。

1. 添加规则,允许突发10个包,但后续速率限制为每分钟仅1个。

[root@jxl-1 ~]# iptables -t filter -I INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT

2. 同样,追加丢弃所有其他ICMP报文的规则。

[root@jxl-1 ~]# iptables -t filter -A INPUT -p icmp -j DROP

效果如图所示:最开始连续发送的10个包全部成功接收,展现了“突发额度”的效用。在此之后,每分钟就只能收到一个回应包了,限制非常严格。

Iptables防火墙limit模块扩展匹配规则详解

3. 限速案例:限制网络传输的带宽不超过500k/s

更有趣的应用来了:用limit模块实现网络带宽限速。这听起来有点跨界,但原理是相通的——控制单位时间内通过的数据包数量

关键在于一个简单的计算:带宽速率最终由每秒传输的数据包数量决定。一个标准的以太网数据包(MTU 1500)大小大约在1500字节左右。

限速公式可以这样推导:(目标带宽速率 * 1000) / 单个数据包大小 ≈ 每秒允许的数据包数量。

以限制500k/s为例: (500 * 1000) / 1500 ≈ 333个包/秒。为了保险起见,我们可以先设为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以内,可以根据实测结果微调--limit的数值。比如下图中,将包数量设为120个/秒后,实际下载速率就稳定在了327k/s左右,达到了限速目的。

Iptables防火墙limit模块扩展匹配规则详解

通过对limit模块这几个经典场景的拆解,可以看到,它不仅是防攻击的利器,更能实现精细化的流量管控。理解其“平均速率”与“突发额度”的双参数协作机制,是灵活运用它的关键所在。

本文转载于:https://www.jb51.net/article/258196.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。