Kam*_*rut 14 server iptables firewall networking
如何阻止大约 140 万个 IP 地址的列表?我已经尝试使用 iptables PREROUTING 来做到这一点,例如:
-A PREROUTING -d IP_HERE/32 -j DROP
但是有了这么多记录,当我进行速度测试时,我的带宽会像疯了一样下降。
在 iptables 中没有被阻止的 IP:
1 Gb/秒
在 iptables 中使用被阻止的 IP:
峰值为 3 Mb/s。
我想像这里一样使用 XDP_DROP(最后一步):https ://blog.cloudflare.com/how-to-drop-10-million-packets/
但我不知道如何使用它。:/ (我真的很不擅长编程)
这种方法有替代方法吗?
Cyr*_*bil 32
你应该看看ipset。
来自官网:
Ipset 可能是您[...] 存储多个 IP 地址或端口号并与 iptables 的集合进行匹配的合适工具。
[...] (Ipset) 可以以某种方式存储 IP 地址、网络、(TCP/UDP) 端口号、MAC 地址、接口名称或它们的组合,以确保在将条目与集合匹配时闪电般的速度。
要使用它,您需要创建一个ipset,添加IPs并创建一个iptables规则以匹配ipset:
ipset create blacklist hash:ip hashsize 1400000
ipset add blacklist <IP-ADDRESS>
iptables -I INPUT -m set --match-set blacklist src -j DROP
Run Code Online (Sandbox Code Playgroud)
可以在此处找到实际使用示例。请注意,它使用ipset restore而不是IP在循环中遍历每个,因为它更快。
如果您的列表IPs有重叠,您可能希望对其进行预处理以IP ranges在可能的情况下转换为。这是执行此操作的工具的示例。它不会让您获得更好的表现,ipset但会减少您的列表大小。
附带说明一下,就性能而言,它非常快速且可扩展而不会受到惩罚。正如Cloudflare的博客所提到的,有更快的低级方法;但它要复杂得多,而且每秒只增加几个字节,除非您具有云提供商的规模和雄心,否则不值得付出努力。
Cri*_*gie 20
帧挑战 - 较短的列表、授权地址或阻止地址是什么?
与其拒绝 140 万个,不如简单地允许大约十几个您想要允许的 IP,并默认拒绝一切。
mat*_*igo 15
如果 IP 地址在明确定义的范围内运行,那么您可以ufw像这样使用来阻止流量:
sudo ufw deny from 192.0.0.0/8 to any
Run Code Online (Sandbox Code Playgroud)
上面的示例阻止了所有来自192.0.0.1to 的流量192.255.255.254,计算结果为 16,777,214 个地址,这对网络吞吐量的影响为零(显着)。
只要您的 IP 列表以可行的方式生成 IP 范围,这可能对您有用。
Raf*_*ffa 13
您可以通过树结构化规则来最小化查找以提高速度。例如,您可以根据 IP 的第一部分进行操作,/8例如:
iptables -N rule8_192_0_0_0
iptables -N rule8_172_0_0_0
iptables -N rule8_10_0_0_0
iptables -A INPUT -s 192.0.0.0/8 -j rule8_192_0_0_0
iptables -A INPUT -s 172.0.0.0/8 -j rule8_172_0_0_0
iptables -A INPUT -s 10.0.0.0/8 -j rule8_10_0_0_0
iptables -A rule8_192_0_0_0 -s 192.168.2.3 -j DROP
iptables -A rule8_172_0_0_0 -s 172.16.2.3 -j DROP
iptables -A rule8_10_0_0_0 -s 10.10.2.3 -j DROP
Run Code Online (Sandbox Code Playgroud)
还有另一个改进可以直接解决您的 3 Mb/s 问题:
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
这允许已建立的连接遍历尽可能少的 iptables 规则,尽管使用 ipset 来提高 IP 地址查找速度对于更快地建立新连接仍然是必要的。
无论您有多少其他规则,这都是作为第一个规则部署的好选择。
| 归档时间: |
|
| 查看次数: |
5533 次 |
| 最近记录: |