Monitorizare trafic – mrtg si ipfw

graficmrtg

Atunci cand dorim sa monitorizam traficul de upload/download pe o anumita interfata a unui sistem cu FreeBSD sau traficul facut de un anumit ip sau clasa de ip-uri la nivelul unui router pe care ruleaza FreeBSD putem realiza acest lucru cu mrtg si ipfw.

Ca sa putem folosi firewall trebuie sa incarcam modul ipfw.ko deoarece nu este compilat in kernelul GENERIC:

kldload /boot/kernel/ipfw.ko

O alta solutie este recompilarea kernel-ului cu optiunile:

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10000
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET

In /etc/rc.conf adaugam liniile:

firewall_enable="YES"
firewall_type="/etc/ipfw.conf"

Fisierul in care scriem regulile de firewall este /etc/ipfw.conf.
Un mic exemplu este urmatorul:

add 10 deny ip from 10.1.0.0/16 to any
add 20 deny ip from 172.19.120.0/24 to 192.168.0.2
add 30 count ip from any to 172.19.120.0/24 via xl0 out
add 40 count ip from 172.19.120.0/24 to any via xl0 in

Incarcarea acestor reguli se face la boot, dar in cazul in care facem modificari si dorim sa reincarcam regulile folosim:

ipfw -f flush && ipfw -f /etc/ipfw.conf

Regulile 30 si 40 le vom folosi pentru a monitoriza traficul de upload si respectiv download facut de toata clasa de ip-uri 172.19.120.0/24.

Urmeaza instalarea si configurarea mrtg. Presupunem ca avem un server web functional care sa serveasca paginile cu grafice.
Putem instala mrtg din porturi:

cd /usr/ports/net-mgmt/mrtg
make
make install
make clean

sau instalat pachetul precompilat cu:

pkg_add -r mrtg

Dupa instalare editam fisierul de configurare a mrtg-ului care este /usr/local/etc/mrtg/mrtg.cfg.
Un exemplu minim este urmatorul:

WorkDir: /calea/spre/directorul/accesibil/web
Target[ether]: `/calea/spre/monitorizare.pl 30 40`
Options[ether]: absolute, bits, growright
MaxBytes[ether]: 5242880
WithPeak[ether]: ymwd
Title[ether]: Monitorizare trafic 172.19.120.0/24
PageTop[ether]: <H1>Monitorizare trafic 172.19.120.0/24</H1>
ShortLegend[ether]: b/s
YLegend[ether]: Bits per Second
Legend1[ether]: Incoming Traffic in Bits per Second
Legend2[ether]: Outgoing Traffic in Bits per Second
Legend3[ether]: Maximal 5 Minute Incoming Traffic
Legend4[ether]: Maximal 5 Minute Outgoing Traffic
LegendI[ether]: &nbsp;Download:
LegendO[ether]: &nbsp;Upload:

Urmeaza generarea automata a fisierului index.html care se va accesa din browser:

indexmaker –output=/calea/spre/directorul/accesibil/web/index.html /usr/local/etc/mrtg/mrtg.cfg

Pentru a citi datele furnizate de ipfw (ipfw show 30 si ipfw show 40) vom folosi scriptul de mai jos, pe care il salvam in fisierul monitorizare.pl :

#!/usr/bin/perl
$reg_down = ($ARGV[0]);
$reg_up = ($ARGV[1]);
$datadown = `/sbin/ipfw -q show $reg_down`;
$dataup = `/sbin/ipfw -q show $reg_up`;
system "/sbin/ipfw -q zero $reg_down";
system "/sbin/ipfw -q zero $reg_up";
($in_bytes,$out_bytes)=(0,0);
for $record (split "\n",$datadown) {
($rule,$pkts,$bytes) = split m[\s+],$record,4;
$down=$bytes,next
}
for $record (split "\n",$dataup) {
($rule,$pkts,$bytes) = split m[\s+],$record,4;
$up=$bytes,next
}
print "$down\n$up\n";

In fisierul /etc/crontab adaugam linia urmatoare pentru a rula mrtg-ul din doua in doua minute:

*/2 * * * * root /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg

Articole asemanatoare:

Bogdan Turcanu

Bogdan Turcanu

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.