Monitoring i ograniczenie transferu w sieci lokalnej na routerze z OpenWrt
Wraz ze wzrostem liczby użytkowników, przychodzi pora na wprowadzenie ograniczeń prędkości w sieci.
O ile na moim routerze domowym nie mam takiej potrzeby, to w zastosowaniu firmowym warto wiedzieć kto i jak bardzo obciąża łącze i w ramach potrzeby wprowadzić niezbędne ograniczenia.
W pierwszej kolejności należy się dowiedzieć kto, a następnie jak bardzo.
A więc zacznijmy od narzędzi do monitoringu naszego łącza.
Zoptymalizowane dla OpenWrt 25.12 przy użyciu
apkzamiastopkg
Monitoring
W zależności, jak dużo informacji potrzebujemy, z poziomu routera możemy zainstalować dwa pakiety: luci-app-vnstat2 lub luci-app-nlbwmon.
luci-app-vnstat2
apk update
apk add luci-app-vnstat2
Po zainstalowaniu pakietu ujrzymy dodatkową opcję w menu Status > VnStat Traffic Monitor
Aplikacja domyślnie skonfigurowana będzie na monitorowanie ruchu w naszej sieci lokalnej (br-lan) oraz podstawowym łączu internetowym (eth1.2). Jeżeli nie, przechodzimy do zakładki konfiguracja (Configuration) i w monitorowanych interfejsach (Monitor interfaces) wybieramy to, co chcemy monitorować.
W sekcji głównej VnStat Graphs mamy do dyspozycji kilka metod prezentacji zgromadzonych danych.
Summary display otrzymujemy informację w postaci danych oraz wykresów, ile to pobraliśmy danych dzisiaj, wczoraj, w tym miesiącu oraz w miesiącu poprzedzającym.
Top 10 display przestawi nam 10 najintensywniejszych dni w naszej sieci. Oczywiście, musimy pozwolić naszemu routerowi na ich zebranie, więc od razu wszystkiego nie zobaczymy.
Hourly traffic przedstawi nam obciążenie w ciągu ostatnich 24 godzin. Analogicznie Daily traffic w przełożeniu na dni oraz Monthly traffic miesiące.
Nie otrzymamy natomiast żadnych informacji odnośnie kto obciążył nam łącze. Pakiet ten służyć będzie nam głównie do przeanalizowania, jak bardzo wykorzystujemy nasze łącze.
luci-app-nlbwmon
apk update
apk add luci-app-nlbwmon
Ten pakiet daje nam wgląd w jeszcze więcej informacji.
Do dyspozycji mamy dedykowane menu Bandwidth Monitor (lub Services > Bandwidth Monitor) z rozbudowanymi opcjami konfiguracji (Configuration) oraz możliwości zapisania danych zebranych na przełomie czasu (Backup), jak również ich przywróceniu. Szczególnie przydatne w przypadku aktualizacji oprogramowania na routerze.
W zakładce Display otrzymamy podgląd, jak poszczególni użytkownicy w naszej sieci obciążali nasze łącze (Traffic Distribution).
W tym z podziałem na protokoły poszczególnych aplikacji (Application Protocols)
Jeżeli komunikacja w naszej sieci odbywa się zarówno po IPv4, jak i IPv6, zakładka IPv6 przedstawi nam, jak kształtuje się podział ruchu w zależności od sposobu komunikacji.
Co więcej, w zakładce Export mamy możliwość zapisania zebranych danych w kilku formatach, pozwalające na ich późniejszą analizę w zewnętrznych programach.
Nie ma nic przeciwko zainstalowaniu obu pakietów i w przeciągu kolejnych dni podjąć decyzję, który okaże się lepszy. Spora część użytkowników zauważa, że nlbwmon pomija niektóry ruch, przez co jego statystyki okazują się niższe od vnstat.
Oczywiście, należy zauważyć, że w vnstat możemy ustawić, które interfejsy mają być przez niego monitorowane (domyślnie nasze główne łącze internetowe oraz sieć lokalna). W przypadku nlbwmon domyślnie monitorowany jest interfejs odpowiadający za sieć lokalną (w to jednak również wlicza się transfer z klientów WireGuard, jeżeli mamy go zainstalowanego wg mojego opisu).
Ogólnie wszystko fajnie, ale brakuje mi tutaj jeszcze czegoś.
Otóż chciałbym wiedzieć, jakie jest aktualne wykorzystanie łącza internetowego. W danej chwili, z jaką prędkością dany użytkownik coś pobiera. Jest to szczególnie ważne na następnym kroku, gdzie będziemy chcieli ograniczyć co niektórych.
OpenWrt teoretycznie posiada wbudowany system monitoringu (Status > Realtime Graphs).
Oprócz graficznych wykresów mamy dostępną zakładkę Realtime Rate, która powinna pokazywać na żywo aktualne wykorzystanie łącza przez poszczególne adresy IP.
W momencie, gdy mamy zebrane informacje odnośnie do tego, komu musimy nałożyć ograniczenia, pora na ich wprowadzenie.
Zarządzanie pasmem i priorytetyzacja
Począwszy od OpenWrt 25.12, pakiet
luci-app-nft-qoszostał oficjalnie porzucony. Do nowoczesnego ograniczania prędkości i priorytetyzacji opartej nanftablesużywamy teraz pakietuluci-app-qosmate.
apk update
apk add luci-app-qosmate
Po instalacji opcja QoSmate pojawi się w menu Sieć.
Priorytetyzacja ruchu (VoIP)
W ustawieniach Prioritization (Priorytetyzacja) możemy zapewnić, że krytyczny ruch sieciowy będzie miał pierwszeństwo przed masowym pobieraniem danych. Jest to niezbędne w środowiskach z wieloma telefonami VoIP; zapobiega to sytuacji, w której przesyłanie dużego pliku powoduje jitter lub opóźnienia w rozmowie głosowej.
Po włączeniu silnika priorytetyzacji można zdefiniować reguły w oparciu o porty lub protokoły. Na przykład można sprawić, by protokół SIP/VoIP (port 5060) był traktowany jako wysoki priorytet, podczas gdy standardowy ruch HTTP (80) lub HTTPS (443) będzie obsługiwany z niższym priorytetem.
Ograniczanie prędkości (kontrola poszczególnych użytkowników)
W zakładce Rate Limiter (Ogranicznik prędkości) możemy narzucić określone limity przepustowości poszczególnym użytkownikom. Aby rozpocząć, należy najpierw zaznaczyć pole Enable (Włącz).
Limity można definiować na podstawie adresów IP lub adresów MAC. W celu uzyskania najlepszych rezultatów zdecydowanie zaleca się przypisanie stałych adresów IP do urządzeń poprzez Sieć > DHCP i DNS > Statyczne dzierżawy. Gwarantuje to, że reguły będą zawsze stosowane do właściwego sprzętu.
Uwaga dotycząca jednostek: Należy zwrócić szczególną uwagę na jednostki używane w konfiguracji. Megabit/s (Mbps) to nie to samo co Megabajt/s (MB/s). Łącze 100 Mbps przekłada się na około 12,5 MB/s. Jeśli nie masz pewności co do wpisywanych wartości, możesz skorzystać z konwertera online.
Zarządzanie statyczne vs. dynamiczne
QoSmate pozwala ustawić domyślną prędkość (Default Rate) dla każdego urządzenia, które nie zostało jawnie wymienione w regułach. Na przykład przy połączeniu 100/100 Mbps można ustawić domyślną wartość dla niezidentyfikowanych gości na 5/5 Mbps, podczas gdy zidentyfikowane stacje robocze otrzymają wyższe limity.
Jedną z mocnych stron nowoczesnego podejścia QoSmate jest dążenie do bardziej sprawiedliwego kolejkowania (“fair queuing”). Podczas gdy nft-qos często opierał się na sztywnym, statycznym “policingu” (który marnuje przepustowość, gdy sieć jest bezczynna), QoSmate ma na celu utrzymanie niskich opóźnień dla wszystkich.
Wyzwanie “dynamiki”
Nadal szukam idealnego rozwiązania “pośredniego” — możliwości utrzymania niskich limitów w okresach wysokiego zapotrzebowania, ale pozwalającego pojedynczemu użytkownikowi na wykorzystanie pełnej dostępnej prędkości, gdy reszta sieci milczy. Ograniczenie użytkownika do 5 Mbps, gdy jest on jedyną osobą w budynku korzystającą z internetu, może być odczuwalne jako zbyt restrykcyjne. W miarę jak będę zgłębiać zaawansowane możliwości QoSmate i jego integrację z SQM (Smart Queue Management), zaktualizuję ten poradnik, jeśli znajdę bardziej elastyczną konfigurację typu “burst”.
Jeśli oprócz monitorowania transferu zależy Ci na monitorowaniu innych parametrów z routerów, niezastąpiony dla Ciebie będzie pakiet
luci-app-statistics. Pakiet ten, wraz z listą modułówapk search collectd-mod, znacznie rozszerzy możliwości naszego urządzenia.
Pozdrawiam.











Komentarze i Reakcje