![应用 iptables 规则但排除 IP 列表](https://linux22.com/image/744917/%E5%BA%94%E7%94%A8%20iptables%20%E8%A7%84%E5%88%99%E4%BD%86%E6%8E%92%E9%99%A4%20IP%20%E5%88%97%E8%A1%A8.png)
我将应用以下 iptables 规则来暂时禁止每分钟超过 30 次的每个 IP 请求某个端口。
iptables -A INPUT -p tcp --dport 25461 -m hashlimit --hashlimit-name temporary --hashlimit-mode srcip --hashlimit-above 30/minute -j DROP
我如何才能将 IP 地址列表列入白名单,以便能够从我的服务器发送和接收数据而不会出现上述规则带来的任何问题?我需要一条规则,让某些 IP 可以做任何它们要做的事情,直到现在我还没有设置任何过滤器。谢谢。
答案1
简单地将规则放在 INPUT 链中该规则的上方(之前),明确允许来自相关 IP 地址的所有流量到该端口。iptables 规则的工作方式类似于瀑布,如果瀑布中较高的 ALLOW 规则匹配,它会将该数据包发送到目的地,并且永远不会进入瀑布中较低的规则。(当然,如果匹配的是 DENY 或 REJECT,数据包将被反弹,永远不会进入瀑布中较低的任何 ALLOW 规则)。
例如:
iptables -I 输入 -p tcp --dport 25461 --source 192.0.2.0 -j 允许
将在瀑布链的顶部放置一条规则,该规则会自动将来自源 192.0.2.0 的任何发往端口 25461 的数据包立即发送到端口 25461,而不会将其归结为执行速率限制的规则。