Monitorowanie ruchu rrd i iptables


rrd i iptables
COVER STORY
Prosty sposób monitorowania obciążenia łącza do Internetu za pomocą rrd i iptables.
Monitorowanie ruchu
za pomocą rrd i iptables
Ostatnio przez Internet przetoczyła się dyskusja spowodowana problema-
przesyłanych w określonym kierunku, po-
trzebowałem informacji o sumie ruchu wy-
mi z transmisją na styku sieci akademickich  Pol-34 i siecią TP S.A.
chodzącego z serwera. Aby oznakować cały
Oczywiście, jak zwykle poszło o pieniądze i dodatkowo można było od- ruch, utworzyłem własny łańcuch i tam skie-
rowałem wszystkie pakiety wychodzące.
nieść wrażenie, że poza pieniędzmi chodziło o ambicje dwóch, bardzo du-
W łańcuchu tym pakiety wpadające do niego
otrzymują znacznik 0x11.
żych jak na polskie warunki sieci. MARCIN MAZUREK
iptables -t mangle -X all_data
trakcie tej dyskusji przerzuca- Zabawa w Kopciuszka, iptables -t mangle -N all_data
no się statystykami błędów, czyli zliczanie pakietów iptables -t mangle -A OUTPUT -o U
Wobciążeń, wielkością styków Żeby móc zacząć robić statystyki, musia- $ETH -j all_data
z danym operatorem, itp. Dodatkowo po- łem najpierw posortować ruch według ka- iptables -t mangle -A all_data U
jawiło się wiele głosów omawiających kie- tegorii, które chciałem pózniej analizować. -j MARK --set-mark 0x11
runki, w których idzie większość ruchu Interesowały mnie tak naprawdę cztery ka-
internetowego od większych i mniejszych tegorie ruchu: Oczywiście można to zrobić w jednym łańcu-
operatorów, pomiędzy jakimi sieciami całość ruchu wychodzącego z serwera chu, ale ponieważ zliczane będą jeszcze inne
wymiana ruchu jest zbliżona, gdzie jest ruch wychodzący w kierunku TP S.A. grupy pakietów, zależało mi na jednakowym
asymetryczna itd. Ponieważ sam byłem ruch wychodzący w kierunku GTS, w tym sposobie sumowania ruchu wychodzącego.
ciekaw, jak to jest naprawdę i kto w rze- wypadku głównego dostawcy łącza Podobnie znakowany będzie ruch wycho-
czywistości korzysta z danych zgromadzo- ruch wychodzący ftp generowany przez dzący w kierunku operatora. Warto zwrócić
nych na moim serwerze, postanowiłem się użytkownika, z którego prawami działał uwagę, że znaczniki nadane we wcześniejszych
temu przyjrzeć. serwer ftp z dostępem anonimowym liniach będą nadpisywane przez kolejne, jeśli
Sytuacja była o tyle skomplikowana, że cho- Po przeszukaniu freshmeat.net i googlowa- pakiety trafią do różnych łańcuchów. W tym
dzi o jeden serwer z Linuksem na pokładzie, niu za odpowiednimi narzędziami, ostatecz- przypadku będzie tak zawsze, ponieważ każdy
a nie o router z oprogramowaniem gotowym nie okazało się, że poczciwe iptables jest do- pakiet wychodzący w kierunku GTS jest także
do generowania takich statystyk za pomocą skonałym narzędziem do zabawy w Kop- pakietem wychodzącym w ogóle.
NetFlow. Ostatecznie okazało się to prostsze ciuszka.
niż się spodziewałem i już wiadomo, od kogo Wykorzystałem łańcuch mangle, który po- iptables -t mangle -X gts
można żądać peeringu. zwalał na znakowanie pakietów według kate- iptables -t mangle -N gts
Celem było potwierdzenie lub zaprzeczenie gorii określonych powyżej. Poza możliwością
tezie, jakoby gros ruchu z większości sieci szło znakowania ruchu, mangle jest celem nieter- iptables -t mangle -A OUTPUT -o U
w kierunku TP S.A., przy okazji dodatkowym minującym, czyli pakiety, które zostaną wysła- $ETH -d 195.94.192.0/19 -j gts
zadaniem było ograniczenie ruchu FTP do ne do tego właśnie celu, są dalej przetwarzane iptables -t mangle -A OUTPUT -o U
określonego poziomu. Całość musiała się roz- przez iptables. Do samego ograniczania ruchu $ETH -d 217.8.160.0/19 -j gts
strzygnąć przy pomocy narzędzi ogólnie do- ftp z serwera skorzystałem z pomocy tc. iptables -t mangle -A OUTPUT -o U
stępnych w oparciu o dane zgromadzone z nie- Poniżej krok po kroku przedstawiam konfi- $ETH -d 217.153.0.0/16 -j gts
dużego serwera z Linuksem, z serwerem ftp gurację iptables, która pozwoliła na pogrupo-
z popularną zawartością i kilkoma mniejszymi wanie ruchu, oznakowanie ruchu i okresowe iptables -t mangle -A gts -j U
rzeczami (WWW, SMTP, POP3). zbieranie statystyk. MARK --set-mark 0x21
Na początek dla porządku czyszczę cały łań-
Marcin Mazurek. Użytkow-
cuch mangle: Pojawia się przy okazji pytanie  skąd brać
nik i entuzjasta Linuxa.
aktualne zakresy adresów IP przypisane do
Obecnie pracownik GTS
iptables -t mangle -F danego operatora?. Te dane udostępniają ser-
Polska.
wery whois. Jeśli chcę uzyskać spis sieci przy-
Żeby móc coś powiedzieć o ilości danych znanych TP S.A., wystarczy użyć polecenia:
26 Maj 2004 www.linux-magazine.pl
AUTOR
rrd i iptables COVER STORY
vix:~# whois -h U -n -v -x Polecenie to tworzy plik stats.rrd, inicjując
filtergen.level3.net RIPE::AS5617 Chain ftp (1 references) kolejno cztery zródła danych  DS. Każde ze
pkts bytes target prot opt in U zródeł będzie przechowywać informacje
vix:~# whois -h U out source destination o określonym typie ruchu. Minimalna wartość
filtergen.level3.net RIPE::AS5617 1002842 1356515158 MARK all -- U została ustalona na 0, maksymalna jest niezde-
Prefix list for policy U * * 0.0.0.0/0 0.0.0.0/0 MARK U finiowana U. Dane będą pobierane co 60 se-
RIPE::AS5617 = RIPE::AS5617 set 0x41 kund, a przechowywane próbki określane są
przez rekordy RRA.
80.48.0.0/13 Połowa zadania jest wykonana: pakiety zo-
83.0.0.0/11 stały poznakowane i są już zliczane. Ruch ftp RRA:AVERAGE:0.5:1:10080
194.204.128.0/18 mogę następnie w dogodny dla siebie sposób
... ograniczyć za pomocą tc. Średnia z jednej próbki, czyli z 60 sekund;
przechowywanych będzie 10080 próbek, co
Podobnie jak powyżej oznaczałem pakiety tc qdisc del dev $ETH root daje ostatecznie: 10080 min / 60 minut / 24
skierowane do sieci GTS, oznaczam pakie- tc qdisc add dev $ETH root U godziny = 7 dni.
ty wychodzące do sieci TP S.A. Należy tyl- handle 1: htb default 10
ko zmienić zakresy sieci docelowych RRA:AVERAGE:0.5:180:56
(opcja -d) oraz znacznik, którego użyję tc class add dev $ETH parent 1: U
(opcja -set-mark). classid 1:1 htb rate 2mbit ceil U Średnia ze 180 próbek, czyli z trzech godzin;
2mbit przechowywanych będzie 56 próbek. Osta-
iptables -t mangle -X tpnet tecznie daje to:
iptables -t mangle -N tpnet tc class add dev $ETH parent 1:1 U
iptables -t mangle -A OUTPUT -o U classid 1:10 htb rate 2mbit prio 1 3 godziny * 56 próbek
$ETH -d 80.48.0.0/13 -j tpnet tc class add dev $ETH parent 1:1 U = 174 godziny = 7 dni.
iptables -t mangle -A OUTPUT -o U classid 1:20 htb rate 1024kbit U
$ETH -d 83.0.0.0/11 -j tpnet prio 2 Po szczegółowy opis parametrów rrd odsy-
iptables -t mangle -A OUTPUT -o U łam do stron rrd. Warto tylko dodać, że jako
$ETH -d 194.204.128.0/18 -j tpnet tc qdisc add dev $ETH parent U typ danych został wybrany COUNTER, po-
... 1:10 handle 10: sfq perturb 10 nieważ pozwala on zliczać stale rosnące dane
... tc qdisc add dev $ETH parent U i dobrze radzi sobie z przewijającymi się licz-
iptables -t mangle -A tpnet -j U 1:20 handle 20: sfq perturb 10 nikami.
MARK --set-mark 0x31 Następnie będę wypełniać plik stats.rrd
tc filter add dev $ETH protocol U danymi oczytywanymi w odstępach jednomi-
Pozostaje mi policzyć pakiety wysyłane do ip parent 1: prio 2 handle 0x41 \ nutowych. Do tego wykorzystam prosty
użytkowników mojego serwera ftp. Tę regułę fw flowid 1:20 skrypcik uruchamiany poprzez cron w nastę-
zostawiam na koniec po to, aby żadne inne pujący sposób:
nie nadpisały znacznika w przypadku ściąga- Wykresy
nia danych z serwera ftp przez użytkowni- Teraz przydałoby się pokazać zebrane dane * * * * * /home/mazek/bin/update.sh
ków GTS. Gdyby znakowanie według adre- w jakiejś rozsądnej postaci. Zdecydowałem
sów GTS następowało po znakowaniu ruchu się na rrd, które jest następcą zasłużonego Sam skrypt ma za zadanie odczytać stan licz-
ftp, nie mógłbym pózniej ograniczać ruchu i wysłużonego mrtg. rrd daje znacznie więk- ników dla podanych łańcuchów oraz wpro-
z serwera FTP, bo część znaczników została- sze możliwości, jeśli chodzi o manipulację wadzić te dane do bazy rrd.
by nadpisana. danymi gromadzonymi w bazach.rrd, jak
i o prezentację wyników w formie wykresów. #!/bin/bash
iptables -t mangle -X ftp Na początku trzeba stworzyć plik.rrd, w któ-
iptables -t mangle -N ftp rym będą zbierane informacje: ITM='/sbin/iptables -t mangle'
iptables -t mangle -A OUTPUT U rrdtool create stats.rrd -s 60 \ # Pobieramy liczbę bajtów z U
-o $ETH \ DS:all_data:COUNTER:600:0:U \ podanego łańcucha.
-m owner --uid-owner anonftp -j ftp DS:gts:COUNTER:600:0:U \ ALL_DATA=`$ITM -L all_data -n -x U
DS:tpnet:COUNTER:600:0:U \ -v | tail -n 1 | awk -F ' ' U
iptables -t mangle -A ftp -j U DS:ftp:COUNTER:600:0:U \ {'print $2;'}`
MARK --set-mark 0x41 RRA:AVERAGE:0.5:1:10080 \
RRA:AVERAGE:0.5:2:5040 \ GTS=`$ITM -L gts -n -x -v | tail U
Następnie sprawdzam, czy ruch jest rzeczy- RRA:AVERAGE:0.5:4:2520 \ -n 1 | awk -F  ' {'print $2; '}`
wiście zliczany: RRA:AVERAGE:0.5:6:1680 \
RRA:AVERAGE:0.5:180:56 \ TPNET=`$ITM -L tpnet -n -x -v | U
vix:~# iptables -t mangle -L ftp U RRA:AVERAGE:0.5:360:28 tail -n 1 | awk -F ' ' {'print U
www.linux-magazine.pl Maj 2004 27
rrd i iptables
COVER STORY
LINE2:tpnet#fff000:'Ruch U Rysunek 2 pokazuje zestakowane dane o ru-
do TPNET'\ chu wychodzącym według celu pakietów wy-
LINE2:ftp#00ffff:'Ruch ftp U chodzących.
z serwera'\
LINE2:www#888282:'Ruch www U rrdtool graph stats3.gif U
Rysunek 1: Wykres pokazujący ws0zystkie typy zlicza- z serwera'\ --title='Ruch z eth vix, U
nego ruchu. COMMENT:' '\ z podzialem na usługi' \
COMMENT:'$COMMENT' \ -w 700 --start -129600 \
--vertical-label 'bits/sek' DEF:all_data= U
stats.rrd:all_data:AVERAGE \
To polecenie wykonuję za każdym DEF:ftp= stats.rrd:ftp:AVERAGE \
razem, kiedy chcę obejrzeć najnow- DEF:www= stats.rrd:www:AVERAGE \
Rysunek 2: Ruch pogrupowany według celu danych. sze dane z pliku stats.rrd. Można je AREA:all_data#0000ff:'Cały ruch U
także wrzucić do crona i wykony- z vix'\
wać w wybranych okresach czasu. AREA:ftp#00ffff:'Ruch FTP'\
Wykres wygenerowany za pomocą STACK:www#888282:'Ruch WWW'\
tego polecenia będzie prezentował --vertical-label 'bits/sek'
dane z ostatnich trzydziestu sze-
Rysunek 3: Ruch pogrupowany według typu danych. ściu godzin (129600 sekund). Para- Rysunek 3 pokazuje zestakowane dane o ru-
metr DEF określa zródło danych chu wychodzącym według usług. W tym
$2; '}` i sposób ich interpretowania. Mnie intere- przypadku badamy jedynie FTP i WWW.
suje wartość średnia z przedziału czasowe- W obydwu przypadkach utworzone zostały
FTP=`$ITM -L ftp -n -x -v | tail U go, czyli AVERAGE. Ponieważ chcę poka- wykresy pokazujące dane z ostatnich sześciu
-n 1 | awk -F ' ' {'print $2; '}` zać całość na jednym wykresie, definiuję godzin. yródła danych (DEF) zostały ograni-
cztery zródła danych. Linię wykreślającą czone tylko do tych, które mnie interesują. Co
# Wprowadzamy dane pobrane do U całość ruchu z serwera rysuję najgrubszą najważniejsze, zmienił się także sposób prezen-
pliku.rrd linią  LINE3, kolorem czerwonym  war- tacji. Zamiast linii wykreślających poziom ru-
rrdtool update stats.rrd U tość rgb: ff0000, pozostałe będą kreślone li- chu danego typu, pokazuję wypełnione obsza-
N:$ALL_DATA:$GTS:$TPNET:$FTP nią średniej grubości  LINE2 w różnych ry. W obydwu przypadkach całość ruchu jest
kolorach. Na dole wygenerowanego obraz- pokazywana kolorem granatowym. Na Rysun-
Tu zaczyna się najlepsze, czyli rysowanie te- ka dodana zostanie legenda łącząca kolory ku 2 na obszarze granatowym pokazywane są
go, co zgromadziłem. rrd daje pod tym z określonym typem ruchu pokazywanego dane o ruchu do sieci GTS i TP S.A. Ruch do
względem ogromne możliwości w porówna- oraz komentarz. sieci TP S.A. pokazany jest za pomocą koloru
niu do swojego poprzednika  mrtg. Możli- Rysunek 1 pokazuje wszystkie typy ruchu żółtego, do sieci GTS za pomocą koloru czer-
wości prezentacji danych przez rrd w różno- monitorowanego na jednym wykresie. Każdy wonego. Jak widać, można spokojnie rozpoczy-
raki sposób są naprawdę imponujące i dla rodzaj ruchu pokazywany jest za pomocą linii. nać negocjacje z TP S.A. w kwestii darmowej
kogoś, kto wcześniej korzystał z mrtg  wręcz Użyteczność tego typu wykresów jest więc wymiany ruchu. Co ważne, ruch do różnych
przytłaczające. ograniczona. sieci pokazywany jest w formie zestakowanych,
Na początek zgromadzę wszystkie dane na Żeby nie mieszać rzeczy niepowiązanych ze a nie nakładających się obrazów, dzięki użyciu
jednym wykresie: sobą, czyli statystyk typu ruchu (FTP, WWW) słowa kluczowego STACK. Podobnie jest na
i celu danych (TP S.A., GTS), rozbijam po- Rysunku 3, który pokazuje różne typy ruchu.
COMMENT='Ostatnia aktualizacja: U przedni wykres na dwa oraz próbuję sprawić, Granatowy kolor oznacza całość ruchu wycho-
'` date +'%d/%m/%Y %T'` żeby stał się bardziej czytelny. dzącego, jasnoniebieski obszar to wychodzący
ruch FTP, a szary obszar to ruch WWW.
rrdtool graph stats1.gif U rrdtool graph stats2.gif U Jak widać, za pomocą prostych i po-
--title='Ruch wychodzący z vix' \ --title='Ruch z eth vix, U wszechnie dostępnych narzędzi można uzy-
-w 700 --start -129600 \ z podzialem na sieci' \ skać bardzo ciekawe informacje. Oczywiście
DEF:all_data=U -w 700 --start -129600 \ rozwiązania te nie zastąpią zintegrowanych
stats.rrd:all_data:AVERAGE \ DEF:all_data=U narzędzi do analizy ruchu, ale w dużym
DEF:gts= stats.rrd:gts:AVERAGE \ stats.rrd:all_data:AVERAGE \ stopniu mogą ułatwić zarządzanie siecią
DEF:tpnet=U DEF:gts= stats.rrd:gts:AVERAGE \ i dostępnym pasmem.
stats.rrd:tpnet:AVERAGE \ DEF:tpnet=U
DEF:ftp= stats.rrd:ftp:AVERAGE \ stats.rrd:tpnet:AVERAGE \
INFO
DEF:www= stats.rrd:www:AVERAGE \ AREA:all_data#0000ff:U
[1] Strona domowa projektu RRD
HRULE:100000#000000:'MAX limit \ 'Cały ruch z vix'\
http://www.rrdtool.com
LINE3:all_data#0000ff:U AREA:tpnet#fff000:'Ruch do TPNET'\
[2] Strona domowa projektu NetFilter
'Cały ruch z vix'\ STACK:gts#ff0000:'Ruch do GTS'\
http://www.netfilter.org
LINE2:gts#ff0000:'Ruch do GTS'\ --vertical-label 'bits/sek'
28 Maj 2004 www.linux-magazine.pl
WWW.LINUX-MAGAZINE.PL
Linux Magazine w Internecie:
WIADOMOŚCI
Na stronach WWW Linux Magazine znajdziesz najnowsze wiadomości ze świata Linuksa.
OBSAUGA PRENUMERATY CO W NASTPNYM NUMERZE?
Wszystkie sprawy związane z prenumeratą możesz zała- Dowiedz się pierwszy, co będzie w następnym numerze
twić sam na naszych stronach WWW. Można tutaj uak- Linux Magazine. Każdego miesiąca publikujemy pełny
tualnić dane adresowe, przedłużyć przenumeratę lub spis treści oraz kilka wybranych artykułów z numeru Li-
zmienić jej parametry. nux Magazine wchodzącego właśnie do sprzedaży.
POMOC DLA CZYTELNIKÓW ARCHIWUM ONLINE
Chcemy pomagać naszym Czytelnikom w poznawaniu Pełna zawartość numerów archiwalnych dostępna bez-
Linuksa. Na naszych stronach WWW znajdziesz kompe- płatnie (dla osób prywatnych) w postaci plików PDF.
tentne informacje. Zaprawszamy również do korzysta- Funkcja pełnotekstowego wyszukiwania pozwoli łatwo
nia z naszej listę mailingowej. znalezć potrzebne informacje.
MAGAZYN O ZAAWANSOWANYCH ZASTOSOWANIACH LINUKSA
WWW.LINUX-MAGAZINE.PL


Wyszukiwarka

Podobne podstrony:
MikroTik jako monitor ruchu czasu rzeczywistego
Wahania natezenia ruchu
Okulary do pracy przy monitorze
rozwój ruchu opor2 (3)
MonitorInfo
Rownanie ruchu pojazdu samochodowego
7 Dynamika ruchu obrotowego bryly sztywnej
Monitory studyjne porównanie 15
monitor 40 5 strana
Monitoring Wilka szarego
06 S Wronka System monitorowania i kontroli wiązki
biologia układ ruchu
teoria ruchu samochodu
Dz U 2005 nr 108 poz 908 Prawo o ruchu drogowym

więcej podobnych podstron