# How-To Contador de tráfego ( IP Accounting ) com o ipag-ng

## To

Visto este assunto ter sido falado tanto aqui como no IRC, tentei dar a volta ao assunto e tentar voltar a por isto a funcionar.

O que descrevo aqui é apenas a minha maneira de fazer as coisas, tal como um grande amigo me disse à uns 7 ou 8 anos:

"A maior parte das vezes, vais pela forma mais estupida de se fazerem as coisas, só me rio é por ficarem a funcionar."

 :Arrow:  Sugestões são bem vindas.

NOTAS:

 :Exclamation:  1.Eu uso o mysql com o ipac-ng o que implicou ter de compilar manualmente o ipac-ng. A instalação por portage permite guardar o tráfego em ficheiros como postgresql.

 :Exclamation:  2.As regras estão feitas para serem usadas para netcabo, isto é:

- Existe uma cadeia de regras do iptables para os IP's da netcabo, que acaba por ser considerado tráfego local, logo no meu total este tráfego não conta.

-Caso queira usar por ex com SAPO ADSL, teriam de mudar essas gamas de IP's para o download nacional e adicinar umas regras numa cadeia chamada por ex trafego sapo adsl com as gamas de IP's desse ISP e retirar essas gamas das minhas regras de download nacional para não ser contado duas vezes.

 :Exclamation:  3. Cuidado com a vossa configuração de rede em função das regras. A vossa configuração pode ser diferente e têm de editar as regras.

 :Exclamation:  4. Cuidado com a vossa configuração de rede em função das regras. A vossa configuração pode ser diferente e têm de editar as regras. ( não é um erro de duplicação, é para terem atenção mesmo )

 :Exclamation:  5. Não sou nenhum expert em ipac-ng, apenas limitei-me a ler os docs, enviar uns emails para a mailing list e testar varias configurações.

 :Arrow:  1º passo:

```
emerge mysql

ou

emerge postgresql
```

A configuração de qualquer um dos gestores de base de dados está para além deste how-to, quem percisar de ajuda procure nos forums ou abra um tópico novo.

 :Very Happy: 

Estes packages são necessários para o funcionamento do ipac-ng e encontram-se na portage, também podem usar a shell do perl ( método indicado em baixo para o modulo do mysql )

```
emerge dev-perl/CGI

emerge dev-perl/DBI

emerge dev-perl/Apache-DBI

```

Percisamos também do modulo do perl para usar o mysql, e como não encontrei isto a portage teve de ser à unha, esta parte é talvés a parte mais complicada para quem não está muito à vontade, em shell façam:

```
perl -e shell -MCPAN
```

Vão ter de configurar manualmente caso nunca o tenham feito, a configuração é simples basta ler e permite usar um mirror portugues para fazer download do modulos.

Na shell do perl façam:

 *Quote:*   

> cpan> install Class::DBI::mysql

 

A parte é vermelho é da shell do perl não é para escrevem  :Wink: 

Poderá tentar instalar outros modulos, mas estejam à vontade e sinal que são necessários para o modulo do mysql. Se tudo correr bem, ele instala todos os modulos mas vai falhar no do mysql, porque tenta fazer o teste e ligar-se ao mysql como guest e falha aí. Em princípio, e em todas as maquinas onde meti esse modulo, esse é o unico problema, logo podem fazer um install force.

```
cpan> force install Class::DBI::mysql
```

 :Arrow:  2º Criar as bases de dados antes de continuar.

Para postgresql é perciso usar o ficheiro ipac-ng.sql, ler o README  :Wink: 

Para mysql, logar no mysql e executar os comandos de sql lá dentro ( pode ser feito de outra forma.. ):

 *Quote:*   

> ipac-ng-1.27 @ gandalf $ > mysql -u root -p
> 
> Enter password: 
> 
> Welcome to the MySQL monitor.  Commands end with ; or \g.
> ...

 

Depois dentro do mysql:

```

create database ipac;

use ipac;

CREATE TABLE ipac_log (

  rule_name varchar(32) NOT NULL default '',

  bytes bigint(20) NOT NULL default '0',

  pkts bigint(20) NOT NULL default '0',

  that_time bigint(20) NOT NULL default '0',

  PRIMARY KEY  (that_time,rule_name)

);

```

Quem tiver o Apache instalado, pode sempre usar o PHP + phpMyAdmin para fazer estas operações. Alias o Apache e o PHP acabam por ser bastante uteis, ver ponto 7.

 :Arrow:  3º Compilar ou emerge do ipac-ng

```
emerge ipac-ng
```

( Mesmo quem quer o mysql e vai ter de compilar pode fazer o emerge, fica logo com a package na /usr/portage/distfiles e tb fica com os extras de ter o script de start/stop na /etc/init.d/ , ver passo 5. )

Para quem como eu quer usar o mysql:

Download do ipac-ng http://sourceforge.net/project/showfiles.php?group_id=28513

Download da Mysql Backend para Ipac-ng:

http://gpl.pws.com.au/ipac-mysql/

```
cd /usr/src

tar -jxvf /usr/portage/distfiles/ipac-ng-1.27pl1.tar.bz2

cd ipac-ng-1.27/storage

tar -zxvf /path-para-a-backend-mysql/ipac-mysql-1.27.tbz2

```

Ok, o ipac-ng está pronto para compilar. Poderá haver discução sobre isto, podendo as pessoas optarem por usar as mesmas opções que o gentoo usa por default e usar as mesmas dirs, eu pessoalmente adoro a /usr/local.

```

cd /usr/src/ipac-ng-1.27/

./configure --prefix=/usr/local/ipac-ng-1.27 --enable-default-storage=mysql

```

 :Arrow:  4º Configuração

No caso de se ter feito um emerge os ficheiros de configuração ficam logo na /etc/ipac-ng, se compilaram é perciso os meter lá:

```

mkdir /etc/ipac-ng

cp /usr/src/ipac-ng-1.27/contrib/sample_configs/ipac.conf /etc/ipac-ng

cp /usr/src/ipac-ng-1.27/contrib/sample_configs/rules.conf.iptables /etc/ipac-ng/rules.conf

```

O meu ipac.conf, localizado em /etc/ipac-ng/ipac.conf:

 *Quote:*   

> classic mode = yes
> 
> access agent = files
> 
> account agent = iptables
> ...

 

Agora o brinde, o rules.conf  :Wink: 

Localizado em /etc/ipac-ng/rules.conf:

NOTA: No meu caso, a minha gateway tem o etho interno e eth1 externo.

o IP 10.10.10.1 é o IP do device interno.

10.10.10.2 é a minha maquina na intranet

10.10.10.x vão ser as restantes máquinas que estou a contar o tráfego.

Pelas razões obvias apenas pôs aqui as regras para 2 maquinas, se quiserem contar para mais máquinas basta adiconar mais IP's.

 *Quote:*   

> 
> 
> incoming all to my net|ipac~fi||all||10.10.10.0/24
> 
> incoming all to my net|ipac~i||all|10.10.10.1|10.10.10.0/24
> ...

 

Ok está tudo configurado.

 :Arrow:  5º Funcionamento:

Para arrancar é perciso executar o comando:

```
/usr/local/ipac-ng-1.27/sbin/fetchipac -S
```

Se por acaso der Segementation fault é porque é um erro nas rules.conf, verifiquem a vossa configuração.

Se não der erro é porque em principio está tudo bem, e podem verificar:

 *Quote:*   

> 
> 
> iptables --list
> 
> .....
> ...

 

Vão aparecer as regras do ipac-ng.

Para contar o tráfego

```
/usr/local/ipac-ng-1.27/sbin/fetchipac
```

convém ter isto automáticamente, por ex na /etc/crontab adicionem esta linha:

```
*/5 * * * *     root    /usr/local/ipac-ng-1.27/sbin/fetchipac
```

Podem usar também o script que está no /etc/init.d/ipac-ng e alterar as path do fechtipac:

 *Quote:*   

> 
> 
> ...
> 
> start() {
> ...

 

Adicionar o serviço para correr quando a máquina arranca:

```
rc-update add ipac-ng default
```

NOTA:Quando fizerem restart às vossas regras de iptables as regras do ipac-ng perdem-se.

Por isso façam um fechtipac antes para gravar os resultados e um fetchipac -S depois do restart das regras, ex:

```

/usr/local/ipac-ng-1.27/sbin/fetchipac

/etc/init.d/firewall restart

/usr/local/ipac-ng-1.27/sbin/fetchipac -S

ou no meu caso :wink: 

/etc/init.d/ipac-ng stop

/etc/init.d/to-firewall restart

/etc/init.d/ipac-ng start

```

Acho que dá para perceber como funciona.

 :Arrow:  6º Ver resultados:

Para ver os resultados e já agora criar o png's tipo mrtg com o tráfego, criem uma directoria onde fiquem as imagens e correr o comando:

```

/usr/local/ipac-ng-1.27/sbin/ipacsum -t "today" -r --png /var/www/localhost/htdocs/trafego/data --png-average-curve 15 --png-height 150 --png-width 400 --png-normalize 8 --fixed-quantity 'M' 

```

No meu caso a dir é /var/www/localhost/htdocs/trafego/data para ver as imagens por browser uma vez que tenho o Apache a correr.

 :Idea:  Ex sem gerar png's, apenas para testar por exemplo:

```
root @ gandalf $ > /usr/local/ipac-ng-1.27/sbin/ipacsum -t yesterday --fixed-quantity M

IP accounting summary

Host: gandalf.lhamus.org / Time created: 2004/03/02 14:21:16 WET

Data from 2004/03/01 00:00:00 WET to 2004/03/01 23:59:59 WET

  Download Nacional Nuno                          :              0M

  Download Nacional Sa                            :              0M

  Download Nacional To                            :              2M

  Download Total Nuno                             :              0M

  Download Total Sa                               :              0M

  Download Total To                               :              2M

  Total Download                                  :            296M

  Total Download Nacional                         :            111M

  Total Upload                                    :            124M

  Trafego Netcabo                                 :            185M

  Upload Nuno                                     :              0M

  Upload Sa                                       :              0M

  Upload To                                       :              1M

  incoming all to my net                          :           4808M

  incoming inet to ipac host                      :            296M

  outgoing all from my net                        :           4804M
```

 :Arrow:  7º Extras:D

Eu tenho o Apache a correr e logo dei a volta para poder consultar o tráfego de uma forma mais engraçada. Através do phpIpacStats http://bene.enemy.org/phpipacstats

Á cerca de 1 ano, quando tive isto a correr, eu alterei o script, coisa que ainda não tive tempo para fazer, porque para quem isto interessa na realidade queremos contar o tráfego de download total - tráfego nacional que nos vai dar o total de tráfego internacional, alias a razão por ter feito isto.

----------

## To

Este HowTo está já um pouco desactualizado. Quem quiser continuar a utiliza-lo como está tem de continuar a usar a versão 1.2.27 ou .28 do ipac-ng porque acima dela a configuração mudou. Ainda não mudei para essas novas versões porque o suporte de MySQL ainda não foi incluído. Quando assim acontecer eu irei tentar fazer um update.

Já agora na data em que eu fiz o post original estes eram os ranges nacionais, entretanto já existe gamas novas, o mais simples é sacarem um ipfilter.dat do blowfish ou do koizo ( programas p2p, mas acho que vcs sabem  :Wink:  ) e fazerem update em relação ao que aqui está.

Tó

----------

## malloc

5 Gigas é munta pornalhada pra um homem só  :Wink:   :Laughing: 

----------

## Mythos

Bom longe vão os tempos que eu sacava programas até mais não.

Mas nice sempre é bom ter um contador de tráfego.

Thanx  :Smile: 

A Net*abo agora é imilimitada da 1 às 7 da manhã correcto ?

----------

## fernandotcl

 *Mythos wrote:*   

> A Net*abo agora é imilimitada da 1 às 7 da manhã correcto ?

 

Estou vendo que, com essa medida, o fuso-horário de alguns portugueses vai se encontrar com o dos brasileiros.   :Very Happy: 

----------

## To

5 Giga muito?  :Laughing: 

Aqui vai o trafego deste mês, e ainda vamos no dia 21:

```
trafego @ gandalf $ > /usr/local/ipac-ng-1.27/sbin/ipacsum -t "this month" --fixed-quantity M

IP accounting summary

Host: gandalf.lhamus.org / Time created: 2004/07/21 22:58:19 WEST

Data from 2004/07/01 00:00:00 WEST to 2004/07/21 22:58:19 WEST

  Download Nacional Nuno                          :             43M

  Download Nacional Sa                            :              0M

  Download Nacional To                            :            751M

  Download Total Nuno                             :            187M

  Download Total Sa                               :              0M

  Download Total To                               :            987M

  Total Download                                  :          29794M

  Total Download Nacional                         :              0M

  Total Upload                                    :           7244M

  Trafego Netcabo                                 :          29695M

  Upload Nuno                                     :             71M

  Upload Sa                                       :              0M

  Upload To                                       :           1185M

  incoming all to my net                          :          31929M

  incoming inet to ipac host                      :          29794M

  outgoing all from my net                        :           1384M
```

Tó

----------

## klap

 *To wrote:*   

> 5 Giga muito? 
> 
> Aqui vai o trafego deste mês, e ainda vamos no dia 21:
> 
> ```
> ...

 

o.O

----------

## Kobal

Era pra min ta com esse tanto, mais o amule, é muito demorado.   :Confused: 

----------

## To

Já agora isto está a funcionar desde o início de Março e após ter lido as respostas fiquei curioso e resolvi ver o totais deste ano, ou melhor os totais desde Março o que quer dizer que estes totais são de 5 meses.

```
trafego @ gandalf $ > /usr/local/ipac-ng-1.27/sbin/ipacsum -t "this year" --fixed-quantity M

IP accounting summary

Host: gandalf.lhamus.org / Time created: 2004/07/22 12:20:04 WEST

Data from 2003/12/31 23:00:00 WEST to 2004/07/22 12:20:04 WEST

  Download Nacional Nuno                          :            219M

  Download Nacional Sa                            :              0M

  Download Nacional To                            :           5843M

  Download Total Nuno                             :            747M

  Download Total Sa                               :              0M

  Download Total To                               :           7091M

  Total Download                                  :         176207M

  Total Download Nacional                         :            111M

  Total Upload                                    :          62791M

  Trafego Netcabo                                 :         175500M

  Upload Nuno                                     :            183M

  Upload Sa                                       :              0M

  Upload To                                       :           6213M

  incoming all to my net                          :         725986M

  incoming inet to ipac host                      :         176207M

  outgoing all from my net                        :         559913M

trafego @ gandalf $ > /usr/local/ipac-ng-1.27/sbin/ipacsum -t "this year" --fixed-quantity G

IP accounting summary

Host: gandalf.lhamus.org / Time created: 2004/07/22 12:20:39 WEST

Data from 2003/12/31 23:00:00 WEST to 2004/07/22 12:20:39 WEST

  Download Nacional Nuno                          :              0G

  Download Nacional Sa                            :              0G

  Download Nacional To                            :              6G

  Download Total Nuno                             :              1G

  Download Total Sa                               :              0G

  Download Total To                               :              7G

  Total Download                                  :            176G

  Total Download Nacional                         :              0G

  Total Upload                                    :             63G

  Trafego Netcabo                                 :            176G

  Upload Nuno                                     :              0G

  Upload Sa                                       :              0G

  Upload To                                       :              6G

  incoming all to my net                          :            726G

  incoming inet to ipac host                      :            176G

  outgoing all from my net                        :            560G

trafego @ gandalf $ > 
```

Incrivél... desde já aviso que não tenho sempre o amule ligado ( longe disso ) o que quer dizer que quem usa p2p gasta mesmo muita largura... incriivél mesmo...

Tó

----------

## presidente

root@tux-on-box john # /usr/bin/mysqladmin -u root -h tux-on-box password blabla   

/usr/bin/mysqladmin: connect to server at 'tux-on-box' failed

error: 'Access denied for user: 'root@localhost' (Using password: NO)'

root@tux-on-box john # mysql -u root -p

Enter password: 

ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)

alguma sugestão? help please  :Smile: 

já tou a correr o mysql atraves do '/etc/init.d/mysql start'

Edit: Problema resolvido.   :Smile: 

```
rm -rf /var/lib/mysql/* 

mysql_install_db 

/usr/bin/mysqladmin -u root password BLABLA   
```

----------

## Mythos

io ... 

1º 

```
mysql_install_db
```

2º e é o que falta , 

```
/etc/init.d/mysql start
```

3º 

```
mysqladmin -u root password BLABLA
```

----------

## Animal-X®

Caramba, isso que é dica !!!

Parabéns To...

----------

## To

Este post está muito outdated... Agradeço que não me enviem mais mensagens sobre ele.

Eu possivelmente até ao final deste mês, meio do próximo vou fazer update pq vou mudar de ISP.

Tó

----------

