ip 路由多个条目

ip 路由多个条目

我有一个需要阻止的 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可能很有用。它获取子网列表,并尝试将网络合并为尽可能少的子网,这将减少所需的比较次数。

相关内容