如何通过 IP 将某些连接列入白名单,以免被 connlimit 丢弃?

如何通过 IP 将某些连接列入白名单,以免被 connlimit 丢弃?

我在 /etc/ufw/before.rules 中使用这些规则

# Limit to 20 concurrent connections on port 80 per IP
-A ufw-before-input -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP
-A ufw-before-input -p tcp --syn --dport 443 -m connlimit --connlimit-above 20 -j DROP

# Limit to 20 connections on port 80 per 2 seconds per IP
-A ufw-before-input -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
-A ufw-before-input -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 2 --hitcount 20 -j DROP
-A ufw-before-input -p tcp --dport 443 -i eth0 -m state --state NEW -m recent --set
-A ufw-before-input -p tcp --dport 443 -i eth0 -m state --state NEW -m recent --update --seconds 2 --hitcount 20 -j DROP

我想添加一条规则,强制本地系统 ips 完全不受连接或速率限制。例如,我有许多 cron 作业连接到服务器中的服务器。我需要防止这些作业在同时运行太多时失败。

更新解决方案:我想我只需要在 before.rules 中添加更多规则,而不是在 ufw 命令行中添加更多规则,以覆盖特定 IP 的连接限制。我目前还无法回答自己的问题。

我只是在 connlimit 规则之上添加了这些规则:

-A ufw-before-input -p tcp --dport 80 -s 127.0.0.1 -j ACCEPT
-A ufw-before-input -p tcp --dport 443 -s 127.0.0.1 -j ACCEPT

答案1

我找到了另一个使用 iptables 的解决方案。

iptables命令限制连接数:

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP

你可以排除一个IP:

iptables -A INPUT -p tcp --syn --dport 80 -d ! 127.0.0.1 -m connlimit --connlimit-above 20 -j DROP

我希望这对你有帮助。

答案2

首先,您没有提供足够的信息让我们能够给出明确的答复。

其次,这些是 ufw 规则。ufw 是 iptables 的前端,您可以从命令行ufw或图形界面 gufw 管理规则。

直接使用 iptables 会与您的 ufw 规则冲突,因此请使用一种或另一种工具。

您需要发布您的 ufw 规则。一般来说,您将在发布规则之前允许您的本地网络。您如何管理您的 ufw 规则?命令行?gufw?

对于 ufw,类似这样

sudo ufw allow from 192.168.0.0/24

也可以看看:

http://blog.bodhizazen.com/linux/firewall-ubuntu-servers/

https://help.ubuntu.com/community/UFW

对于 iptableshttp://bodhizazen.com/Tutorials/iptables

相关内容