我有一个需要阻止的 60k CIDR 列表,我计划使用以下命令来执行此操作。
ip route add blackhole 1.0.1.0/24
有没有办法可以导入整个列表到我的Ubuntu 18服务器或者有任何地方可以让我手动输入整个列表?
添加 60k 个条目后,服务器是否有可能变慢或不稳定?
答案1
如果每行列出它们,则编写以下脚本很简单:
for ip in $(cat filename.txt)
do
ip route add blackhole $ip
done
正如 hello moto 在评论中所说:为什么不使用iptables
过滤?要做到这一点...
for ip in $(cat filename.txt)
do
iptables -A INPUT -s $ip -j DROP
done
有了 60k 条规则,我会看看ipset,以避免影响性能。如果您有 60k 条规则和 100kpps,那么每秒就会有 60k*100k=60 亿次比较...
Arch 的此文档比的手册页更友好一些ipset
,并且语法也适用于 Ubuntu。
要使用 ipset:
ipset create blocklist
for ip in $(filename.txt)
do
ipset add blocklist $ip
done
iptables -I INPUT -m set --match-set blocklist src -j DROP
此外iprange
可能很有用。它获取子网列表,并尝试将网络合并为尽可能少的子网,这将减少所需的比较次数。