Estou tentando obter estatísticas de rede para grupos de processos. Até onde eu sei, a contabilidade complexa de redes no Linux normalmente é feita usando a infraestrutura de contabilidade do netfilter/iptables.
Como eu gostaria de ter herança para esses grupos, cgroups
seria uma boa opção.
Minha melhor ideia seria deixar o iptables corresponder ao classid
que pode ser definido usando o net_cls
-controller.
Mas parece que o iptables só podedefiniresse valor através de --set--class
.
Então: Existe uma boa maneira de obter contabilidade e registro de rede (complexa e flexível) para grupos de processos no Linux?
Responder1
Uma pergunta muito legal! Obrigado. Antigo, mas vai ajudar as pessoas aqui
A. Você pode usar cgroups com tc. Nunca ouvi falar sobre isso, mas depois de pesquisar no Google encontrei o seguinte:
net_cls — este subsistema marca pacotes de rede com um identificador de classe (classid) que permite ao controlador de tráfego Linux (tc) identificar pacotes originados de uma tarefa cgroup específica.
De acordo com isso você deve trabalhar com tc e obter estatísticas de lá (muitas ferramentas disponíveis).
http://patchwork.ozlabs.org/patch/194809/
Contate Alexey, talvez ele possa te ajudar com isso :)
B. Você pode usar SELinux e iptables para estatísticas, mas limitar a largura de banda com cgroups - eu gosto mais dessa abordagem - tc parece feio para mim em alguns casos e não é ideal para integração.
SELinux possui ganchos para rede e pode atribuir dados adicionais como rótulo a cada pacote de acordo com rótulos de processo, podendo até mesmo transmitir para outro sistema e filtrar/registrar/obter estatísticas, fazer tudo o que puder com iptables usando SECMARK.
http://selinuxproject.org/page/NB_Networking
Se você ainda não está familiarizado com o SELinux, recomendo que você leia os guias RedHat/Fedora "Security-Enhanced Linux" e "SELinux FAQ", além disso, há explicações e guias muito bons, postagens de blog de Daniel J. Walsh (Dan Walsh) - pesquise no Google.
Além disso, um ponto de partida muito bom (e melhor) para iniciantes é acompanhar vídeos no YouTube. Tenho certeza que você conseguirá fazer isso em cerca de três horas para entender tudo o que precisa:
- SELinux para todos - Paul Wayper
- SELinux para administradores de sistemas - Paul Wayper
SELINUX É FÁCIL, NÃO TENHA MEDO
Responder2
Com os kernels mais recentes, você pode comparar cgroups diretamente no iptables, veja:http://lwn.net/Articles/569678/
Ele foi incluído no kernel da linha principal.