Forgalom figyelés

Fórumok

Sziasztok!

A következőkben lenne szükségem segítségre:

Adott egy 50 klienses géppark.
És szeretném, ha egy adott gép forgalma megnövekszik,
"azaz tölt mint állat", arról kapjak értesítést mailben.
Gondolom ez a spanyolviasz határát erősen súrolja,
de nem tudom mire keressek rá.
Mrtg nem igazán az amit keresek, a nagios-t csak most telepítgetem, de nem valószínű , hogy ő lenne az abszolute befutó.
Olyasmit képzelek, hogy a routeren figyel egy monitor (ngrep script?) alkalmazás,
és a "kiugróan megnövekedett" forgalomról értesít....

Hozzászólások

pl muninba csinalsz plugin, abba lehet rakni figyelmezteteseket.
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Ha esetleg szankcionálni is akarod az illetőt, mégpedig automatikusan, akkor traffic-shaping kulcsszón érdemes nézelődni.
Igaz, csak Solarison csináltam még ilyet, de de gondolom Linuxon is meg lehet oldani, hogy engedjen pár- mondjuk 15 - mega "burst"-ot max. sávszélességen, ezen felül visszaveszi a kliens sávszélét jóval kissebre.

Ha a kiugróan megnövekedett forgalmat a jövőben le is akarod korlátozni, és érdekel a BSD-s megoldás, akkor vesd föl, én segíthetek.
--
Gentoo motto: It's worth spending eight hours trying to make something load 20ns faster.

Javaslat: nezd meg az ipac csomagot, ez szamolja akar ip cimenkent/portonkent a forgalmat. Mellesleg egyszeru iptables cuccal Te is tudod szamolni.

Talán ilyesmire gondolt:
iptables -A FORWARD -p tcp -d 192.168.2.163 -j ACCEPT
iptables -A FORWARD -p udp -d 192.168.2.163 -j ACCEPT

Megnézheted a csomagszámokat így:
iptables -L INPUT -v | grep '192.168.2.163'

Vagy inkább, ha csak a http-t és ftp-t nézzük meg.
eth0 = lan
eth1 = internet

iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 80 -d 192.168.2.163 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp --sport 21 -d 192.168.2.163 -j ACCEPT

Talán ilyesmivel lehetne még megoldani. Írhatsz szkriptet, hogy ha a csomagok száma meghaladja az xxx-et akkor küldjön neked egy mail-t.

Ha hülyeséget írtam volna akkor sorry előre is. Én ezzel próbálkoznék, de mindenki máshogy gondolkozik.

Netflow kéne néked :)
Guglizz rá, tuti van valami opensource netflow collector és analyzer + linux kernel modul vagy valami patch vagy userspace tool ami küldi a netflow packeteket.

Pl. ez:
http://www.networkuptime.com/tools/netflow/fprobe.html

Vannak az oldalon remek collectorok és analyzerek is.
-----
Si vis pacem, para bellum...

Kivonal az iptables man-jabol:

MATCH EXTENSIONS
iptables can use extended packet matching modules. These are loaded in two ways: implicitly, when -p or --protocol is specified, or with the -m or --match options,
followed by the matching module name; after these, various extra command line options become available, depending on the specific module. You can specify multiple
extended match modules in one line, and you can use the -h or --help options after the module has been specified to receive help specific to that module.

The following are included in the base package, and most of these can be preceded by a ! to invert the sense of the match.

account
Account traffic for all hosts in defined network/netmask.

Features:

- long (one counter per protocol TCP/UDP/IMCP/Other) and short statistics

- one iptables rule for all hosts in network/netmask

- loading/saving counters (by reading/writting to procfs entries)

--aaddr network/netmask
defines network/netmask for which make statistics.

--aname name
defines name of list where statistics will be kept. If no is specified DEFAULT will be used.

--ashort
table will colect only short statistics (only total counters without splitting it into protocols.

Example usage:

account traffic for/to 192.168.0.0/24 network into table mynetwork:

# iptables -A FORWARD -m account --aname mynetwork --aaddr 192.168.0.0/24

account traffic for/to WWW serwer for 192.168.0.0/24 network into table mywwwserver:

# iptables -A INPUT -p tcp --dport 80
-m account --aname mywwwserver --aaddr 192.168.0.0/24 --ashort

# iptables -A OUTPUT -p tcp --sport 80
-m account --aname mywwwserver --aaddr 192.168.0.0/24 --ashort

read counters:

# cat /proc/net/ipt_account/mynetwork # cat /proc/net/ipt_account/mywwwserver

set counters:

# echo "ip = 192.168.0.1 packets_src = 0" > /proc/net/ipt_account/mywwserver

Webpage:
http://www.barbara.eu.org/~quaker/ipt_account/

Összetákoltam ilyesmihez tavaly valami hasonlót. Egy iptables modulból áll, ami egy /24-es IP tartományon számolja a ki és bemenő forgalmat (tcp, udp, icmp, other). Egy /proc-beli file-ban ezt egy mysql load infile számára egyszerű formában tálalja, majd valamilyen időközönként egy sima cron+bash script ezt be is tolja az adatbázisba.

A cron-os script ellenőrzi a korlátozásokat, és adott forgalom túllépése esetén ezeket kitolja egy sima txt-be amit utána a többi szerver/router átvesz és felhasznál. Meg van hozzá egy PHP-s felület, hogy ki mennyit.

http://www.mad.hu/~husky/get.php?ipt_stat-20051122.tar.bz2

#################################################################################
#Hmm egy kis script amivel ellenorizheted a dolgokat
#!/bin/sh
#Written: Onthefloor
#Mentsd el /home/user/speedtest.sh
logger="/home/user/loging.txt"; #Logolas
maxsebesseg=10; #Maxsebesseg
sleeping=10; #Varakozasi ido
bejovo=`cat /proc/net/dev | grep ppp0 | cut -d":" -f 2 |awk '{print$1}'`;
kimeno=`cat /proc/net/dev | grep ppp0 | cut -d":" -f 2 |awk '{print$9}'`;
sleep $sleeping;
bejovo1=`cat /proc/net/dev | grep ppp0 | cut -d":" -f 2 |awk '{print$1}'`;
kimeno1=`cat /proc/net/dev | grep ppp0 | cut -d":" -f 2 |awk '{print$9}'`;
kulonbseg=`echo $bejovo $bejovo1 | awk '{print (($2-$1))/1024}'`;
sebesseg=`echo $kulonbseg $sleeping | awk '{print (($s1/$2))}'`;
datum=`date`;
if [[ $sebesseg > $maxsebesseg ]];
then
echo "A letoltesi sebesseg nagyobb mint $maxsebesseg Kb/sec";
echo "A letoltesi sebesseg : $sebesseg Kb/sec";
echo "A letoltesi sebesseg meghaladta a $maxsebesseg Kb/sec-et. A sebbeseg $sebesseg Kb/sec. A datum $datum" >> $logger;
else
echo "A sebesseg $sebbeseg";
fi

#Aztan annyi a dolgod hogy
#echo "0 */6 * * * user /home/user/speedtest.sh" >> /etc/crontab
#
#Es ellenorizheted a logfilet.
#tail -f /home/user/loging.txt
################################################################################
De ha annyira akarsz akkor emailt is kuldhetsz.
man mail

Udv: Onthefloor

Ez tényleg jó, csak kis hiba :)
echo "A sebesseg $sebbeseg";
A változó el lett írva. Nem kötöszködök, csak ha más is kipróbálja ne keresgélje mi a baj. Ezt már csak át kell még váltani KB vagy MB-ra :) De mindent összevetve tényleg, jó nekem tetszik, csak a sleep-et nem értem benne, az mire is kell?

Hogy megtudja, tiz masodperc alatt mennyit valtozott a forgalom. Vagyis mennyivel nott meg. (Gondolom, most nincs elottem a script, de ahogy az elobb neztem, ugy remlik, hogy vegsz egy mintat x idopontban, majd vesz egy masikat x+10 masodperc idopontban, aztan osszehasonlitja a kettot. A sleeping valtozo ertekenek allitasaval konnyen lehet szabalyozni, hoyg milyen gyakran merjen)

Na jó akkor mostmár elbizonytalanodtam és nem is tudom mire jó ez a szkript.
Megnézi x időben a be/kimenő forgalmat, hogy épp mennyi majd 10 mp múlva újra megnézi.
Majd a 2. értékből kivonja az elsőt és elosztja 1024-el, hogy KB-ban kajuk meg az értéket. (=kulombseg)
Majd a különbséget elosztja a 10 mp-el (=sebesseg)
Lesz egy eredményünk ami = másodpercenként hány KB-al tölt a user éppen a mért 10 mp-ben? és ha ez több mint 10 KB akkor fülyül? De akkor ezt
1. crontabban kellene futtatni időnként
2. ez érdekes akkor "A letoltesi sebesseg meghaladta a 10 Kb/sec-et. A sebbeseg 3.37344 Kb/sec. A datum Tue Nov 14 23:05:06 CET 2006"
ez most jött ki böngéstem a 10 mp alatt.
3. Nem értem, hogy lehet ezt külön userekre alkalmazni? (cat /proc/net/dev eredményét nem lehet userekre lebontani, vagy igen?)

Én inkább venném a fáradtságot és ezt a szkriptet felhasználnám arra, hogy iptables eredményét elemezzem vele amiben minden usernek saját szabájai lesznek. Ez sok meló, de lehet megéri kipróbálni, így pl meg tudom oldani, hogy csak xy ne msn-ezzen munka közben. (na jó ehhez nem kellene minden usernek saját szabály tudmom)
Kezdeném a problémásabb userekkel, hogy ha megunom legalább ők csekkolva legyenek :D