Iptables/Traffic
Simple Traffic Logger
Tworzymy nowy łańcuch:
# iptables -N TRAFFIC
Podpięcie łańcucha odpowiedzialnego za ruch do nowo utworzonego FORWARD w przypadku bramy i/lub routera, opcjonalnie można dołożyć INPUT i OUTPUT:
# iptables -I FORWARD -j TRAFFIC
Możemy także zrobić to po sieciówkach, jeżeli mamy jedną odpowiedzialną za wszystko to będzie to wyglądać tak:
# iptables -A TRAFFIC -o eth0 # upstream # iptables -A TRAFFIC -i eth0 # downstream
Co zliczamy? TCP? UDP? ICMP? A może coś bardziej konkretnego? No to bierzemy się za ruch WWW (HTTP requests and response):
# iptables -A TRAFFIC -p tcp -m multiport --ports www
Możemy także zrobić tak samo z mailami, a więc:
# iptables -A TRAFFIC -p tcp -m multiport --ports pop3,smtp
Można także z konkretnym portem, czyli:
# iptables -A TRAFFIC -p tcp --sport 31337
Listing naszego łańcucha:
# iptables -L TRAFFIC -nvx
Zerowanie naszego łańcucha:
# iptables -Z TRAFFIC
Wyświetla adresy IP i ilość ruchu w bajtach:
# iptables -L TRAFFIC -nvx | awk '$1 ~ /^[0-9]+$/ { printf "Adres IP: %s, %d bajtów\n", $8, $2 }'
Możemy to wszystko trochę bardziej zautomatyzować i przy okazji skomplikować, a więc dodajemy prosty skrypcik do crona, niech się wykonuję raz na godzinę. Zależnie od tego jak bardzo chcemy mieć dokładne dane ten czas możemy zmieniać zależnie od potrzeb.
Tworzymy plik Traffic.sh:
touch Traffic.sh
I zamieszczamy w nim poniższy skrypt:
#!/bin/sh date >> ~/Traffic.dat iptables -L -Z TRAFFIC -nvx >> ~/Traffic.dat
Co dalej? Może jakiś eksport do bazy danych? Jakieś wykresy?