Monitoring i ograniczenie transferu w sieci lokalnej na routerze z OpenWrt

Zawarto┼Ť─ç

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.

Sprawdzone w wersji OpenWrt 21.02 oraz OpenWrt 22.03

A wi─Öc zacznijmy od narz─Ödzi do monitoringu naszego ┼é─ůcza.

Monitoring #

W zale┼╝no┼Ťci, jak du┼╝o informacji potrzebujemy, z poziomu routera mo┼╝emy zainstalowa─ç dwa pakiety: luci-app-vnstat lub luci-app-nlbwmon.

luci-app-vnstat #

opkg update
opkg install luci-app-vnstat

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).

OpenWrt VnStat Configuration

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.

OpenWrt VnStat Summary Display

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.

OpenWrt VnStat Top 10 Display

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 #

opkg update
opkg install 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).

OpenWrt nlbwmon Traffic Distribution

W tym z podziałem na protokoły poszczególnych aplikacji (Application Protocols)

OpenWrt nlbwmon Aplication 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. M├│wi─Ö powinna, gdy┼╝ osobi┼Ťcie otrzymujemy komunikat “Collecting data…” i nic wi─Öcej.

OpenWrt Realtime Rate

Na szcz─Ö┼Ťcie, aby uzupe┼éni─ç powy┼╝sz─ů luk─Ö, mo┼╝emy pos┼éu┼╝y─ç si─Ö dodatkowym pakietem luci-wrtbwmon. Dzi─Öki niemu otrzymamy dodatkow─ů zak┼éadk─Ö Usage w sekcji Network, kt├│ra wy┼Ťwietli nam to, co Realtime Rate powinno, czyli wykorzystanie naszego ┼é─ůcza przez poszczeg├│lne urz─ůdzenia w sieci.

OpenWrt luci-wrtbwmon Usage Details

Instalacja powy┼╝szego pakietu (oraz pakietu podstawowego wrtbwmon) opisana jest tutaj a odbywa si─Ö z poziomu terminala naszego routera.

Nim to jednak zrobisz, przeczytaj aktualizację na samym końcu wpisu.


W momencie, gdy mamy zebrane informacje odno┼Ťnie do tego, komu musimy na┼éo┼╝y─ç ograniczenia, pora na ich wprowadzenie.

Ograniczenia #

opkg update
opkg install luci-app-nft-qos

Do tego celu posłużymy się pakietem luci-app-nft-qos.

Po jego zainstalowaniu otrzymamy opcj─Ö Qos over Nftables w menu Services.

W zak┼éadce Limit Rate mo┼╝emy na┼éo┼╝y─ç limity na poszczeg├│lnych u┼╝ytkownik├│w, natomiast w Traffic Priority mo┼╝emy ustawi─ç, kt├│ry ruch w naszej sieci powinien mie─ç pierwsze┼ästwo przed innym. Jest to szczeg├│lnie wa┼╝ne w ┼Ťrodowisku, w kt├│rym mamy do sieci pod┼é─ůczone kilka telefon├│w VoIP. Nie chcieliby┼Ťmy mie─ç sytuacji op├│┼║nionej rozmowy, podczas gdy kto┼Ť w sieci zacznie ┼Ťci─ůga─ç jaki┼Ť du┼╝y plik.

Po w┼é─ůczeniu (Enable Traffic Priority) i zaakceptowaniu zmian uka┼╝─ů si─Ö dodatkowe opcje, w kt├│rych mo┼╝emy sprecyzowa─ç to, co dla nasz, w naszej sieci, jest wa┼╝ne. Np. protok├│┼é SIP/VoIP na porcie 5060, ┼╝eby mia┼é pierwsze┼ästwo przed ruchem HTTP(80)/HTTPS(443).

OpenWrt Qos over Nftables Traffic Priority Traffic Priority Settings

Po kliknięciu Limit Enable w zakładce Limit Rate od razu otrzymamy kilka opcji do skonfigurowania.

Na pocz─ůtku musimy zdecydowa─ç, jak nasz transfer b─Ödzie zarz─ůdzany (Limit type). Czy w spos├│b statyczny (Static) czy dynamiczny (Dynamic)

W dalszej cz─Ö┼Ťci mo┼╝emy wykluczy─ç poszczeg├│lnych u┼╝ytkownik├│w (tutaj zalecane jest przypisanie u┼╝ytkownikom w sieci sta┼éych adres├│w IP, aby mo┼╝na by┼éo ich lepie zarz─ůdza─ç: Network > DHCP and DNS > Static Leases).

Tutaj nale┼╝y zwr├│ci─ç uwag─Ö na jednostki. Megabit/s to nie to samo co Megabyte/s. ┼ü─ůcze 100Mbps (100 Megabit/s) to inaczej ~12.5MB/s (Megabyte/s). Google, odpowiednio zapytane, bezpo┼Ťrednio z pola wyszukiwarki mo┼╝e nam przeliczy─ç jedn─ů jednostk─Ö na drug─ů.

W przypadku statycznego zarz─ůdzania ┼é─ůczem otrzymamy dodatkowe opcje, kt├│re mo┼╝emy przypisa─ç zidentyfikowanym u┼╝ytkownikom, pozostawiaj─ůc wszystkich innych z domy┼Ťlnymi opcjami (Default Rate).

OpenWrt Qos over Nftables Limit Rate Static Rates

Osobi┼Ťcie, przy pracowym ┼é─ůczy 100/100, ka┼╝dy niezidentyfikowany u┼╝ytkownik otrzymuje 5/5 przy tym ci, co s─ů zidentyfikowani, maj─ů dost─Öpne inne limity.

Brakuje mi jednak czego┼Ť po┼Ťredniego, a co b─Öd─Ö szuka┼é i jak znajd─Ö, to napisz─Ö. Mianowicie, chcia┼ébym mie─ç mo┼╝liwo┼Ť─ç dolnego limitu dla u┼╝ytkownik├│w w momencie, gdy jest du┼╝e zapotrzebowanie, jednak┼╝e w przypadku gdy w sieci jest spokojnie, przypisa─ç ca┼éy dost─Öpny transfer dynamicznie. Troche g┼éupio jest nak┼éada─ç limit 5Mbps na u┼╝ytkownika, gdy w sieci nikt inny nie u┼╝ywa internetu.

Zobaczymy, mo┼╝e znajd─Ö co┼Ť lepszego.

Je┼╝eli zale┼╝y ci, opr├│cz monitoringu transferu nad monitorowaniem innych parametr├│w z routers, pakiet luci-app-statistics b─Ödzie dla ciebie nieodzowny. Pakiet ten, wraz z list─ů modu┼é├│w opkg list | grep collectd-mod znacz─ůco rozszerzy mo┼╝liwo┼Ťci naszego urz─ůdzenia.

Aktualizacja #

Jak wspomnia┼éem na pocz─ůtku, gdzie Status > Realtime Graphs > Rate nie spe┼énia┼é swojego zadania, gdy┼╝ wy┼Ťwietla┼é jedynie komunikat “Collecting dataÔÇŽ”.

Ot├│┼╝ zainstalowanie pakietu luci-app-nft-qos pozwala magicznie doda─ç t─Ö funkcjonalno┼Ť─ç i w zak┼éadce Rate zobaczymy nasze dane na ┼╝ywo.

Je┼╝eli nie widzimy jakiejkolwiek z powy┼╝szych opcji po zalogowaniu, wylogujmy si─Ö i loguj─ůc si─Ö na nasz router przez SSH wykonajmy komend─Ö rm /tmp/luci-indexcache* w celu opr├│┼╝nienia pami─Öci podr─Öcznej.

Usuni─Öcie tego pakietu powoduje ca┼ékowit─ů utrat─Ö tej zak┼éadki. Wygl─ůda na to, ┼╝e na jakim┼Ť etapie mojej pracy z OpenWrt, jaki┼Ť element nale┼╝─ůcy do powy┼╝szego pakietu zosta┼é zainstalowany, ale nie dzia┼éa┼é prawid┼éowo, dlatego te┼╝ moja zak┼éadka Rate wy┼Ťwietla┼éa komunikat “Collecting dataÔÇŽ”. Teraz wszystko dzia┼éa i nie ma potrzeby r─Öcznego instalowania zewn─Ötrznych pakiet├│w.

Pozdrawiam.

Komentarze