我有 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 地址,它可以帮助您解决您的情况