通过 Iptables 规则限制传输速率

通过 Iptables 规则限制传输速率

我有 D-Link 路由器 DSL-2730U,支持 busybox 操作系统和 iptables 版本 1.4.0

我使用以下命令成功阻止主机连接到互联网

按 IP 地址阻止

iptables -I  FORWARD -d 192.168.1.6 -j DROP

或者通过 mac 源

iptables -I FORWARD -m mac --mac-source bc:20:a4:ff:79:80 -j DROP

现在我遇到的唯一问题是尝试使用 iptables 将传输速率(上传和下载)限制为仅通过 MAC 地址提供 30/kbps

我试图让 iptables 规则像

iptables -I FORWARD -m mac --mac-source bc:20:a4:ff:79:80 -m state --state RELATED,ESTABLISHED -m limit --limit 100/second --limit-burst 30 -j ACCEPT

但没有成功

笔记 :该路由器无法修改、删除或添加任何文件。我无法在路由器内运行 bash 或脚本文件,不幸的是,此 iptables 版本也不支持 iptables connlimit 模块

答案1

你可以通过 iptables 限制速度,就像这样。

iptables -I FORWARD -d 192.168.1.6 -j DROP
iptables -I FORWARD -d 192.168.1.6 -m limit --limit 100/sec -m state --state ESTABLISHED -j ACCEPT

但不是很方便,因为“限制”限制的是数据包,而不是每秒的字节数。如果我们假设 1 个数据包 = 1500 字节,则 100 个数据包/秒 = 150 KB/秒。但某些数据包较小的协议运行速度会较慢。这也可能导致突然断开连接。

但是,如果您必须限制路由器中的流量,则没有太多选择,通常 iptables 是路由器上唯一执行此操作的实用程序。

请注意,“限制”和“删除”规则的顺序应该正确。第一条规则限制并允许流量,第二条规则阻止超过限制的流量。

答案2

有一个名为 DDos-Deflate 的项目可以阻止超出限制的 IP 地址,它可以帮助您解决您的情况

https://github.com/jgmdev/ddos-deflate

相关内容