使用tc进行流量配额?

使用tc进行流量配额?

是否可以根据流量实施流量配额(绝对限制,而不是速率限制)网络分类器cgroup

我看到有iptables netfilter“配额”扩展,这似乎基本上做了我想做的事情:在给定的接口和方向上,允许流量达到给定的配额,然后删除 - 或执行其他操作。但是,由于我只想将此配额应用于给定的 cgroup,因此我必须使用net_cls模块来识别流量。

我知道我可以使用设置速率限制Linux 流量控制(tc)基于classid。如果我有合适的分类器,我也可以减少流量。我似乎找不到 tc 的绝对计数器,或者 iptables 基于 classid 进行过滤的方法。

答案1

您可以使用基于 classid 的 iptables 进行过滤。中有一个例子net_cls模块您提供的链接。

echo 0x100001 >  /sys/fs/cgroup/net_cls/0/net_cls.classid
iptables -A OUTPUT -m cgroup ! --cgroup 0x100001 -j DROP

当然,您可以更改示例,使 iptables 跳转到具有更复杂规则的另一个链。或许:

echo 0x100001 >  /sys/fs/cgroup/net_cls/0/net_cls.classid
iptables -N QUOTA
iptables -A QUOTA -m quota --quota 52428800 -j ACCEPT
iptables -A QUOTA -j DROP
iptables -A OUTPUT -m cgroup --cgroup 0x100001 -j QUOTA

相关内容