Iptables, Snmp i transfer/ruch z poszczególnych komputerów

Konfiguracja serwerów, usług, itp.
Luc3k
Posty: 67
Rejestracja: 12 sierpnia 2008, 08:56
Lokalizacja: Nowy Sącz

Iptables, Snmp i transfer/ruch z poszczególnych komputerów

Post autor: Luc3k »

Utknąłem, liczę na Waszą pomoc. Konfiguruję sobie mrtg i nie mam pomysłu jaki skrypt napisać, żeby wyświetlił mi w konsoli aktualny transfer (z jaką prędkością, lub jaki ruch generuje komputer np. na adresie 10.0.0.213)
Dotychczas używałem takiego skryptu, ale to była inna dystrybucja:

Kod: Zaznacz cały

#!/bin/bash
iptables -L mrtg_traffic -v -x -n | grep " $1 " | head -1 | awk '{print $2}'
iptables -L mrtg_traffic -v -x -n | grep " $1 " | tail -1 | awk '{print $2}'
po uruchomieniu skryptu ładnie zwracał mi takie wartości:

Kod: Zaznacz cały

[root@Lan14 bin]# ./ip 192.168.14.105
196552436
19006866
Niestety w Debianie nie ma żadnej wartości "mrtg_traffic". Jak inaczej można taką wartość wyciągnąć z systemu?

PS. Mam zainstalowane SNMP.
Awatar użytkownika
MadCow
Posty: 14
Rejestracja: 24 maja 2006, 16:00

Post autor: MadCow »

Hej,
W dużym skrócie, mrtg_traffic to tablica iptables, przez która przechodziły pakiety w celu ich zliczania, domyślnie takich tablic w iptables nie ma.
Najprościej to poszukaj skryptów ze starej dystrybucji, które generowały iptables (pewnie potrzebny jakiś plik z użytkownikami/ adresami IP).

Po chwili z Google znalazłem:

Kod: Zaznacz cały

#!/bin/bash





. /etc/rc.conf


. /etc/rc.d/functions





PID="`pidof -o %PPID -x mrtg.run mrtg`"





mrtg_stop() {


        stat_busy "Stopping MRTG"


        for i in `cat /etc/mrtg/ipki.txt`; do


                iptables -D mrtg_traffic -d $i -j RETURN 2>/dev/null


                iptables -D mrtg_traffic -s $i -j RETURN 2>/dev/null


        done


        iptables -D FORWARD -j mrtg_traffic 2>/dev/null


#----------------------------------------------------------------------------------


        iptables -D INPUT -j mrtg_traffic 2>/dev/null


        iptables -D OUTPUT -j mrtg_traffic 2>/dev/null


#----------------------------------------------------------------------------------


        iptables -F mrtg_traffic 2>/dev/null


        iptables -X mrtg_traffic 2>/dev/null


        [ ! -z "$PID" ]  && kill -9 $PID 2>/dev/null


        if [ $? -gt 0 ]; then


                stat_fail


        else


                rm_daemon mrtg


                stat_done


        fi


}





mrtg_start() {


        stat_busy "Starting MRTG"


        if [ ! -z "$PID" ]; then


                stat_fail


        else


                add_daemon mrtg


                #Na wszelki wypadek...


                for i in `cat /etc/mrtg/ipki.txt`; do


                        iptables -D mrtg_traffic -d $i -j RETURN 2>/dev/null


                        iptables -D mrtg_traffic -s $i -j RETURN 2>/dev/null


                done


                iptables -D FORWARD -j mrtg_traffic 2>/dev/null


#----------------------------------------------------------------------------------


                iptables -D INPUT -j mrtg_traffic 2>/dev/null


                iptables -D OUTPUT -j mrtg_traffic 2>/dev/null


#----------------------------------------------------------------------------------


                iptables -F mrtg_traffic 2>/dev/null


                iptables -X mrtg_traffic 2>/dev/null


                #Start


                iptables -N mrtg_traffic


                for i in `cat /etc/mrtg/ipki.txt`; do


                        iptables -A mrtg_traffic -d $i -j RETURN


                        iptables -A mrtg_traffic -s $i -j RETURN


                done


                iptables -I FORWARD -j mrtg_traffic


#----------------------------------------------------------------------------------


                iptables -I INPUT -j mrtg_traffic


                iptables -I OUTPUT -j mrtg_traffic


#----------------------------------------------------------------------------------


                /etc/mrtg/mrtg.run &


                stat_done


        fi


}





case "$1" in


        start)


                mrtg_start


                ;;


        stop)


                mrtg_stop


                ;;


        restart)


                mrtg_stop


                sleep 3


                mrtg_start


                ;;


        *)


                echo "Uzyj: $0 {start|stop|restart}"


                ;;


esac
ODPOWIEDZ