如果输入 iptables - hashlimit 规则(OpenWRT),强制门户(nodogsplash)将停止工作

如果输入 iptables - hashlimit 规则(OpenWRT),强制门户(nodogsplash)将停止工作

我已经使用 openwrt 设置了一个热点设备。它安装了 nodogsplash 以实现热点功能,并安装了 iptables 以限制带宽。当我测试速度限制脚本时,热点因测试目的而被禁用,因此我当时没有注意到冲突。问题是我的 iptables 脚本和 nodogsplash 都使用 iptables 上的“MARK”进行流量控制,我认为冲突从这里开始。因为这两个程序都使用指定的字符串(如“0xa”)标记流量。有什么方法可以解决这个问题,或者有其他方法可以控制每个 ip 的带宽吗?

iptables -t nat -A prerouting_rule -m mac --mac-source 1c:91:48:xx:xx:xx -j MARK --set-mark 0x0A -m comment --comment "PC"
iptables -t nat -A prerouting_rule -m mark --mark 0xA -j CONNMARK --save-mark
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables  -A forwarding_rule -m mark --mark 0xA -m conntrack --ctstate ESTABLISHED,RELATED -m hashlimit --hashlimit-name "Limit" --hashlimit-above 24kb/s -j DROP

这些是我的脚本中创建 iptables 规则的部分。

nodogsplsh 创建的一些 iptable 规则如下

DROP       all  --  anywhere             anywhere             mark match 0x10000/0x30000
ndsAUT     all  --  anywhere             anywhere             mark match 0x30000/0x30000
ACCEPT     all  --  anywhere             anywhere             mark match 0x20000/0x30000

我尝试提供足够的信息但又不太多:) 我希望这就足够了。

答案1

如果有人需要解决方案;

iptables -A forwarding_rule -d 192.168.1.10 -m hashlimit --hashlimit-name "speedLimit" --hashlimit-above 100kb/s -j DROP

选项:

  • -d:客户端的ip地址

  • –哈希限制名称:一些名称,如评论

  • –哈希限制以上:速度限制值(单位:kb/s)

相关内容