使用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

相關內容