![限制发往 Linux 机器的 UDP 数据包的速率](https://linux22.com/image/633580/%E9%99%90%E5%88%B6%E5%8F%91%E5%BE%80%20Linux%20%E6%9C%BA%E5%99%A8%E7%9A%84%20UDP%20%E6%95%B0%E6%8D%AE%E5%8C%85%E7%9A%84%E9%80%9F%E7%8E%87.png)
有没有办法限制发往我的 Linux 机器的 UDP 数据包的速率?我感觉到有些发往我的机器的 UDP 数据包被丢弃了。
Linux 中是否有任何默认的 udp 速率限制配置?我在 中看到了 icmp 速率限制配置 /proc/sys/net/ipv4/icmp_ratelimit
。
答案1
是的,使用 iptables 模块是可以的recent
。对于这里:
iptables -I INPUT -p udp -i eth0 -m state --state NEW -m recent \
--update --seconds 60 --hitcount 10 -j DROP
或者,如果你想限制 ICMP 数据包,你可以这样做
iptables -I INPUT -p icmp -i eth0 -m state --state NEW -m recent \
--update --seconds 60 --hitcount 10 -j DROP
数据包限制器(即recent
iptables 模块)与需要对哪种类型的数据包进行处理的条件无关。
您可以指定时间间隔和数据包阈值。此示例将在 1 分钟内仅启用 10 个 udp 数据包。
您可能希望限制的不是一般的 UDP 通信,而是目标端口。例如,如果您想阻止不太难的 DNS DDOS 攻击,这会很有用。在这种情况下,您还应该使用标志给出端口号--dport 53
。
您提到的文件/proc
是关于 icmp 数据包的。它与 udp 无关。
祝你好运!