Sposoby podłączenia się do istniejącej sieci bezprzewodowej
Ostatnia zmiana: 2023-08-07 21:27

W poradniku przedstawiono kilka sposobów na połączenie naszego routera do innej sieci Wi-Fi (którą będę dalej nazywał routerem nadrzędnym). Każdy sposób ma swoje zalety i wady, każde rozwiązanie ma też inne przeznaczenie i zastosowanie. Należy pamiętać o tym że współczesne interfejsy radiowe w routerach i ich sterowniki w większości przypadków pozwalają na pracę interfejsu radiowego jednoczenie jako klient sieci i jako punkt dostępowy, ale taki tryb pracy ma duży wpływ na przepustowość i stabilność rozwiązania. Należy także pamiętać że niektóre sterowniki (np. Atherosa) w przypadku braku połączenia jako klient sieci przełączają radio w tryb wyszukiwania i tym samym wyłączają też w tym czasie tryb AP. Dla urządzeń wyposażonych w wiele anten (MIMO) wszystkie anteny jednocześnie odbierają i nadają sygnały, nie ma możliwości jawnego wydzielenia jednej anteny tylko dla trybu klienta i innej tylko dla trybu AP. Wszystkie pracują jednocześnie jako klient i punkt dostępowy.
W założeniach przyjęto że router nadrzędny o adresie IP 192.168.1.1 rozgłasza sieć o nazwie "domowy-internet", szyfrowany WPA2 z hasłem "12345678", który przydziela adresy przez DHCP z zakresu 192.168.1.0/24. Zakładamy też że konfigurowany router ma jeden interfejs radiowy (radio0). Jeżeli router nadrzędny ma inne dane lub nasz router ma więcej interfejsów radiowych to należy odpowiednio dostosować konfigurację. Rozwiązanie przetestowano na LEDE 17.01 oraz OpenWrt 18.06/19.07

Wspólną cechą tych połączeń jest wymuszenie używania tego samego kanału co ma router nadrzędny oraz straty przepustowości na wifi. Podane przykłady kasują i tworzą jeszcze raz sekcje konfiguracyjne. Jeżeli były w nich jakieś dodatkowe ustawienia należy pamiętać o ich ponownym wpisaniu po zrobieniu konfiguracji. Bieżące ustawienia można zobaczyć wykonując polecenie uci show wireless.

Klient AP

Cechy

- router wykonuje nat
- adresy IP dla klientów przydzielane są przez lokalny router
- klienci wychodzą w świat z adresem routera
- klienci podłączeni do routera mają inną, oddzielną adresację niż ma router nadrzędny
- klienci podłączeni do routera mogą podłączyć się do innych urządzeń za wanem, ale urządzenia za wanu nie mogą się połączyć do klientów (bez odpowiedniego przekierowania/odblokowania firewalla)

Taki typ połączenia wykorzystywany jest często w przypadku tworzenia logicznie wyodrębnionej sieci która korzysta z internetu drogą radiową. Router zapewnia inną adresację, natowanie pakietów, posiada własny firewall, serwer adresów i zabezpieczenia na wanie.

Konfiguracja



    # uci -q del wireless.radio0.disabled
    # uci -q del wireless.@wifi-iface[0]
    # uci add wireless wifi-iface
    # uci set wireless.@wifi-iface[-1].device=radio0
    # uci set wireless.@wifi-iface[-1].ssid="domowy-internet"
    # uci set wireless.@wifi-iface[-1].encryption=psk2
    # uci set wireless.@wifi-iface[-1].key="12345678"
    # uci set wireless.@wifi-iface[-1].mode=sta
    # uci set wireless.@wifi-iface[-1].network=wan
    # uci -q del network.wan
    # uci set network.wan=interface
    # uci set network.wan.proto=dhcp
    # uci set network.lan.ipaddr=192.168.2.1
    # uci commit
    # reboot

Został tu przestawiony interfejs radiowy w tryb STA (klienta sieci), została zmieniona adresacja sieci LAN (ponieważ MUSI być z innej klasy adresowej niż adres przydzielony na WAN). Po podłączeniu komputera kablem do portu lan routera powinien dostać adres 192.168.2.x.

Rozgłaszanie sieci bezprzewodowo

Należy utworzyć AP:


    # uci -q del wireless.@wifi-iface[1]
    # uci add wireless wifi-iface
    # uci set wireless.@wifi-iface[-1].device=radio0
    # uci set wireless.@wifi-iface[-1].ssid="domowy-internet1"
    # uci set wireless.@wifi-iface[-1].encryption=psk2
    # uci set wireless.@wifi-iface[-1].key="12345678"
    # uci set wireless.@wifi-iface[-1].mode=ap
    # uci set wireless.@wifi-iface[-1].network=lan
    # uci commit
    # reboot

Dostęp do routera z lanu

Klient podłączony pod router (przewodowo lub bezprzewodowo) ma bezpośredni dostęp do routera, dostępny jest pod adresem 192.168.2.1 (tak ustawiliśmy), można zalogować się przez ssh lub www (o ile router miał zainstalowany interfejs graficzny).

Dostęp do routera z wanu

Router i klienci są normalnie chronieni przez firewall, więc żeby dostać się do routera należy otworzyć na wanie odpowiedni port. Jeżeli chcemy dostać się do klienta należy zrobić przekierowanie portu.

Most bezprzewodowy

Cechy

- router nie ma natu, nie występuje pojęcie wanu
- adresy IP dla klientów przydzielane są przez router nadrzędny
- klienci wychodzą w świat z własną adresacją
- klienci mają identyczną adresację jak router nadrzędny
- klienci podłączeni do routera mogą podłączyć się do innych urządzeń za siecią bezprzewodową, urządzenia za siecią bezprzewodową mogą połączyć się do klientów (o ile oczywiście klient na to pozwala)
- adres IP na lan w routerze musi być z innej klasy adresowej niż przydzielony adres przez router nadrzędny

Najczęściej ten sposób wykorzystuje się do "przedłużenia" zasięgu istniejącej sieci oraz zapewnienia jednolitej adresacji w obrębie całej sieci lokalnej.

Konfiguracja

Musimy chwilowo podłączyć router do internetu. Można to zrobić po prostu przez kabel lub wykonać w/w konfigurację jako "klienta AP". Instalujemy niezbędne pakiety:


    # opkg update
    # opkg install relayd

Następnie konfigurujemy całość:


    # uci set network.lan.ipaddr='192.168.2.1'
    # uci -q del network.wan
    # uci -q del network.wwan
    # uci set network.wwan=interface
    # uci set network.wwan.proto=dhcp
    # uci -q del network.bridge
    # uci set network.bridge=interface
    # uci set network.bridge.proto=relay
    # uci add_list network.bridge.network="lan"
    # uci add_list network.bridge.network="wwan"
    # uci commit network
    # uci -q del wireless.radio0.disabled
    # uci -q del wireless.@wifi-iface[1]
    # uci -q del wireless.@wifi-iface[0]
    # uci add wireless wifi-iface
    # uci set wireless.@wifi-iface[-1].device=radio0
    # uci set wireless.@wifi-iface[-1].mode=sta
    # uci set wireless.@wifi-iface[-1].ssid="domowy-internet"
    # uci set wireless.@wifi-iface[-1].encryption=psk2
    # uci set wireless.@wifi-iface[-1].key="12345678"
    # uci set wireless.@wifi-iface[-1].network=wwan
    # uci commit wireless
    # uci set dhcp.lan.ignore=1
    # uci commit dhcp
    # uci -q del firewall.@zone[0].network
    # uci add_list firewall.@zone[0].network="lan"
    # uci add_list firewall.@zone[0].network="bridge"
    # uci add_list firewall.@zone[0].network="wwan"
    # uci commit firewall
    # reboot

Ważne jest aby ustawić adres IP na LANie na inny niż otrzymujemy z routera głównego, ustawiamy odpowiednią sieć oraz wyłączamy serwer DHCP. Po podłączeniu komputera kablem do portu lan routera powinien dostać adres 192.168.1.x czyli z adresacji routera nadrzędnego.

Rozgłaszanie sieci bezprzewodowo

Jeżeli chcemy dalej rozgłaszać sieć bezprzewodową należy wykonać konfigurację AP:


    # uci -q del wireless.@wifi-iface[1]
    # uci add wireless wifi-iface
    # uci set wireless.@wifi-iface[-1].device=radio0
    # uci set wireless.@wifi-iface[-1].ssid="domowy-internet1"
    # uci set wireless.@wifi-iface[-1].encryption=psk2
    # uci set wireless.@wifi-iface[-1].key="12345678"
    # uci set wireless.@wifi-iface[-1].mode=ap
    # uci set wireless.@wifi-iface[-1].network=lan
    # uci commit
    # reboot

Możemy rozgłaszać sieć o takiej samej nazwie jak miał router główny lub dowolnej innej, nawet z innym szyfrowaniem i innym kluczem.

Dostęp do routera

Dostęp do routera możliwy jest po ustawienie w nim w konfiguracji adresu IP który otrzymał od routera nadrzędnego. Aby ustawić adres musimy zmienić na chwilę adres IP na karcie sieciowej komputera, podłączyć się kablem do portu lan a następnie zalogować się przez ssh do routera. Wykonanie polecenia ifconfig pokaże interfejsy sieciowe, odszukujemy interfejs wlan0 na którym powinien być adres przydzielony przez router nadrzędny. Ustawiamy ten adres na interfejsie bridge, np.


    # uci set network.bridge.ipaddr=192.168.1.182
    # uci commit network
    # reboot

O ile właśnie takie adres został uzyskany. Adres jaki został przydzielony możemy też sprawdzić w logach routera nadrzędnego. Odłączamy się do routera, zmieniamy znów na DHCP i po podłączeniu się i otrzymaniu adresu z routera nadrzędnego powinniśmy móc dostać się routera na adres ustawiony wcześniej. Można także zautomatyzować ten proces i utworzyć odpowiedni skrypt (np.jako /etc/hotplug.d/iface/99relay) o następującej zawartości:



    [ "$INTERFACE" = wwan ] || exit 0
    [ "$ACTION" = ifup -o "$ACTION" = ifupdate ] || exit 0
    . /lib/functions/network.sh; network_get_ipaddr ip wwan;
    uci set network.bridge.ipaddr=$ip
    uci commit network


WDS

Cechy:
- router nie ma natu, nie występuje pojęcie wanu
- nie działa z każdym typem AP i każdym typem WDS
- klienci wychodzą w świat z własną adresacją
- klienci mają identyczną adresację jak router nadrzędny
- klienci podłączeni do routera mogą podłączyć się do innych urządzeń za siecią bezprzewodową, urządzenia za siecią bezprzewodową mogą połączyć się do klientów (o ile oczywiście klient na to pozwala)
- adresy IP dla klientów przydzielane są przez router nadrzędny
- adres IP na lan w routerze musi być z tej samej klasy adresowej co przydzielony adres przez router nadrzędny

Połączenie wykorzystuje pewną właściwość AP (4-address mode), nie wymaga stosowania dodatkowych pakietów jak przy moście bezprzewodowym ale sposób połączenia silnie zależy od sterowników kart radiowych. Nie każdy sterownik będzie działał z dowolnym innym AP, najczęściej możliwe jest to tylko jeżeli po drugiej stronie mamy także OpenWrt/LEDE.

Konfiguracja



    # uci set network.lan.ipaddr='192.168.1.2'
    # uci set network.lan.netmask='255.255.255.0'
    # uci set network.lan.gateway='192.168.1.1'
    # uci set network.lan.dns='192.168.1.1'
    # uci -q del network.wan
    # uci commit network
    # uci -q del wireless.radio0.disabled
    # uci -q del wireless.@wifi-iface[1]
    # uci -q del wireless.@wifi-iface[0]
    # uci add wireless wifi-iface
    # uci set wireless.@wifi-iface[-1].device=radio0
    # uci set wireless.@wifi-iface[-1].mode=sta
    # uci set wireless.@wifi-iface[-1].ssid="domowy-internet"
    # uci set wireless.@wifi-iface[-1].encryption=psk2
    # uci set wireless.@wifi-iface[-1].key="12345678"
    # uci set wireless.@wifi-iface[-1].network=lan
    # uci set wireless.@wifi-iface[-1].wds=1
    # uci commit wireless
    # uci set dhcp.lan.ignore=1
    # uci commit dhcp
    # reboot

Można pokusić się o ustawienie na lanie proto dhcp o ile mamy pewność że połączenie będzie działało i router dostanie adres IP. Inaczej może być problem z dostaniem się do niego.
Jeżeli na routerze nadrzędnym mamy też OpenWrt lub LEDE to zwykle należy też włączyć na nim wds.

Rozgłaszanie sieci bezprzewodowo

Jeżeli chcemy dalej rozgłaszać sieć bezprzewodową należy wykonać konfigurację AP:


    # uci -q del wireless.@wifi-iface[1]
    # uci add wireless wifi-iface
    # uci set wireless.@wifi-iface[-1].device=radio0
    # uci set wireless.@wifi-iface[-1].ssid="domowy-internet1"
    # uci set wireless.@wifi-iface[-1].encryption=psk2
    # uci set wireless.@wifi-iface[-1].key="12345678"
    # uci set wireless.@wifi-iface[-1].mode=ap
    # uci set wireless.@wifi-iface[-1].network=lan
    # uci commit
    # reboot

Możemy rozgłaszać sieć o takiej samej nazwie jak miał router główny lub dowolnej innej, nawet z innym szyfrowaniem i innym kluczem.

Dostęp do routera

Powinien być dostępny z każdego miejsca sieci pod adresem 192.168.1.2 (w tym przypadku taki adres został ustawiony).

MESH

Kolejnym ze sposobów na połączenie bezprzewodowe routerów jest wykonanie sieci typu MESH (sieć kratowa, oczkowa). W przeciwieństwie do zwykłego modelu AP-STA (jeden AP i wiele klientów podłączonych do niego, model gwiazdy) mamy tu do czynienia z modelem wiele do wielu: każdy router może być podłączony do wielu innych routerów w ramach tej samej sieci MESH.
W tym konkretnym rozwiązaniu sieć MESH zostanie wykorzystana jako sieć transportowa będąca wanem, czyli każdy węzeł sieci działa niezależnie jako router i ma swój adres na wanie. Poniższa konfiguracja sprawia, że routery podłączone są do jednego źródła internetu choć rozsyłanego przez wszystkie dostępne węzły w sieci.

Cechy:
- każdy węzeł sieci jest niezależnym routerem z własnym adresem na wanie
- każdy węzeł sieci rozgłasza swoją sieć bezprzewodową, robi nata i udostępnia serwer dhcp dla swoich klientów
- routery mogą rozgłaszać tą samą sieć, mogą rozgłaszać też sieci o innych nazwach
- klienci dostają adres IP z routera do którego są podłączeni
- nie działa z każdym sterownikiem WiFi

Konfiguracja

Potrzebujemy dowolną ilość routerów które konfigurujemy w taki sam sposób:


    # uci set wireless.radio0.disabled=0
    # uci set wireless.radio0.channel=11
    # uci -q del wireless.@wifi-iface[1]
    # uci -q del wireless.@wifi-iface[0]
    # uci set network.wan.type=bridge
    # uci set network.wan.proto=dhcp
    # uci set wireless.mesh=wifi-iface
    # uci set wireless.mesh.device=radio0
    # uci set wireless.mesh.network=wan
    # uci set wireless.mesh.encryption=none
    # uci set wireless.mesh.disabled=0
    # uci set wireless.mesh.mode=mesh
    # uci set wireless.mesh.mesh_id=meshtest
    # uci set wireless.mesh.mesh_fwding=1
    # uci commit

W takiej konfiguracji każdy węzeł ma taką samą adresację na swoim lanie. Może tak zostać jeżeli klienci bezprzewodowi różnych węzłów nie będą komunikować się miedzy sobą. Jeżeli jest taka potrzeba należy dla każdego węzła zrobić inną adresację lan np.


    # uci set network.lan.ipaddr=192.168.2.1 dla węzła 1

    # uci set network.lan.ipaddr=192.168.3.1 dla węzła 2

    # uci set network.lan.ipaddr=192.168.4.1 dla węzła 3
    itd

Restartujemy całość:


    # reboot

W/w konfiguracja dodaje następny wirtualny interfejs WiFi pracujący w trybie 802.11s (mesh), podłączony jako jeden z interfejsów do bridge WAN.
Jeden z routerów podłączamy normalnie portem wan do źródła z internetem, pozostałe wystarczy podłączyć do zasilania. Każdy powinien rozgłaszać sieć (o takiej samej nazwie lub inne jeżeli tak zostało ustawione), każdy powinien mieć swój adres na wan i z każdego powinien być dostęp do internetu.

Listę routerów do których jesteśmy podłączeni przez sieć MESH można sprawdzić poleceniem (wykonane na określonym routerze):


    # iw dev wlanX station dump
    # iw dev wlanX mpath dump

gdzie wlanX to nazwa interfejsu który został przypisany do sieci MESH, można go wyświetlić poleceniem:


    # wifi status | jsonfilter -e "@.radio0.interfaces[@.section='mesh'].ifname"

Rozgłaszanie sieci bezprzewodowo



    # uci add wireless wifi-iface
    # uci set wireless.@wifi-iface[-1].device=radio0
    # uci set wireless.@wifi-iface[-1].ssid="domowy-internet1"
    # uci set wireless.@wifi-iface[-1].encryption=psk2
    # uci set wireless.@wifi-iface[-1].key="12345678"
    # uci set wireless.@wifi-iface[-1].mode=ap
    # uci set wireless.@wifi-iface[-1].network=lan
    # uci commit
    # reboot

Dostęp do routera z lanu

Klient podłączony pod router (przewodowo lub bezprzewodowo) ma bezpośredni dostęp do routera do którego jest podłączony, dostępny jest pod adresem 192.168.2.1 (tak ustawiliśmy), można zalogować się przez ssh lub www (o ile router miał zainstalowany interfejs graficzny). Dostęp do innych węzłów sieci to "dostęp do routera z wanu".

Dostęp do routera z wanu

Router i klienci są normalnie chronieni przez firewall danego węzła, więc żeby dostać się do routera należy otworzyć na wanie odpowiedni port. Jeżeli chcemy dostać się do innego klienta należy zrobić przekierowanie portu na określonym węźle.

Szyfrowanie MESH

Jeżeli połączenie MESH ma być szyfrowane należy doinstalować odpowiedni pakiet:


    # opkg update
    # opkg remove wpad-mini wpad-basic
    # opkg install wpad-mesh-openssl
    # uci set wireless.mesh.encryption=psk2
    # uci set wireless.mesh.key="12345678"
    # uci commit

Niestety szyfrowanie nie działa z każdym sterownikiem, niektóre sterowniki należy załadować z opcją nohwcrypt lub raw, przy niektórych ustawieniach może też powodować brak transmisji lub crash kernela. Problemem może też być włączenie sieci na tym samym interfejsie ("Rozgłaszanie sieci bezprzewodowo").