# [NET] Monitorare il traffico di un ip

## federico

Come posso monotirare il traffico per ogni ip/interfaccia di un mio server?

Avrei bisogno di monotirare il traffico giornaliero, sapere quanti mega sono passati per ogni ip...

Attualmente ho un mrtg ma mrtg lavora solo sulla eth0 (e non prende le eth virtuali a quanti pare) e non mi offre la precisione di traffico che vado cercando.

Idee?

Fede

----------

## xlyz

un banale ifconfig ?

----------

## BlueRaven

Sto facendo la stessa, identica cosa per il provider per cui lavoro.

Attualmente sto usando una combo abbastanza terrificante: Shorewall impostato per fare accounting, uno scriptino in Perl per leggere i dati di accounting (lo trovi qui), MRTG per analizzare i dati e produrre i grafici.

Funzionicchia, ma non mi soddisfa per varie ragioni.

Primo, produce statistiche per tipologia di traffico ma non per IP.

Secondo, è specifico per Shorewall... vorrei qualcosa di più universale.

Terzo e non ultimo, il tutto gira obbligatoriamente sul firewall - l'unica macchina che ha i dati - ed è un obbrobrio dal punto di vista sicurezza.

Esiste un sistema della Cisco che si chiama Netflow - documentazione - che potrebbe fare al caso.

Ecco alcuni tool utili: fprobe, flow-tools (ci sono già in Portage), FlowScan e infine CUFlow, da combinare con gli RRDTool (anch'essi in Portage).

C'è anche un HOWTO qui.

In tutta sincerità, non si parla da nessuna parte di traffico per IP, ma mi sono già guardato un po' come funziona il tutto e ho visto che nei flow catturati da fprobe gli IP ci sono, quindi non dovrebbe essere impossibile tirare fuori i dati che interessano.

Di fprobe ho già mandato l'ebuild (bug #55533) e vorrei cimentarmi anche con FlowScan e CUFlow, se hai voglia di darmi una mano sei ovviamente il benvenuto.  :Smile: 

----------

## xchris

hai dato un occhio a ntop?

non ricordo se faceva pero' le statistiche giornaliere,mensili,...

ciao

----------

## federico

 *xlyz wrote:*   

> un banale ifconfig ?

 

Ifconfig non mi ha mai dato il traffico totale preciso (Ha un massimale) e non posso resettarlo ogni giorno  :Smile: 

----------

## federico

 *BlueRaven wrote:*   

> Sto facendo la stessa, identica cosa per il provider per cui lavoro.

 

Ecco, devo farlo anche per la stessa tipologia di cliente !

Stasera do uno sguardo a tutto quello che mi hai proposto

----------

## federico

 *xchris wrote:*   

> hai dato un occhio a ntop?
> 
> non ricordo se faceva pero' le statistiche giornaliere,mensili,...
> 
> ciao

 

Come tipologia di software potrebbe andare ma non è adatto a quello che piu' precisamente devo fare, dovrei essere in grado di controllare il traffico per IP o magari (che potrebbe anche essere meglio) per utente, sapere quanto traffico ha fatto ogni giorno ed eventualmente agire su questi dati

----------

## xchris

per utente lo puoi fare ma ovviamente se risiede sul tuo pc.

supponendo un impiego da firewall/router la vedo dura.

ciao

----------

## federico

Mi spiegheresti come funziona il metodo "per utente" se questi risiedono sulla macchina stessa? Penso di farlo venire utile...

----------

## xchris

non l'ho provato ma avevo visto questo nella doc di netfilter

 *netfilter wrote:*   

> 
> 
> owner
> 
>     Questo modulo tenta di confrontare varie caratteristiche del creatore dei pacchetti generati localmente. E' valido solo nella catena OUTPUT, anche nel caso in cui alcuni pacchetti (come ad esempio risposte a ICMP ping) non abbiamo un proprietario, e che quindi non siano confrontabili.
> ...

 

in modo semplice puoi scrivere delle regole per singolo utente.

per il tuo caso magari devi loggare un po' e parsare

ciao

P.S.:se ricordo bene se scarichi dynfw trovi degli script gia' pronti per regolamentare il traffico in base al UID

----------

## FonderiaDigitale

 *BlueRaven wrote:*   

> Sto facendo la stessa, identica cosa per il provider per cui lavoro.
> 
> Attualmente sto usando una combo abbastanza terrificante: Shorewall impostato per fare accounting, uno scriptino in Perl per leggere i dati di accounting (lo trovi qui), MRTG per analizzare i dati e produrre i grafici.
> 
> Funzionicchia, ma non mi soddisfa per varie ragioni.
> ...

 

ho visto che hai postato anche sulla ml di sikurezza su questo.

ecco come risolverei io la questione al posto tuo:

- openvpn verso un host di amministrazione (la tua workstation presumibilmente) con certificati X509

- il firewall impostato come transparent bridge senza ip, shorewall fa accounting e filtraggio a livello ip e link-layer (dalla 2.0a supporta bridging). ovviamente la catena forward deve passare tutto e da li fare accounting, se credi.

- sempre sul firewall: net-snmpd che ascolta su una terza interfaccia collegata, ove possibile, in cross al tuo pc e di certo non a uno switch dove e' attaccato tutto il resto

- syslogging verso un host remoto, sul fw

- cacti sul pc di amministrazione, un programma php di billing (ce ne stanno milioni in giro) che legga dalle catene di shorewall, con un ssh che ascolta sull'ip di openvpn

ci sono anche altre soluzioni piu pesanti, ma non mi andava di entrare nel complesso. si puo comunque vedere, in caso.

----------

## federico

Si ma possibile che su unix, dove queste cose dovrebbero essere il pane quotidiano non ci sia un applicativo che fa il lavoro?

----------

## FonderiaDigitale

ma che dici, vai su freshmeat e cerca ip accounting.. ne hai quanti ne vuoi

----------

## xchris

 *FonderiaDigitale wrote:*   

> 
> 
> ecco come risolverei io la questione al posto tuo:
> 
> [....]
> ...

 

una soluzione proprio plug 'n play  :Very Happy:    (o plug 'n pray?)

scherzi a parte..

sicurezza e complessita' sono dei parametri che vanno calibrati ad hoc.

tutto dipende da quanto si e' disposti a spendere in tempo (e non) e se ne valga la pena per la specifica applicazione.

nel caso di federico mi sembra che sia gia' sovradimensionata la struttura.(se ho ben capito cosa ne vuole fare...ipv6?)

ciao

----------

## federico

Mha...

Il post di prima parlava di svariati programmi...

----------

## FonderiaDigitale

 *xchris wrote:*   

> 
> 
> sicurezza e complessita' sono dei parametri che vanno calibrati ad hoc.
> 
> tutto dipende da quanto si e' disposti a spendere in tempo (e non) e se ne valga la pena per la specifica applicazione.
> ...

 

ma guarda che io infatti ho quotato blueraven, mica federico!

----------

## FonderiaDigitale

sbaglio o noto un certo nervosismo in questo thread?

cmq, visto che qui pare che pesi anche fare una semplice ricerca, ecco il link diretto:

http://freshmeat.net/search/?q=ip+accounting&section=projects&Go.x=0&Go.y=0

29 projects found

----------

## federico

Dunque, non si tratta di nervosismo ma e' solo che mi sto impantanando in un bicchier d'acqua. Per precisare non a a che fare tunnel broker di Sideralis tutto questo ma e' per un lavoro che dovrei fare, solo che dovrei trovare una soluzione ottimale e possibilmente per me poco dispendiosa di tempo, se ci metto una settimana a sistemarlo sono fregato  :Smile: 

Ho cercato su freshmeat ip accounting ma rimango un po' bloccato dal fatto che non so cosa sia difatti questo ip accounting, ho girato tute le varie pagine ma non mi pare che sia quello che fa al caso mio, almeno da quello che capisci di questo accounting...

----------

## FonderiaDigitale

ok, allora illustra nello specifico cosa devi implementare..

----------

## federico

Ho una macchina con una interfaccia di rete fisica, eth0.

Su questa macchina ho registrati una quarantina di ip tramite eth0:1 fino a eth0:XX e ad ogni interfaccia  e' assegnato un ip differente.

Tra tutte le interfacce ve ne sono un paio in ipv6 che potremmo per il momento escludere dal problema.

Ci sono dei servizi che girano su questa macchina e degli account utente, gli utenti per alcuni servizi hanno un ip dedicato mentre altri servizi che usano tutti girano su un unico ip.

Il personaggio che possiede tutta la baracca vorrebbe che la banda possa venir monitorata, conoscere quanto traffico ha effettuato ogni IP (cosa che con mrtg non riesco a fare perche' mi pare di capire che lavora solo sui device fisici).

Io pensavo eventualmente che una soluzione che potrebbe andarci bene e' conoscere il traffico per IP o meglio ancora per utente.

I dati che otteniamo dovrebbero essere visualizzabili in qualche maniera dal proprietario della macchina e potrei trovare poi io un modo di fare un traffic shaping delle interfacce che generano traffico eccessivo.

Scusate se sono stato prolisso ma spendere qualche parola in + non fa mai  male  :Smile: 

----------

## FonderiaDigitale

la soluzione piu semplice e' monitorare l'ipv6 di link layer di ogni singola interfaccia, o associare 1 ipv4 a ogni user.

se non puoi, puoi usare 

```

iptables -m owner
```

sulle tue catene

ma ti posso assicurare per esperienza che non e' preciso per niente.

per leggere i dati di iptables, puoi usare ipac-ng o questa interfaccia web

----------

## federico

Domani procedero' con questa prova, vediamo un po' che ne salta fuori...  :Smile: 

----------

## xchris

 *FonderiaDigitale wrote:*   

> sbaglio o noto un certo nervosismo in questo thread?
> 
> 

 

non mi pare a dire il vero... uhmmm

Effettivamente il tuo era un quote a BlueRaven,sorry   :Confused: 

ciao

----------

## BlueRaven

 *FonderiaDigitale wrote:*   

> ho visto che hai postato anche sulla ml di sikurezza su questo.

 

Sì, e ho visto la tua risposta, ti ringrazio... purtroppo Koba mi ha cassato il post perché, giustamente, avevo ripetuto una cosa già detta prima.  :Wink: 

 *Quote:*   

> ecco come risolverei io la questione al posto tuo:
> 
> - openvpn verso un host di amministrazione (la tua workstation presumibilmente) con certificati X509

 

Sinceramente, di questa cosa mi sfugge l'utilità... puoi illuminarmi?

 *Quote:*   

> - il firewall impostato come transparent bridge senza ip, shorewall fa accounting e filtraggio a livello ip e link-layer (dalla 2.0a supporta bridging). ovviamente la catena forward deve passare tutto e da li fare accounting, se credi.

 

Sì, questo Shorewall lo fa senza problemi anche senza usare il transparent bridging, ma mi sembra che non risolva il problema della locazione dei dati.

Voglio dire, i dati di accounting risiedono pur sempre sul firewall e sarei costretto ad elaborarli lì, cosa che, se possibile, vorrei evitare.

 *Quote:*   

> - sempre sul firewall: net-snmpd che ascolta su una terza interfaccia collegata, ove possibile, in cross al tuo pc e di certo non a uno switch dove e' attaccato tutto il resto

 

Ho dato un'occhiata alla documentazione di SNMP, ma non mi pare che si parli di una MIB che permetta di leggere dati distinti per IP o per interfaccia virtuale, tantomeno distinti per tipologia di traffico.

Sarei lieto di sapere che mi sbaglio, ma in coscienza credo di essermi documentato abbastanza bene.

 *Quote:*   

> - syslogging verso un host remoto, sul fw

 

Vabbè, questo è un di più, non serve per il mio scopo.  :Smile: 

Fermo restando che, in un'architettura ben progettata, è una cosa che va fatta senza meno.

 *Quote:*   

> - cacti sul pc di amministrazione, un programma php di billing (ce ne stanno milioni in giro) che legga dalle catene di shorewall, con un ssh che ascolta sull'ip di openvpn

 

Qui ti ho perso completamente... cacti, a quanto ho visto, genera statistiche molto complete, quindi non capisco a cosa serva un ulteriore programma di billing.

Oltretutto, i dati stanno sul firewall, come li porto sul PC di amministrazione? Il problema principale per cui ho scartato la soluzione che descrivevo è questo.

SSH, poi, non capisco proprio a cosa serva.

Abbi pazienza, forse sono duro io, ma non ci ho capito molto... mi sembra un sistema inutilmente complicato.

----------

## FonderiaDigitale

 *Quote:*   

>  *Quote:*   ecco come risolverei io la questione al posto tuo:
> 
> - openvpn verso un host di amministrazione (la tua workstation presumibilmente) con certificati X509 
> 
> Sinceramente, di questa cosa mi sfugge l'utilità... puoi illuminarmi?
> ...

 

per amministrare quella macchina in remoto (patch, upgrade, logwatching, e tutto quanto) e farlo senza essere sniffato in mezzo.

Con questo sistema sei sicuro che puoi amministrare solo te la macchina (escludendo tramite fw il resto non autenticato).

 *Quote:*   

> 
> 
>  *Quote:*   - il firewall impostato come transparent bridge senza ip, shorewall fa accounting e filtraggio a livello ip e link-layer (dalla 2.0a supporta bridging). ovviamente la catena forward deve passare tutto e da li fare accounting, se credi. 
> 
> Voglio dire, i dati di accounting risiedono pur sempre sul firewall e sarei costretto ad elaborarli lì, cosa che, se possibile, vorrei evitare.
> ...

 

elaborare li? non credo. il firewall conta il traffico, e poi esporta i dati verso l'host di amministrazione, dove poi li elabori come credi. le catene del firewall servono solo a distinguere il tipo di traffico e incanalarlo nella catena giusta in base alle tue policy.

 *Quote:*   

> - sempre sul firewall: net-snmpd che ascolta su una terza interfaccia collegata, ove possibile, in cross al tuo pc e di certo non a uno switch dove e' attaccato tutto il resto

 

Ho dato un'occhiata alla documentazione di SNMP, ma non mi pare che si parli di una MIB che permetta di leggere dati distinti per IP o per interfaccia virtuale, tantomeno distinti per tipologia di traffico.

Sarei lieto di sapere che mi sbaglio, ma in coscienza credo di essermi documentato abbastanza bene.[/quote]

Infatti mi son spiegato male. ti confermo che smpd non supporta le aliased interfaces, ma puoi distinguere tranquillamente per ip. infatti, per gli snmpd tutti gli ip di ogni interfaccia alias appartiene alla sua interfaccia fisica reale.

 *Quote:*   

> 
> 
>  *Quote:*   - syslogging verso un host remoto, sul fw 
> 
> Vabbè, questo è un di più, non serve per il mio scopo. 
> ...

 

non credo proprio che sia un piu, anche xche vorrai sapere se i tuoi demoni hanno problemi o qualsiasi altra info di un sistema che si occupa di fornire i dati per creare le tariffazioni ai clienti  :Smile: 

 *Quote:*   

> 
> 
>  *Quote:*   - cacti sul pc di amministrazione, un programma php di billing (ce ne stanno milioni in giro) che legga dalle catene di shorewall, con un ssh che ascolta sull'ip di openvpn 
> 
> Qui ti ho perso completamente... cacti, a quanto ho visto, genera statistiche molto complete, quindi non capisco a cosa serva un ulteriore programma di billing.
> ...

 

No. Cacti crea i grafici, non fa neanche accounting di per se, ma ti da una resa grafica del volume di traffico che viene generato.

Di fatto l'accounting viene fatto elaborando le catene, che potresti leggere tramite ssh

Il billing poi, e' proprio cosa estranea a cacti, tantopiu se consideri che per fare il conto di cosa uno spende in base al traffico che fa, ti serve un programma che legga i dati dalle catene e vi applichi le tariffe. si potrebbe fare con ipac, che ti avevo citato nel post precedente

 *Quote:*   

> 
> 
> Oltretutto, i dati stanno sul firewall, come li porto sul PC di amministrazione? Il problema principale per cui ho scartato la soluzione che descrivevo è questo.
> 
> 

 

semplicemente tramite ssh nel tunnel criptato con openvpn: ecco a cosa serve.

ci sono molti modi per farlo: un netcat in ascolto sull'ip della vpn, che quando viene invocato restituisce l'output delle catene e esce. ma e' solo un esempio.

 *Quote:*   

> 
> 
> SSH, poi, non capisco proprio a cosa serva.
> 
> 

 

vedi su

 *Quote:*   

> 
> 
> Abbi pazienza, forse sono duro io, ma non ci ho capito molto... mi sembra un sistema inutilmente complicato.

 

mai detto che tu sia tardo, anzi  :Smile: 

tutte le discussioni costruttive sono piu che interessanti per me.

fammi sapere come evolve

----------

## evan-

Ho lo stesso problema.

Stavo pensando di creare un semplice modulo di iptables che genera statistiche di traffico per ip.

Forse non è la soluzione ottimale per un ISP, ma per una box privata dovrebbe funzionare.

----------

## federico

Io non penso di essere in grado di scrivere moduli per iptables...

----------

## xchris

visto che di python te ne intendi io lancerei in cron uno script python che ti fa le statistiche da ifconfig. (magari ogni ora e ti calcola l'utilizzo per ogni ora,giorno,mese,..)

Sicuramente e' meno completo delle altre soluzioni  ma il suo sporco lavoro lo fa.

ciao

----------

## federico

Il problema e' che ifconfig non e' affidabile...

Non ho mai capito per quale motivo ma perde il conto dei pacchetti...

Trasferisco ad esempio su alcune macchine anche un giga di traffico al giorno (almeno un giga) e dopo 100 giorni che sono accese per dire ifconfig mi fa un totale di 2 giga...

```

server2 root # ifconfig eth0

eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx  

          inet addr:x.xx.xxx.xx  Bcast:x.xx.xxx.255  Mask:255.255.255.0

          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:414101289 errors:0 dropped:0 overruns:0 frame:0

          TX packets:419096462 errors:0 dropped:0 overruns:0 carrier:0

          collisions:5996181 txqueuelen:100 

          RX bytes:2180299228 (2079.2 Mb)  TX bytes:4237307915 (4041.0 Mb)

          Interrupt:12 Base address:0x5000 

server2 root # uptime

 17:36:13 up 162 days, 20:51,  1 user,  load average: 0.06, 0.02, 0.00

server2 root # 

```

Mi pare abbastanza improbabile...

----------

## xchris

e non sono mai andate giu' le interfaccie? Strano!

cmq facendo il parziale ogni ora risolveresti cmq.

ciao

----------

## federico

Come strano...

No che non sono mai andate giu' !

Qui a Sideralis le cose se non funzionano le buttiamo dalla finestra  :Smile: 

Ad ogni modo ognuno di voi puo' fare la prova, trasferite un po' di giga anche via lan e noterete che ifconfig non tiene il conto correttamente...

----------

## xchris

 *federico wrote:*   

> Come strano...
> 
> No che non sono mai andate giu' !
> 
> Qui a Sideralis le cose se non funzionano le buttiamo dalla finestra :.

 

ma LOL

strano che resetti il counter   :Laughing: 

ci faro' caso.

ciao

----------

## BlueRaven

 *FonderiaDigitale wrote:*   

> per amministrare quella macchina in remoto (patch, upgrade, logwatching, e tutto quanto) e farlo senza essere sniffato in mezzo.

 

Per questo basta e avanza un SSH configurato a dovere.  :Wink: 

 *Quote:*   

> Infatti mi son spiegato male. ti confermo che smpd non supporta le aliased interfaces, ma puoi distinguere tranquillamente per ip. infatti, per gli snmpd tutti gli ip di ogni interfaccia alias appartiene alla sua interfaccia fisica reale.

 

Pare a me o quanto sopra è una contraddizione?  :Shocked: 

 *Quote:*   

> non credo proprio che sia un piu, anche xche vorrai sapere se i tuoi demoni hanno problemi o qualsiasi altra info di un sistema che si occupa di fornire i dati per creare le tariffazioni ai clienti 

 

Aspe, forse non ci siamo capiti: io NON devo fare billing, devo semplicemente riuscire a capire quanto traffico passa e di che tipo.

 *Quote:*   

> semplicemente tramite ssh nel tunnel criptato con openvpn: ecco a cosa serve.
> 
> ci sono molti modi per farlo: un netcat in ascolto sull'ip della vpn, che quando viene invocato restituisce l'output delle catene e esce. ma e' solo un esempio.

 

OK, questo adesso è chiaro.  :Smile: 

Mi sembra ancora troppo per quel che devo fare io, comunque gli spunti sono molto interessanti, grazie.

----------

## evan-

Penso di aver trovato una soluzione abbastanza semplice:

Creo una regola di Accounting con iptables:

```

iptables -N Accounting

iptables -A Accounting -s 192.168.1.1 -d 192.168.1.2 -p tcp

iptables -A Accounting -s 192.168.1.1 -d 192.168.1.2 -p udp

iptables -A Accounting -s 192.168.1.1 -d 192.168.1.2 -p icmp

iptables -A OUTPUT -j Accounting

```

Poi con perl parso l'output:

```

#!/usr/bin/perl

use strict;

while (1 != 0) {

    qx (iptables -L -Z Accounting -vxn);

    sleep (5);

    my $tmp = qx (iptables -L -Z Accounting -vxn);

    $tmp =~ /.*(\d{1,6})\s+(\d{1,6}).+tcp.*\s+(\d{1,6})\s+(\d{1,6}).+udp.*\s+(\d{1,6})\s+(\d{1,6}).+icmp/;

    print "\nStatistiche per 5 secondi\nTCP: PKTS: ".$1." - BYTES: ".$2."\n";

    print "UDP: PKTS: ".$3." - BYTES: ".$4."\n";

    print "ICMP: PKTS: ".$5." - BYTES: ".$6."\n";

}

```

In questo modo dovrebbe essere possibile utilizzare i dati in mrtg.

Non so quanto possa esservi utile, ma io in questo modo ho risolto il mio problema 

 :Wink: 

----------

