我制作了一个非常简单的 bash 脚本(开始时回声,运行命令,最后回声)向 iptables 添加大约 7300 条规则,阻止了中国和俄罗斯的大部分地区,但是它通过添加大约 400 条规则在每次后续尝试给出以下错误之前向该链添加规则:
iptables: Unknown error 18446744073709551615
Run Code Online (Sandbox Code Playgroud)
之后我什至尝试手动添加规则,但它不会让我添加它们(它给出了相同的错误)。
添加每个规则的命令如下所示:
/sbin/iptables -A sshguard -s x.x.x.0/x -j DROP
Run Code Online (Sandbox Code Playgroud)
sshguard
是我为与sshguard守护程序一起使用而创建的链,我想在那里添加规则,这样我就不会弄乱INPUT
链。我提供的 ip 范围不应归咎于此,因为我提供了有效的范围进行测试,但它们遇到了相同的错误。刷新规则链并添加单独的规则链是可行的,但同样,不是在大约 400 个条目之后。
我事先做了一些谷歌搜索,但其他有这个问题的人似乎没有和我一样的原因。
iptables 的每条链是否有某种规则限制?另外,这是阻止这些范围的正确方法吗(错误除外)?
# iptables -V
iptables v1.3.5
# cat /etc/issue
CentOS release 5.8 (Final)
# uname -a
Linux domain.com 2.6.18-028stab101.1 #1 SMP Sun Jun 24 19:50:48 MSD 2012 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
编辑:澄清一下,bash 脚本单独运行每个 iptables 命令,而不是遍历文件或 IP 列表。
此外,我阻止这些范围的目的是预防性的——我试图限制在我的一些网站上抓取、抓取或尝试创建垃圾邮件帐户的机器人数量。我已经在使用sshguard来阻止我的服务器上的蛮力尝试,但这显然对其他机器人没有帮助。