Usando tc para quotas de tráfego?

4

É possível implementar cotas de tráfego (limites absolutos, não limites de taxa) com base no classificador de rede ?

Eu vejo que há a extensão iptables netfilter 'quota' , que parece essencialmente o que estou tentando fazer: em uma determinada interface e direção, PERMITIR o tráfego até uma determinada cota, depois DROP - ou fazer outra coisa. No entanto, como eu só quero aplicar essa cota a um determinado cgroup, eu teria que usar o módulo net_cls para identificar o tráfego.

Eu sei que posso definir um limite de taxa usando o controle de tráfego do Linux (tc) com base no classid. Eu também poderia deixar cair o tráfego, se eu tiver um classificador apropriado. O que eu não consigo encontrar é um contador absoluto para o tc, ou uma maneira de o iptables filtrar com base no classid.

    
por relet 02.11.2015 / 15:22

1 resposta

1

Você pode filtrar com iptables com base no classid. Há um exemplo no link módulo net_cls que você forneceu.

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

Você pode, claro, mudar o exemplo, 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
    
por 10.11.2015 / 21:06