OpenWRT

Serwer FTP na routerze z OpenWRT (vsftpd)

Usługa FTP jest w miarę wygodnym rozwiązaniem w przypadku, gdy chcemy korzystać z zasobów udostępnianych przez router zarówno na linux'ach jak i na windowsach. Jedyne czego potrzebujemy to kawałek przeglądarki albo jakiegoś klienta FTP. W tym protokole nie ma też znaczenia system plików, w którym znajdują się udostępniane pliki. Jedyne co nas interesuje, to postawienie serwera na routerze i podanie klientom namiarów na niego. W OpenWRT możemy do tego celu zaprzęgnąć vsftpd . W tym wpisie pokażę jedynie jak tego typu usługę uruchomić na domowym routerze WiFi i jak ją wstępnie skonfigurować. Wszelkie kwestie techniczne związane z działaniem samego serwera FTP jak i jego wszystkich parametrów już opisywałem przy okazji wdrażania vsftpd w dystrybucji debian. Zachęcam zatem do zapoznania się również z tym podlinkowanym wpisem.

Stałe nazwy urządzeń w OpenWRT (hotplug, udev)

Bezprzewodowy router WiFi to w miarę proste urządzenie, które w zasadzie realizuje kilka podstawowych aspektów pracy sieci domowej. Wielu użytkownikom jednak jest nieustannie potrzebna jakaś nowa funkcjonalność, której oryginalny firmware producenta nie oferuje. Dlatego też mamy do dyspozycji OpenWRT będący minimalistyczną formą bardziej rozbudowanej dystrybucji linux'a. Może i OpenWRT daje nam możliwość zaawansowanej konfiguracji naszej sieci ale tego typu opcja powoduje też szereg problemów. Chodzi o to, że kernel dynamicznie tworzy nazwy dla wszystkich podłączanych urządzeń do routera. W dużych dystrybucjach linux'a do ogarnięcia tych nazw wykorzystywany jest UDEV. W przypadku OpenWRT też możemy skorzystać tego mechanizmu. Jeśli jednak mamy niewiele miejsca na pamięci flash routera, to możemy też skorzystać ze zdarzeń hotplug. W tym wpisie postaramy się przepisać nazwy pendrive/dysków twardych oraz modemów USB (LTE), tak by ich kolejność podłączania do routera nie stwarzała problemów w konfiguracji.

Most bezprzewodowy w OpenWRT (tryb WDS)

Tryb WDS (Wireless Distribution System) umożliwia stworzenie mostu bezprzewodowego, w którym to nadrzędny AP (Access Point) przekazuje pakiety do klientów WDS. Ci z kolei przesyłają te pakiety dalej do podrzędnych AP. Z reguły routery posiadają funkcję WDS i po jej aktywowaniu, ten drugi AP będzie wzmacniał i rozsyłał otrzymany sygnał dalej w granicach swojego zasięgu. Tryb WDS nie jest jednak standardem i producenci firmware oraz sterowników implementują go inaczej, co przekłada się na problemy z kompatybilnością. Jeśli chcemy korzystać z opcji WDS w OpenWRT, to najlepiej posiadać kilka takich samych urządzeń i dobrze jest mieć na nich wgrane to samo oprogramowanie. W tym wpisie zaprojektujemy sobie taki most bezprzewodowy w oparciu o dwa routery firmy TP-LINK: TL-WDR3600 v1 oraz Archer C7 v2, na których jest wgrany firmware OpenWRT Chaos Calmer 15.05.1 .

Konfiguracja WISP w OpenWRT (tryb STA + AP)

Routery wyposażone w firmware OpenWRT mają tę zaletę, że ich bezprzewodowe karty sieciowe można w miarę dowolnie sobie skonfigurować. Oryginalne oprogramowanie producenta takiego sprzętu zwykle nie umożliwia nam przełączenia kart routera w inny tryb niż AP (Access Point). W OpenWRT możemy ustawić praktycznie dowolny tryb, o ile pozwala na to sterownik karty WiFi. W ten sposób możemy aktywować, np. tryb MONITOR. W tym wpisie jednak będzie nas interesował tryb STA (STATION), czyli postaramy się przełączyć karty WiFi routera w tryb klienta. Jest to bardzo przydatna opcja w przypadku, gdy mamy do czynienia z Wireless Internet Service Provider (WISP), czyli bezprzewodowymi dostawcami internetu.

Karta WiFi w trybie MONITOR w OpenWRT

Routery WiFi, zwłaszcza te na podzespołach firmy Qualcomm, mają zwykle bardzo dobre wsparcie w alternatywnym firmware OpenWRT. Te bezprzewodowe routery posiadają na pokładzie zwykle jedną lub dwie karty WiFi, w zależności od obsługiwanego pasma (2,4 GHz i/lub 5 GHz). Karty tych routerów działają standardowo w trybie AP (Access Point), czyli punktu dostępowego. W taki sposób jesteśmy w stanie bezprzewodowo połączyć szereg urządzeń w sieci domowej z internetem. Niemniej jednak, karta WiFi może pracować w kilku innych trybach. W tym wpisie zobaczymy jak przełączyć kartę WiFi routera w tryb MONITOR.

Router OpenWRT jako serwer i klient RADIUS

Ten poniższy artykuł ma na celu pokazanie w jaki sposób stworzyć infrastrukturę WiFi w oparciu o oprogramowanie freeradius (serwer RADIUS), które zostanie zainstalowane na przykładowym routerze TP-Link Archer C7 v2. Router ma wgrany firmware OpenWRT Chaos Calmer w wersji 15.05.1 (r49294). Zostanie tutaj opisane dokładnie jak wdrożyć protokół WPA2 Enterprise z obsługą trzech metod uwierzytelniania: EAP-TLS, EAP-TTLS oraz PEAP (v0) .

Losowy adres MAC dla WAN w OpenWRT

Na dużych dystrybucjach linux'a adres MAC można zmienić bez problemu. Podobnie sprawa ma się w przypadku automatycznego generowania takiego adresu MAC za każdym razem, gdy chcemy nawiązać połączenie z internetem. W OpenWRT rozwiązanie tego zadania nie jest tak oczywiste jak, np. na debianie, ale też znowu nie jest niemożliwe. W repozytorium OpenWRT mamy dostępny pakiet macchanger . Niemniej jednak, w przypadku routerów o małych pamięciach flash, instalowanie dodatkowych pakietów może nie być dobrym pomysłem. Przydałoby się zatem zaprojektować mechanizm generowania i zmiany adresu MAC interfejsu WAN za każdym razem, gdy będziemy resetować router i to zadanie postaramy się zrealizować w tym artykule.

Statystyki routera w OpenWRT (collectd, rrdtool)

Domowe routery WiFi chodzą zwykle 24 godziny na dobę. Ich moc obliczeniowa, choć zwykle niewielka, czasem się marnuje. Mając router z OpenWRT, możemy przerobić go tak, by zbierał różnego rodzaju dane dla statystyki. Te dane mogą pochodzić z różnych źródeł i nie koniecznie muszą one dotyczyć samego routera. Tego typu funkcjonalność mogą zapewnić nam narzędzia collectd oraz rrdtool . W tym artykule spróbujemy zaprogramować router, by zbierał pewne dane dotyczące połączenia sieciowego. Na podstawie tych informacji będą rysowane wykresy, które następnie będą udostępniane przez serwer uhttpd .

Quality of Service (QoS) w OpenWRT

Wszyscy spotkaliśmy się z sytuacją, w której z bliżej nieokreślonego powodu nie mogliśmy przeglądać stron w internecie. Niby połączenie jest, mamy też dobrej klasy ISP ale net nam muli. W olbrzymiej części przypadków winą można obarczyć sieć Peer to Peer (P2P). Przy nieodpowiedniej konfiguracji klientów tej sieci może dojść do nawiązywania całej masy połączeń w ułamku chwili. W ten sposób nawet jeśli nic aktualnie nie wysyłamy lub nie pobieramy, to i tak te połączenia same w sobie zapychają łącze, no bo przecież nawet puste pakiety w protokołach TCP/UDP zawierają nagłówki, a te już swoje ważą. Gdy sami korzystamy z łącza, to taka sytuacja nie stanowi większego problemu, bo wystarczy odpalić klienta torrent'a w wolnym czasie. Natomiast w przypadku, gdy zachodzi potrzeba wejścia na jakiś serwis www, to możemy zwyczajnie tego klienta wyłączyć. Nie jest to jednak wygodne. Jak zatem wyeliminować problemy związane z siecią P2P? Jeśli na routerze mamy wgrany firmware OpenWRT, to możemy zaimplementować na nim mechanizm QoS (Qality of Service). W ten sposób możemy nadać usługom priorytety. W niniejszym wpisie postaramy się wdrożyć takie rozwiązanie w oparciu o narzędzia iptables oraz tc .

Failover i load balancing w OpenWRT (mwan3)

Może się zdarzyć tak, że będziemy mieli kiedyś dostęp do łącz kilku różnych providerów internetowych. Jeśli chcielibyśmy skorzystać z internetu w takiej sytuacji, to trzeba by się zdecydować na jednego z tych dostępnych ISP. Natomiast łącze pozostałych ISP będzie niewykorzystane w tym danym momencie, a przecie nie za to im płacimy. Jeśli mamy router z OpenWRT i skonfigurowaliśmy przy tym switch tak, by mieć kilka portów WAN, to możemy korzystać z usług wielu ISP w tym samym czasie. Oczywiście, ten mechanizm działa również w przypadku, gdy ISP świadczy nam usługi za pomocą technologi LTE. Trzeba tylko odpowiednio skonfigurować modem USB do pracy na routerze. W tym artykule zostanie opisane narzędzie mwan3, za pomocą którego zaprojektujemy sobie prosty failover (łącze awaryjne) lub load balancing (równoważenie ruchu) mając do wykorzystania dwóch różnych ISP.