tc 警察通过 iptables 处理数据包?

tc 警察通过 iptables 处理数据包?

我想将任何 IP 的下载速度限制为 800kbit,(这有效)并且我想将标记数据包的下载速度限制为 400kbit。

我没有收到任何错误,但它没有限制标有数字 30 的数据包的下载速度。我已使用 iptables-save -c 确认数据包的标记正确。因此,我认为我的 picker handle 30 的过滤器语法是错误的,即使没有错误。

/sbin/tc qdisc add dev $DEV handle ffff: ingress

/sbin/tc filter add dev $DEV parent ffff: prio 40 protocol ip handle 30 fw police rate 400kbit burst 10k drop flowid :1

#slightly different order of parameters, also doesn't work
/sbin/tc filter add dev $DEV parent ffff: protocol ip prio 40 handle 30 fw police rate 400kbit burst 10k drop flowid :1
#if I set the priority to 50 then I get an error saying "We have an error talking to the kernel"
#kernel is 4.4.50

/sbin/tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 800kbit burst 10k drop flowid :1

类似的 tc 命令(标记数据包的管制速率)如下例所示 $TC filter add dev $INDEV parent ffff: protocol ip prio 50 handle 1 fw police rate 1kbit burst 40 mtu 9k drop flowid :1 http://linuxdocs.org/HOWTOs/Adv-Routing-HOWTO-14.html 同样的例子也出现在这里 https://www.iplocation.net/lartc-ddos

如果我手动为特定 IP 添加另一条规则,其优先级与 catchall 相同或更低,那么我可以将速度限制为 400kbit/s。但我想限制 iptables 标记/损坏的数据包的速度。

答案1

这是一组有效的命令,但问题是标记发生在入口 qdisc 处理之后。

相关内容