Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Praćenje potrošnje prometa po IP adresi

[es] :: Linux mreže :: Praćenje potrošnje prometa po IP adresi

[ Pregleda: 3590 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

--ja--

Član broj: 4387
Poruke: 232
*.duo.carnet.hr.

ICQ: 132872590


+3 Profil

icon Praćenje potrošnje prometa po IP adresi07.12.2010. u 01:48 - pre 162 meseci
Pozdrav svima!

Zanima me slijedeće - na koji način je moguće na linuxu ostvariti praćenje potrošnje (Internet) prometa po ip adresi (lokalnoj) u danom vremenskom intervalu.

Konkretno da mu zadam naredbu:
zapocni_pracenje_za_ip x.x.x.x

i nakon nekog vremena:

zaustavi_pracenje_za_ip x.x.x.x

da mi vrati upload i download u npr. bajtovima u danom intervalu (između 2 komande) za navedenu ip adresu. Izlaz bi idealno trebao ispljunuti na stdout.

Mislim da sam nekad davno vidio neko rješenje s iptables i LOG targetom, ali sad više ni sam ne znam.

Što jednostavnije to bolje, izračun ne mora biti apsolutno točan (100MB+/- ne igra ulogu).
Treba mi, ako ništa drugo, barem hint što da tražim... Vidio sam cacti i slična rješenja, ali čini mi se da je to overkill, a i ne znam kako da u njemu pratim promet po ip-u u točno danom intervalu. Ne trebaju mi nikakvi grafovi, statistike i ostale kerefeke...

Skriptu/program bih pokretao na kanti na kojoj se radi NAT.

Hvala unaprijed!

http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
 
Odgovor na temu

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.verat.net.



+1365 Profil

icon Re: Praćenje potrošnje prometa po IP adresi07.12.2010. u 09:16 - pre 162 meseci
Jel ti vnstat može poslužiti?
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

--ja--

Član broj: 4387
Poruke: 232
*.duo.carnet.hr.

ICQ: 132872590


+3 Profil

icon Re: Praćenje potrošnje prometa po IP adresi07.12.2010. u 11:15 - pre 161 meseci
Koliko sam vidio na njihovoj stranici, oni nude statistike po mrežnom interfejsu, a meni trebaju statistike po lokalnoj ip adresi na određenom mrežnom interfejsu.

Čini mi se da sam našao nešto što bi mi bolje odgovaralo: IP Flow Meter

Mogao bih semplirati njegove rezultate u nekim intervalima, recimo 5 min i to bi bilo zadovoljavajuće. Problem je što se ne razvija već 8 godina, pa je pitanje koliko je to pametno upotrijebiti...
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
 
Odgovor na temu

igor.vitorac

Član broj: 144858
Poruke: 483



+13 Profil

icon Re: Praćenje potrošnje prometa po IP adresi09.12.2010. u 08:54 - pre 161 meseci
Citat:
--ja--: Koliko sam vidio na njihovoj stranici, oni nude statistike po mrežnom interfejsu, a meni trebaju statistike po lokalnoj ip adresi na određenom mrežnom interfejsu.

Čini mi se da sam našao nešto što bi mi bolje odgovaralo: IP Flow Meter

Mogao bih semplirati njegove rezultate u nekim intervalima, recimo 5 min i to bi bilo zadovoljavajuće. Problem je što se ne razvija već 8 godina, pa je pitanje koliko je to pametno upotrijebiti...


Radio sam svojevremeno sa ipfm (i na linux-u i OpenBSD-u) i to radi posao. Jedino je problem sto moras dosta toga manuelno da uradis preko skripte.

Ja sam konkretno radio pracenje svih IP adresa u subnet-u sa intervalom od 5 min, pri cemu sam u isto vreme radio mapiranje IP adrese u MAC adresu (dinamicki) da bi znao tacno koji host je u pitanju (po MAC adresi). To sam radio da znam u slucaju da neko menja rucno IP adresu. Zatim sam sve to ubacivao u bazu, a imao sam poseban script za pravljenje report-a koji cita iz baze i salje mail sa daily report-om.
Problem sa tim resenjem je bio taj sto sam odrzavao MAC address table rucno u posebnom file-u. Planirao sam da napravim odrzavanje MAC address table-a u bazi ... mada nikad nisam stigao to da odradim.

Ako te zanima potrazicu taj script sto sam pravio.

 
Odgovor na temu

--ja--

Član broj: 4387
Poruke: 232
*.duo.carnet.hr.

ICQ: 132872590


+3 Profil

icon Re: Praćenje potrošnje prometa po IP adresi10.12.2010. u 12:02 - pre 161 meseci
Vezu ip-osoba već imam (treba još neke dijelove iskodirati ali više-manje je gotovo). Neću podatke ubacivati na NAT mašini u bazu, već će se u nekim vremenskim intervalima raditi upit na php aplikaciju na udaljenom računalu i tako slati podatke (vjerojatno najjednostavnije putem GET requesta), a php aplikacija će raditi izračun prometa (php aplikacija ima način da sazna koji ip kome pripada u danom trenutku).

Zanimao bi me eventualno skript koji vadi podatke iz ipfm-a, da ne izmišljam toplu vodu ako već ima odrađeno...

Hvala!
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
 
Odgovor na temu

igor.vitorac

Član broj: 144858
Poruke: 483



+13 Profil

icon Re: Praćenje potrošnje prometa po IP adresi10.12.2010. u 13:03 - pre 161 meseci
Citat:
--ja--: Vezu ip-osoba već imam (treba još neke dijelove iskodirati ali više-manje je gotovo). Neću podatke ubacivati na NAT mašini u bazu, već će se u nekim vremenskim intervalima raditi upit na php aplikaciju na udaljenom računalu i tako slati podatke (vjerojatno najjednostavnije putem GET requesta), a php aplikacija će raditi izračun prometa (php aplikacija ima način da sazna koji ip kome pripada u danom trenutku).

Zanimao bi me eventualno skript koji vadi podatke iz ipfm-a, da ne izmišljam toplu vodu ako već ima odrađeno...

Hvala!


Mapiranje IP-osoba nije mozda uvek tacno, jer user-i mogu da menjaju rucno IP adresu, ali kao pocetno resenje moze da posluzi.
Ne moras ubaciti podatke u bazu na NAT mashini, nego upisujes u bazu na drugom (DB) serveru.

Uspeo sam da pronadjem jedan script za OpenBSD, ali princip je isti i za linux:

Ove recimo config od ipfm-a:
Code:
DEVICE rl0
LOG 192.168.0.0/255.255.255.0
FILENAME "/var/log/ipfm/ipfm.%Y.%m.%d.%H.%M"
DUMP EVERY 30 minutes
CLEAR ALWAYS
SORT TOTAL 
NOPROMISC
NORESOLVE




Ovo je code koji parsira ipfm file-ove i formatira sql da bi se ubacio u bazu:
Code:

#!/usr/local/bin/bash

getMAC () {
    # na bazi IP vracam MAC 
    tmp=`arp -na|fgrep "$1)"`
    echo $tmp | awk '{ print $4 }'
}

cd /home/some_user/backup/
/usr/local/bin/nmap -sP 192.168.0.0/24 1>/dev/null

for INPUT_FILE in `ls /var/log/ipfm/`
do
    if [ -e "out.tmp" ]
    then
        rm out.tmp
    fi
    
    if [ -e "nohead.tmp" ]
    then
        rm nohead.tmp
    fi
    
    echo $INPUT_FILE
    YEAR=`echo $INPUT_FILE | cut -d "." -f2`
    MONTH=`echo $INPUT_FILE | cut -d "." -f3`
    DAY=`echo $INPUT_FILE | cut -d "." -f4`
    HOUR=`echo $INPUT_FILE | cut -d "." -f5`
    MIN=`echo $INPUT_FILE | cut -d "." -f6`

    LIST=`cat "/var/log/ipfm/$INPUT_FILE" | fgrep 192.168.0 | awk '{ print $1}'` 
    cat "/var/log/ipfm/$INPUT_FILE" | fgrep 192.168.0 > nohead.tmp

    echo "use ipfm;" >> out.tmp

    for IP in $LIST
    do
        echo -n "INSERT INTO ip_counters (ip,mac,name,year,month,day,hour,min,download,upload,total) VALUES " >> out.tmp
        echo -n "('$IP', " >> out.tmp
        MAC=`getMAC $IP`
        if [ -z $MAC ]
        then
            MAC="noMAC"
        fi
                if [ $IP = "192.168.0.2" ]
                then
                        MAC="00:00:B4:91:E2:DA"
                fi
                if [ $IP = "192.168.0.255" ]
                then
                        MAC="FF:FF:FF:FF:FF:FF"
                fi
                if [ $IP = "192.168.0.0" ]
                then
                        MAC="00:00:00:00:00:00"
                fi
        echo -n "'$MAC', " >>  out.tmp 
        NAME=`cat macs.txt | grep -i "$MAC" | cut -d " " -f2`
        if [ -z $NAME ]
        then
            NAME="NO_NAME"
        fi
        echo -n "'$NAME', " >> out.tmp
        echo -n "$YEAR, " >> out.tmp
        echo -n "$MONTH, " >> out.tmp
        echo -n "$DAY, " >> out.tmp     
        echo -n "$HOUR, " >> out.tmp
        echo -n "$MIN, " >> out.tmp
        IN_BYTES=`cat nohead.tmp | fgrep $IP\  | awk '{ print $2}'`
        echo -n "$IN_BYTES, " >> out.tmp
        OUT_BYTES=`cat nohead.tmp | fgrep $IP\  | awk '{ print $3}'`
        echo -n "$OUT_BYTES, " >> out.tmp
        TOTAL_BYTES=`cat nohead.tmp | fgrep $IP\  | awk '{ print $4}'`
        echo "$TOTAL_BYTES);" >> out.tmp
    done
    
    mv out.tmp data.$YEAR.$MONTH.$DAY.$HOUR.$MIN.sql
    rm nohead.tmp
    
    /usr/local/bin/mysql -u db_username --password=password -h db_server.example.com < data.$YEAR.$MONTH.$DAY.$HOUR.$MIN.sql > data.$YEAR.$MONTH.$DAY.$HOUR.$MIN.result

rm "/var/log/ipfm/$INPUT_FILE"
rm data.$YEAR.$MONTH.$DAY.$HOUR.$MIN.sql
rm data.$YEAR.$MONTH.$DAY.$HOUR.$MIN.result

done





Ovo je kod za scheduled mail report:
Code:

#!/usr/local/bin/bash
##################################################################
#
#
##################################################################


MAILTO='[email protected]'

DAY=`date "+%d"`
MONTH=`date "+%m"`
YEAR=`date "+%Y"`

cd /home/some_user/backup

if [ -e "sqlquery.txt" ]
then
    rm sqlquery.txt
fi 

echo "use ipfm;" > sqlquery.txt
echo "select name, sum(download)/1048576 as Down_MB, sum(upload)/1048576 as Up_MB  from ip_counters where day=${DAY} and month=${MONTH} and year=${YEAR} group by mac order by Down_MB desc;" >> sqlquery.txt

/usr/local/bin/mysql -u db_username --password=password -h db_server.example.com < sqlquery.txt > report

rm sqlquery.txt

sendmail -t << EOM
To: ${MAILTO}
From: [email protected]
Subject: Daily report `date "+%d.%m.%Y."`

`cat report`

EOM


 
Odgovor na temu

--ja--

Član broj: 4387
Poruke: 232
*.duo.carnet.hr.

ICQ: 132872590


+3 Profil

icon Re: Praćenje potrošnje prometa po IP adresi10.12.2010. u 13:29 - pre 161 meseci
Citat:
igor.vitorac: Mapiranje IP-osoba nije mozda uvek tacno, jer user-i mogu da menjaju rucno IP adresu, ali kao pocetno resenje moze da posluzi.


Točnije je od mapiranja po MAC-u, jer su pojedinci klonirali MAC adrese i time radili dodatne probleme. Evo zašto je točnije:

User po defaultu ne može proći kroz firewall na NAT mašini. Kad se user ulogira na lokalni jabber server, na NAT mašini se propušta ip adresa od usera. Čim se user diskonekta sa lokalnog jabber servera, ip adresa se na NAT mašini opet blokira, a potrošeni promet vraća na php aplikaciju koja to sprema u bazu, preračunava itd.... Tako da se ručnom promjenom ip adrese ništa ne dobiva.

Nije bitna apsolutna točnost podataka jer se oni ne koriste za naplatu, naime riječ je o comunity mreži pa je samo potrebno pratiti približnu potrošnju po korisniku (jer pojedinci zloupotrebljavaju dane im resurse i onda su svi nezadovoljni) i u ovisnosti od toga nekima eventualno uskratiti pristup za tekući dan/mjesec ako pređu neku razumnu kvotu.

Ovaj config fajl i parsiranje izlaza će mi dosta skratiti vrijeme da ovo sredim, hvala na tome.

Još samo da dočekam ove praznike pa da imam malo slobodnog vremena za implementirati sve ovo...
http://www.dropbox.com/referrals/NTQ0MTI2NDc5
https://www.agronomija.info/
Failure is not an option. It comes bundled with your Microsoft product.
 
Odgovor na temu

igor.vitorac

Član broj: 144858
Poruke: 483



+13 Profil

icon Re: Praćenje potrošnje prometa po IP adresi10.12.2010. u 13:36 - pre 161 meseci
Citat:
--ja--: Točnije je od mapiranja po MAC-u, jer su pojedinci klonirali MAC adrese i time radili dodatne probleme.


U tvom slucaju jeste tacnije jer se verovatno radi o wireless mrezi i specificnoj infrastrukturi. Kod Ethernet-a je druga prica.
Posto nemas mapiranja MAC-User, onda ce ti biti lakse sve ovo da implementiras.
 
Odgovor na temu

[es] :: Linux mreže :: Praćenje potrošnje prometa po IP adresi

[ Pregleda: 3590 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.