IPTABLES 预路由,批量添加

IPTABLES 预路由,批量添加

也许有人知道如何使用命令批量添加 1,400,000 个 ip 到 iptables:

iptables -I PREROUTING -t raw -d $ipban -j DROP

我现在正在使用:

while read ipban
do
iptables -I PREROUTING -t raw -d $ipban -j DROP
done < ips.txt

但添加已经花了 20 多个小时了。

我的 vps 非常小,只有 1gb ram 和 1vcpu,所以速度不是那么快。

我尝试执行 iptables 恢复,但出现了一些错误,因此我正在寻找最快的解决方案。

答案1

下面的脚本应该可以满足您的需要。请注意,脚本中读取 IP 的文件的名称是 ips.txt。您可以将其替换为您自己的文件名。

#!/bin/bash

ip_addresses=$(cat ips.txt)

echo -n "" > iptables_configuration
echo "*raw" >> iptables_configuration
echo ":PREROUTING ACCEPT [0:0]" >> iptables_configuration
echo ":OUTPUT ACCEPT [0:0]" >> iptables_configuration

for i in $ip_addresses
do
echo -A PREROUTING -d $i/32 -j DROP >> iptables_configuration
done
echo "COMMIT" >> iptables_configuration

echo "*filter" >> iptables_configuration
echo ":INPUT ACCEPT [0:0]" >> iptables_configuration
echo ":FORWARD ACCEPT [0:0]" >> iptables_configuration
echo ":OUTPUT ACCEPT [0:0]" >> iptables_configuration
echo "-A INPUT -p tcp -m tcp --dport 25565 --tcp-option 8 --tcp-flags FIN,SYN,RST,ACK SYN -j REJECT --reject-with icmp-port-unreachable" >> iptables_configuration
echo "COMMIT" >> iptables_configuration

cat iptables_configuration | iptables-restore
rm iptables_configuration

iptables -t raw -A PREROUTING -p tcp --dport 25565 -j ACCEPT
iptables -t raw -A PREROUTING -p tcp --dport 25565 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t raw -A PREROUTING -p tcp --dport 25565 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 150 --connlimit-mask 32 --connlimit-saddr -j DROP
iptables -t raw -A PREROUTING -p tcp --dport 25565 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 10 --connlimit-mask 32 --connlimit-saddr -j DROP

您所要做的就是在 ips.txt 文件所在的位置执行脚本。其余的事情将由脚本处理。

相关内容