Matheus, Eu uso o modelo que o Diego disse e funciona legal... Pra economizar regras eu não utilizei o count propriamente dito, peguei o tráfego direto das regras do pipe do IP do usuário.
Fiz algumas alterações e ficou assim: Você precisará de 2 arquivos, um pra ser o .conf do mrtg e o outro que será um script que esse .conf vai chamar. Exemplo das regras do ipfw do usuário com o IP 192.168.1.185 sendo 64K Upload e 128K Download: ipfw add 11185 pipe 64 ip from 192.168.1.185 to any in via vr1 ipfw add 11185 pipe 192 ip from any to 192.168.1.185 out via vr1 Essa regra após um "ipfw show 11185" gera a saída para os scripts trabalharem, a terceira coluna são os bytes trafegados, veja... # ipfw show 11185 11185 60 5994 pipe 64 ip from 192.168.1.185 to any in via vr1 11185 137 47824 pipe 192 ip from any to 192.168.1.185 out via vr1 Aqui está o arquivo .conf que deve ser chamado pelo mrtg no cron... #BOF #GLOBAL OPTIONS WorkDir: /usr/local/www/data/mrtg Language: brazilian WriteExpires: YES Refresh: 600 Interval: 5 Options[_]: growright, bits XSize[_]: 300 YSize[_]: 100 #TOTAL COUNTER Target[IP185]: `/usr/local/script/ipfw-ip185.sh` Title[IP185]: Trafego do IP 192.168.1.185 PageTop[IP185]: Trafego do IP 192.168.1.185 #EOF Aqui está o script que pega os bytes da regra do ipfw do IP em questão... # cat /usr/local/script/ipfw-ip185.sh #!/bin/sh out=`/sbin/ipfw show 11185 | grep in | /usr/bin/awk '{print $3}'` in=`/sbin/ipfw show 11185 | grep out | /usr/bin/awk '{print $3}'` echo $in echo $out echo 0 echo -n 0 #EOF []s EVANDRO ZAMPIERI E-COMP Provedor Internet Afiliado à Rede Global Info Rua Santos Dumont, 521 Birigüi - SP - 16200-095 FoneFax (18) 3644-6000 ----- Original Message ----- From: "Diego Linke" <[EMAIL PROTECTED]> To: ""Lista_Brasileira_de_Discussão_sobre_FreeBSD_(FUG-BR)"" <freebsd@fug.com.br> Sent: Tuesday, July 18, 2006 11:31 AM Subject: Re: [FUG-BR] modulo do kernel - exemplo de pffil_hooks Nenhum de nos, > > estou tentando fazer um sistema para ver trafego nat ( contar bytes de > e/s de cada cliente ) para mandar via snmp para cacti/mrtg e estou > tendo problemas ( nao sou eximio programador C ) em tratar a estrutura > **mbuf que recebo ( quase resolvida, via mtod virando struct ip ), > probemas em acessar essa struct ip e por final com problemas em > mostrar estes dados. > Você não precisa fazer um sistema para isso o FreeBSD já faz isso :-) Crie regras de Count no IPFW e depois com um patch no isc-snmpd (se não me engano já está no ports este patch) você consegue pegar tráfego por regras do IPFW via snmp. Estas regras de count, apenas contariam o que está passando sem fazer nenhum espécie de match (allow, deny, divert...), neste caso elas deverão estar antes da regra divert. Exemplo: ipfw add 100 count ip from any to IP via INTERFACE ipfw add 101 count ip from IP to any via INTERFACE E depois monitorar via SNMP as regras 100 e 101. Agora a imaginação pode ir longe pois com count você pode fazer estatística do que for necessário. Espero ter ajudado! Abraços -- Diego Linke Public Key: http://www.gamk.com.br/gamk.asc ------------------------- Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd ------------------------- Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd