大量 IP 阻塞会影响服务器性能吗?

Bri*_*riu 4 performance ip iptables centos udp

我有一个游戏服务器,有人用机器人向它发送垃圾邮件。SpamBot 客户端使用 UDP 连接与我的服务器握手。它通过代理列表来做到这一点。基本上,Spambot 客户端向我的服务器发送大量 UDP 数据包,并使用机器人向其发送垃圾邮件。

现在我有 6 大代理列表,我知道发送垃圾邮件的人使用它们。我可以编写一个 shell 脚本来阻止每个列表中的每个 IP。每个 IP 都在一个新行上,因此使用 for 循环很容易做到这一点。

问题是我担心服务器的性能。如果我要阻止 15k 个 IP 地址,这会影响我服务器的性能吗?

目前,我运行 CentOS 7。你能告诉我 IP Tables 是否是好的方法,或者我应该尝试哪些其他替代方案?也请写下命令。我只是希望我的服务器停止响应这些 IP 地址,不与它们建立任何连接。

Tho*_*mas 10

对于如此大量的 IP,您应该使用ipsets 模块。ipset 创建 iptables 可以对其做出反应的数据集,它可以轻松处理 10s 中的 1000s 条目

确保您启用了EPEL 存储库,然后通过以下方式安装 ipset:

yum install ipset
Run Code Online (Sandbox Code Playgroud)

一个例子:

ipset -N blockedip iphash
Run Code Online (Sandbox Code Playgroud)

创建一个名为“blockedip”的集合,格式为“iphash”(有不同的格式,这个仅适用于 IP)。

使用 ipset -A 您可以将数据(在本例中为 IP)添加到数据集:

ipset -A blockedip 192.168.1.1
ipset -A blockedip 192.168.1.2
Run Code Online (Sandbox Code Playgroud)

等等...

或者批量创建它而不必ipset为每个 IP 地址运行一次调用,假设您big-file.list是一个 IPv4 地址列表,每行一个:

ipset -N blockedip iphash
sed 's/^/add blockedip /' < big-file.list | ipsec restore
Run Code Online (Sandbox Code Playgroud)

使用以下 iptables 命令,您可以告诉内核丢弃来自此集中任何来源的所有数据包:

iptables -A INPUT -m set --set blockedip src -j DROP
Run Code Online (Sandbox Code Playgroud)