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....
- 4067 megtekintés
Hozzászólások
pl muninba csinalsz plugin, abba lehet rakni figyelmezteteseket.
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Egyenlőre észlelni szeretném csak, ha megnövekedett a forgalom....
A "korlátozás" már nem virtuális lesz :D :D :D
- A hozzászóláshoz be kell jelentkezni
Javaslat: nezd meg az ipac csomagot, ez szamolja akar ip cimenkent/portonkent a forgalmat. Mellesleg egyszeru iptables cuccal Te is tudod szamolni.
- A hozzászóláshoz be kell jelentkezni
Érdekelne hogyan. Tudsz példát írni?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Ezzel a módszerrel asszem csak az a gond, hogy a teljes forgalmat méri csak, és nem kliensenként.
- A hozzászóláshoz be kell jelentkezni
Csinálj szabályt a kliens IP-re.
Mindegyikre külön. Vagy csak a gyanúsakra.
És ki a gyanús? Mindenki gyanús:)
-----
Si vis pacem, para bellum...
- A hozzászóláshoz be kell jelentkezni
"És ki a gyanús? Mindenki gyanús:)"
Sajnos ez így igaz. :-(
- A hozzászóláshoz be kell jelentkezni
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...
- A hozzászóláshoz be kell jelentkezni
Nem, mert a xx.163 az egy kliens ip-je lenne, csak elfelejtettem odaírni :)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Ö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.
- A hozzászóláshoz be kell jelentkezni
#################################################################################
#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
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
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)
- A hozzászóláshoz be kell jelentkezni
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?)
- A hozzászóláshoz be kell jelentkezni
É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
- A hozzászóláshoz be kell jelentkezni