Eu costumo fazer isso com regras de contabilidade no iptables. Eu crio uma regra de auditoria personalizada
iptables -N GKT-AUDIT
Em seguida, envio todo o tráfego que chega, neste caso, a cadeia OUTPUT
, através dessa regra antes de qualquer outra coisa
iptables -I OUTPUT 1 -j GKT-AUDIT
Eu então introduzo regras sem metas na GKT-AUDIT
chain
iptables -A GKT-AUDIT -s 5.5.5.1 -d 7.7.7.2
iptables -A GKT-AUDIT -s 5.5.5.3 -d 7.7.7.4
e assim por diante. Como essas regras não têm destinos, os pacotes correspondentes não terminam, mas continuam na cadeia GKT-AUDIT
, depois acabam no final e retornam à cadeia OUTPUT
, portanto, as regras não afetam o fluxo de dados. Mas os pacotes fazem incrementar as contagens de pacotes das regras correspondentes em seu caminho, para que eu possa dividir e dividir meu tráfego de qualquer maneira que eu quiser de uma base estatística. Eu normalmente os coleciono com um plug-in munin e tenho munição deles, mas isso é um refinamento que pode ou não ser adequado para você. / p>
O bom de usar o iptables é que ele pode dividir o tráfego de muitas maneiras diferentes, para que eu possa ser muito preciso sobre qual tráfego qualquer regra específica corresponde: se eu quiser contar apenas pacotes de um determinado endereço, até um certo outro endereço, mas apenas em um determinado intervalo de portas de origem, e somente se fizer parte de uma conexão que tenha transferido mais de 10 MB, eu posso fazer isso.