Chyba każdy administrator w swojej pracy analizuje działanie sieci. Jednym z często badanych parametrów jest czas odpowiedzi danego hosta w sieci oraz przepustowość danego łącza. W tym artykule przedstawię swój autorski system (chodź system to za dużo powiedziane) do przestawiania tych danych w formie wykresów.
Wymagania
Do działania systemu potrzebujemy tylko serwera WWW z interpreterem języka PHP. Tak naprawdę 99% firm hostingowych spełni te wymagania w tym oferujących darmowe pakiety będzie odpowiednia.
Plik zip z plikami do pobrania tutaj
Uruchomienie systemu – część serwerowa
W pobranym pliku zip znajduje się folder „Serwer”, pliki w nim zawarte umieszczamy na serwerze. Pliki to:
- index.php – plik który jest odpalany przez przeglądarkę użytkownika i generuje wykresy. Dla tych którzy nie wiedzą ta nazwa jest ogólnie przyjętą nazwą pliku domyślnego w katalogu więc wchodząc na adres serwera nie trzeba będzie podawać jego nazwy w pasku adresu przeglądarki, zostanie on wybrany domyślnie.
- api.php – plik do którego odwołuje się skrypt uruchamiany na routerze MikroTik. Jeśli chcemy się zabezpieczyć że zapis może być z określonych adresów IP edytujemy plik i w na samej górze zaraz pod <?php wklejamy:
$allow_ip = ['1.1.1.1', '2.2.2.2']; if(in_array($_SERVER['REMOTE_ADDR'], $allow_ip) !== true) { header('HTTP/1.0 403 Forbidden'); exit; }
Odpowiednie adresy wpisujemy w $allow_ip
- network.db – baza danych (jej nie ruszamy).
- phpliteadmin.php – służy do podglądu/edycji bazy danych przez przeglądarkę. Ustawione hasło to „mikrotikon.pl” – aby je edytować wystarczy edytować plik w zmienić linię:
$password = 'TWOJE TAJNE HASŁO';
Uruchomienie systemu – część na routerze MikroTik
Drugim folderem w pobranym pliku zip jest MikroTik gdzie znajdują się przykłady skryptów do odpalenia na MikroTik’u. Pliki to:
pinger.txt – skrypt wykonujący test ping. Wymaga uprawnień: read, test. W części konfiguracyjnej do uzupełnienia:
- host – adres IP hosta które chcemy pingować
- packetsCount – ilość pakietów jaka chcemy użyć w teście (max 1000)
- packetsSize – rozmiar pakietu w bajtach
- hostname – nazwa hosta który chcemy pingować (używana w nazwie wykresu)
- url – adres gdzie jest umieszczony plik api.php (koniecznie poprzedzony http:// lub https://)
Przykład:
# Konfiguracja :local host "1.1.1.1"; :local packetsCount 500; :local packetsSize 1500; :local hostname "Cloudflare Public DNS"; :local url "http://example.com";
bandwidth_test.txt – skrypt wykonujący test prędkości do wskazanego hosta. Wymaga uprawnień: read, test. Parametry części konfiguracyjnej uzupełniamy tak jak w poprzednim przykładzie (ograniczając się do host, hostname i url).
W tym skrypcie możemy też edytować dodać parametry do linii zaczynającej się od „/tool bandwidth-test” m. in:
- remote-tx-speed=500M local-tx-speed=500M – to wartości maksymalnych prędkości jakie chcemy uzyskać w teście. Przydatne gdy nie chcemy zawalić całego CPU testem. Możemy je tez usunąć co spowoduje że test poleci bez ograniczeń.
- protocol=udp – możemy też alternatywnie wybrać protokół tcp to transmisji podczas testu (większe użycie CPU).
- user=”nazwa_uzytkownika” password=”haslo” – musimy dodać te wartości jeśli serwer wymaga uwierzytelnienia do testu (można je dodać zaraz przed „do=”).