Freesco, NND, CDN, EOS
http://forum.freesco.pl/

Zliczanie transferu serwera z internetu
http://forum.freesco.pl/viewtopic.php?f=22&t=12107
Strona 1 z 1

Autor:  tasior666 [ sobota, 15 kwietnia 2006, 15:21 ]
Tytuł:  Zliczanie transferu serwera z internetu

Witam wszystkich! Nie miałem jeszcze okazji zabierać głosu na tym forum, gdyż wszystkie potrzebne mi informacje udawało się znaleźć w postach innych, jednak z tą jedną rzeczą jest problem.
Zainstalowałem sobie niceshapera i statystyki Zciecha opisane na Wiki i wszystko cacy działa. Jednak w mojej sieci na routerze/serwerze NND chodzi sobie MLDonkey i bardzo bym chciał zliczać także ilość danych ściągniętych przez serwer - mam Neostradę i muszę pilnować limitów :/ Tak więc proszę o pomoc w tej kwestii, gdyż nie za bardzo wiem, jak mam się do tego zabrać. Mam też zainstalowane ipfm, tam ewentualnie też by się przydała taka możliwość (wystarczy mi jeden z tych programów, albo stat albo ipfm, i chyba wolę ipfm).
Z góry dziękuję za wszelką pomoc i pozdrawiam!

Maciek

Autor:  MGM [ sobota, 15 kwietnia 2006, 23:40 ]
Tytuł:  Re: Zliczanie transferu serwera z internetu

tasior666 pisze:
Witam wszystkich! Nie miałem jeszcze okazji zabierać głosu na tym forum, gdyż wszystkie potrzebne mi informacje udawało się znaleźć w postach innych (...ciach...)


skoro wiesz jak sie korzysta z wyszukiwarki to po co to pytanie ? :D przeciez wszystko jest wyjasnione dokladnie w innych tematach... nawet juz wiesz z czego chcesz korzystac to teraz juz tylko forum.freesco.pl/search.php i instalacja...

ehhh.... ;/
pzdr

Autor:  tasior666 [ sobota, 15 kwietnia 2006, 23:58 ]
Tytuł: 

Wiem jak korzystać z wyszukiwarki i skorzystałem wiele razy - jak już pisałem, nie jest dla mnie problemem zainstalowanie sobie ipfm czy statystyk Zciecha, jednak obydwa te programy zliczają dane pobierane/wysyłane przez komputery będące w sieci lokalnej, a nie przez sam router/serwer NND. Wydawało mi się, że to niejako wynikało z treści mojego posta.

Pozdrawiam

Maciek

Autor:  tasiorek [ niedziela, 16 kwietnia 2006, 00:27 ]
Tytuł: 

Nie uzywalem ipfm, ale patrzac na opis na wiki, to jest tam wyraznie zaznaczona opcja sluzaca do tego, zeby staty nie logowaly ruchu serwera. Podejrzewam, ze wystarczy ja usunac.

Autor:  tasior666 [ niedziela, 16 kwietnia 2006, 00:54 ]
Tytuł: 

Czytałem opis ipfm na wiki i też wpadłem na taki pomysł, jednak niestety to nie skutkuje.

Autor:  KrzySie [ niedziela, 16 kwietnia 2006, 01:11 ]
Tytuł: 

tasior666 pisze:
Czytałem opis ipfm na wiki i też wpadłem na taki pomysł, jednak niestety to nie skutkuje.

Tylko zmiana interfejsu, ale wtedy nie będziesz logował userów. Za to w pełni będziesz wiedział ile GB już wykorzystałeś.

Autor:  tasior666 [ niedziela, 16 kwietnia 2006, 01:21 ]
Tytuł: 

Ten pomysł też mi przyszedł do głowy - zmieniłem interfejs na eth0 i wpisałem jako adres do logowania adres zewnętrzny przydzielany interfejsowi przez modem adsl. Zadziałało i wszystko byłoby super, tyle że ten adres zmienia się raz na dobę (jak to w Neo). IPFM ładuje swój plik konfiguracyjny przy starcie i potem już do niego nie zagląda.
Właśnie przyszedł mi do głowy pewien pomysł, ale nie wiem, czy nie jest to pewne przekombinowanie: napisać skrypt, który będzie sprawdzał adres interfejsu internetowego i wpisywał go w odpowiednie miejsce w pliku konfiguracyjnym IPFM. Uruchamiać ten skrypt z crona co 5 min na przykład. Jednocześnie raz na dobę również z crona restartować samego IPFM. Co wy na to? Czy ma takie podejście jakiś sens?

Autor:  Mr Groch [ niedziela, 16 kwietnia 2006, 01:23 ]
Tytuł: 

Nie do konca, gdyz zmiana IP Neo odbywa sie najczesciej w rozne pory
doby... Nie zawsze o tej samej porze....

Autor:  tasior666 [ niedziela, 16 kwietnia 2006, 01:25 ]
Tytuł: 

A czy jest możliwość takiego wpisania logowanego adresu w ipfm.conf, żeby był niewrażliwy na zmiany? Jakiś wildcard na przykład w stylu *.*.*.* ?

Autor:  tasior666 [ niedziela, 16 kwietnia 2006, 01:26 ]
Tytuł: 

Notabene jak już pisałem, nie upieram się przy ipfm. Jeżeli wiecie, jakim programem można zrobić to, co mnie interesuje w miarę bezboleśnie, to bardzo chętnie posłucham :)

Autor:  KrzySie [ niedziela, 16 kwietnia 2006, 08:34 ]
Tytuł: 

Można stąd ściągnąć skrypt wykorzystujący iptables ftp://ftp.regionet.pl/rePeter - napewno wymaga modyfikacji ze względu chociażby na użycie kolorów. Przeglądnij, może się przyda.

Autor:  tasior666 [ niedziela, 16 kwietnia 2006, 09:45 ]
Tytuł: 

Poczytałem sobie trochę o statystykach w tym temacie:
http://forum.freesco.pl/viewtopic.php?t=10370
I wygląda to całkiem całkiem. Są one oparte na kilku regułkach iptables. Czy zatem nie wystarczyłoby dopisać jakiejś regułki, żeby te staty zliczały też serwer?

Autor:  Mr Groch [ piątek, 21 kwietnia 2006, 04:02 ]
Tytuł: 

Dopiero co sie ucze iptables, wiec mysle, ze na poczatek to bedzie
dobra praktyka dla mnie :)

Wydaje mi sie, ze starczyloby aby przekazac caly ruch z lancucha
OUTPUT i INPUT w tablicy mangle przekazac np do jakiegos lanucha STAT
(tak jak to jest w tych skryptach podanych wyzej) i potem lekka
edycja tych statystyk, by zczytaly liczniki stamtad...

Jak sie wyspie to postaram sie to zrobic, tez przydaloby mi sie
zliczanie ruchu serwera :)

Autor:  Mr Groch [ piątek, 21 kwietnia 2006, 15:13 ]
Tytuł: 

Przygladnelem sie temu i udalo mi sie zrobic zliczanie
transferu tylko serwera, ale niestety nie znam perla,
by zmodyfikowac ten skrypt...

Najprosciej bedzie jak napiszesz sobie np w bashu skrypcik
zczytujacyo co kilka minut liczniki izrzucajacy wartosc do pliku.

Potem wyniki mozesz wyswietlic na stronie np uzywajac prostego
skryptu php...

regulka zliczajac np download dla serwera bedzie wygladac tak:

iptables -D INPUT -j down_router
iptables -F down_router
iptables -X down_router
iptables -N down_router
iptables -I INPUT -j down_router
iptables -I down_router -i ppp0

A zczytywanie danych to:
iptables -L down_router -vx

(uzwajac basha, by z tego wyciagnac ilosc przeslanych bajtow
mozesz uzyc: iptables -L down_router -vx | grep ppp0 | awk '{print $2}' )

Znajac podstawy basha i php mysle, ze sobie poradzisz, by
wiedze ta wykorzystac do zliczania transferu samego routera

Pozdrawiam

PS. Jezlei ktos zna perla to bylbym wdzieczny za zmodyfikowanie
skryptu wspomnainego w poprzednich postach wyswietlajacego transfer
danych uzytkownikow, by mogl zczytac dane z powyzszej regulki

Autor:  Mr Groch [ piątek, 21 kwietnia 2006, 18:32 ]
Tytuł: 

Sorry za 3 posty... Poprzednie mozna skaowac, jak to komus
przeszkadza...

Zwatpilem nieco w swe sily, gdyz nie znam perla, ale jakos metoda
dedukcji udalo mi sie zmodyfikowac ten skrypt i mamy ladne
zliczanie ruchu routera :)

Wyglada to np tak:
http://groch.dyndns.org/stats.php
(tabelka "Miesięczny transfer (..)")

Mozna oczywiscie sobie zmodyfikowac plik php, aby transfer routera
byl wyswietlany osobno.

Nalezy zmodyfikowac 2 pliki - plik, za pomoca ktorego dodajemy
regulki dla statystyk i plik stat.pl znajdujacy sie w glownym katalogu
skryptu statystyk.

Tak oto wyglada zmodyfikowany plik regulek:
: [/] [] ()
#!/bin/bash
. /etc/rc.conf
. /etc/rc.d/functions

reguly(){
    stat_busy "Dodaje reguły"

    SIEC=192.168.0. #wstaw 3 pierwsze oktety adresu LAN, np. 192.168.0.
    NR=4 #wstaw ostatni oktet pierwszego IP w sieci, np. jesli pierwszym IP jest 192.168.0.4 to wstaw 4
    IP=8 #wstaw ostatni oktet ostatniego IP w sieci, np. jesli ostatnim IP jest 192.168.0.8 to wstaw 8
    SIEC_MASKA=192.168.0.0/24 #wstaw adres sieci wraz z maska, np. 192.168.0.0/24

    iptables -t mangle -D FORWARD -i $INTIF1 -j STAT >/dev/null 2>&1
    iptables -t mangle -D FORWARD -o $INTIF1 -j STAT >/dev/null 2>&1
    iptables -t mangle -D INPUT -i $EXTIF -j LOCAL_STAT >/dev/null 2>&1
    iptables -t mangle -D OUTPUT -o $EXTIF -j LOCAL_STAT >/dev/null 2>&1
    iptables -t mangle -F STAT >/dev/null 2>&1
    iptables -t mangle -X STAT >/dev/null 2>&1
    iptables -t mangle -N STAT
    iptables -t mangle -F LOCAL_STAT >/dev/null 2>&1
    iptables -t mangle -X LOCAL_STAT >/dev/null 2>&1
    iptables -t mangle -N LOCAL_STAT
    iptables -t mangle -I FORWARD -o $INTIF1 -j STAT
    iptables -t mangle -I FORWARD -i $INTIF1 -j STAT
    iptables -t mangle -I INPUT -i $EXTIF -j LOCAL_STAT
    iptables -t mangle -I OUTPUT -o $EXTIF -j LOCAL_STAT

    #dla routera
    iptables -t mangle -I LOCAL_STAT -i $EXTIF -d ! $SIEC_MASKA -j RETURN
    iptables -t mangle -I LOCAL_STAT -o $EXTIF -s ! $SIEC_MASKA -j RETURN

    while [ $NR -le $IP ]; do
    #dla poszczególnych kompów
    iptables -t mangle -A STAT -d $SIEC$NR -j RETURN
    iptables -t mangle -A STAT -s $SIEC$NR -j RETURN
    NR=$[NR + 1]
    done

    stat_done
}

czysc(){
    stat_busy "Czyszczenie reguł"

    iptables -t mangle -D FORWARD -i $INTIF1 -j STAT
    iptables -t mangle -D FORWARD -o $INTIF1 -j STAT
    iptables -t mangle -D INPUT -i $EXTIF -j LOCAL_STAT
    iptables -t mangle -D OUTPUT -o $EXTIF -j LOCAL_STAT
    iptables -t mangle -F STAT
    iptables -t mangle -X STAT
    iptables -t mangle -F LOCAL_STAT
    iptables -t mangle -X LOCAL_STAT

    stat_done
}

case $1 in
reguly)
    reguly
;;
czysc)
    czysc
;;
*)
echo "
Uzyj:
    reguly - dodawanie regul do iptables
    czysc - wylaczenie wszystkich statystyk i czysci iptables
    "
;;
esac

Skrypt ten sam sie troszczy o poprawnosc regulek dla statystyk - nalezy
tylko wyedytowac pare informacji dotyczacych Twojej sieci.

Odpalamy komenda 'nazwa_pliku' reguly
Czyscimy iptables z regulek 'nazwa_pliku' czysc

Nastepny plik jaki musimy zmodyfikowac to oczywscie stat.pl

Dodajemy do pliku takie oto cos:
: [/] [] ()
@router_info = `$ipt -t mangle -L LOCAL_STAT -vxZ`;
foreach my $line (@router_info)
{
        chomp($line);
        $host = "router";
        if($line =~ /^ +([0-9]+) +([0-9]+).*any +anywhere +(.*)/ )
        {
                $line =~ s/^ +([0-9]+) +([0-9]+).*any +anywhere +(.*)/$1 $2 $3/g;
                ($pkts, $bytes) = split ' ',$line;
                $download{$host} = $bytes;
        }
        elsif($line =~ /^ +([0-9]+) +([0-9]+).*any +(.*) +anywhere +/ )
        {
                $line =~ s/^ +([0-9]+) +([0-9]+).*any +(.*) +anywhere +/$1 $2 $3/g;
                ($pkts, $bytes) = split ' ',$line;
                $upload{$host} = $bytes;
        }
        if($download{$host} || $upload{$host})
        {
                $activity{$host} = $now;
        }
}


Najlepiej to umiescic miedzy liniami:
: [/] [] ()
                if($download{$host} || $upload{$host})
                {
                        $activity{$host} = $now;
                }
        }
}

i
: [/] [] ()
# Odczytanie danych z poprzedniego wykonania skryptu
if( open(LOGFILE, $file) )


Mam nadzieje tasior666, ze spelnilem Twoje oczekiwania :)
Moze sie przydac kazdemu kto ma limity transferu...

Pozdrawiam

Autor:  tasior666 [ niedziela, 23 kwietnia 2006, 18:23 ]
Tytuł: 

Wielkie dzięki Groch! W wolnej chwili przyjrzę się temu i zobaczę co i jak.

Autor:  tasior666 [ wtorek, 25 kwietnia 2006, 00:07 ]
Tytuł: 

No, miałem chwilkę i usiadłem do tego. Jest super i wszystko bardzo ładnie działa :) Dzięki raz jeszcze Groch.

Pozdrawiam!

Maciek

Autor:  adamz [ sobota, 30 września 2006, 22:58 ]
Tytuł: 

Czy ten skrypt Mr Groch zlicza również ruch ze squida?

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/