É possível implementar cotas de tráfego (limites absolutos, não limites de taxa) com base naclassificador de rede cgroup?
Eu vejo que há oExtensão 'cota' do iptables netfilter, que parece fazer essencialmente o que estou tentando fazer: em uma determinada interface e direção, PERMITIR o tráfego até uma determinada cota e, em seguida, DROP - ou fazer outra coisa. Porém, como eu só quero aplicar essa cota para um determinado cgroup, eu teria que usar o comandomódulo net_clspara identificar o tráfego.
Eu sei que posso definir um limite de taxa usandoControle de tráfego Linux (tc)baseado no clássico. Eu também poderia diminuir o tráfego, se tivesse um classificador apropriado. O que não consigo encontrar é um contador absoluto para tc ou uma maneira de o iptables filtrar com base no classid.
Responder1
Você pode filtrar com iptables baseado em classid. Há um exemplo nomódulo net_clslink que você forneceu.
echo 0x100001 > /sys/fs/cgroup/net_cls/0/net_cls.classid
iptables -A OUTPUT -m cgroup ! --cgroup 0x100001 -j DROP
É claro que você pode alterar o exemplo para fazer o iptables pular para outra cadeia com regras mais complexas. Talvez:
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