1 (edytowany przez zeusdg 2012-08-26 16:18:23)

Temat: TP-Link TL-MR3020 - Tryb AP + Klient

Na wspomnianym TP-Linku chcę odpalić tryb AP oraz Klient.
Zależy mi aby normalnie router pracował w trybie AP, klienci podłączeni tylko przez wifi natomiast internet doprowadzony kablowo lub również przez wifi z innego routera (z naciskiem na ten drugi wariant).
Adres IP dla netu po kablu lub przez wifi klient przydzielany automatycznie z zewnątrz (np. 192.168.10.1), użytkownicy łączący się do sieci po wifi też powinni dostawać "z automatu" adresy po dhcp (z innej puli np. 192.168.1.x).
Próbowałem utworzyć 2 sieci wifi - jedna przypisana do interfejsu WAN (klient) oraz druga do interfejsu LAN (AP) ale niestety nie potrafię tego uruchomić. Kombinowałem z relayd ale niestety również bez powodzenia.
Czy istnieje możliwość uruchomienia takiej konfiguracji na tym routerze? Jeżeli tak to prosiłbym o przykładową konfigurację (wireless, network) do opisywanego przypadku :-)
Pozdrawiam i z góry dziękuję za pomoc.

2

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

W /etc/config/wireless

config wifi-iface
    option device radio0
    option network wan
    option mode sta
    option ssid xxxxxxxx
    option encryption xxxxxxxx
    option key xxxxx

config wifi-iface
    option device radio0
    option network lan
    option mode ap
    option ssid xxxxxxxx
    option encryption xxxxxxxx
    option key xxxxx

W sekcji config wifi-device  radio0 usuwasz linię z disabled. I tyle.

W /etc/config/network dodajesz sobie

config interface 'wan'
    option proto 'dhcp'

I koniecznie restart całego routera. W ten sposób masz klienta podłączonego do ap, Ap i lan razem pracujące jako AP. Adres na wanie MUSI być inny niż z klasy 192.168.1.x, bo inaczej nie będzie działać.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3 (edytowany przez zeusdg 2012-08-26 17:33:06)

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Wcześniej robiłem dokładnie tak jak opisałeś ale nie działa. Przesyłam moje pliki konfiguracyjne.

/etc/config/network

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config interface 'lan'
        option ifname 'eth0'
        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.1.1'
        option netmask '255.255.255.0'

config interface 'wan'
        option proto 'dhcp'

/etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option macaddr 'XX:XX:XX:XX:XX:XX'
        option hwmode '11ng'
        list ht_capab 'SHORT-GI-20'
        list ht_capab 'SHORT-GI-40'
        list ht_capab 'RX-STBC1'
        list ht_capab 'DSSS_CCK-40'
        option channel '2'
        option txpower '18'
        option country 'PL'
        option htmode 'HT40+'

config wifi-iface
        option device 'radio0'
        option network 'wan'
        option mode 'sta'
        option ssid 'XXX'
        option key 'XXX'
        option encryption 'psk2+ccmp'

config wifi-iface
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'XXX'
        option key 'XXX'
        option hidden '1'
        option encryption 'psk2+ccmp'

4

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Tzn nie działa bo? wynik ifconfig, logread pokaż.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Cezary po raz kolejny dziękuję! Naprowadziłeś mnie na rozwiązanie. Problem był prozaiczny, a mianowicie dodatkowy wlan  dostał innego MACa, natomiast na routerze głównym oczywiście miałem filtrowanie klientów po MAC... Początkowo miałem tylko wlan w trybie klient bez ap i właśnie jego MACa wpisałem. Jakoś nie zwróciłem na to uwagi, bardziej skupiałem się na szukaniu innych przyczyn.

6

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Mam jeszcze jedno pytanie w temacie. Zauważyłem, że AP działa tylko w momencie gdy drugi interfejs jest podłączony jako klient. Po utracie sygnału AP przestaje działać. Czy istnieje możliwość takiej konfiguracji, aby AP działał zawsze - tak aby w razie problemów z siecią można się zalogować do routera i sprawdzić co się dzieje lub podłączyć się jako klient do innej sieci? Oczywiście po kablu działa ale zakładam, że nie zawsze będę miał przy sobie urządzenie z możliwością podpięcia kabla :-)

7

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Nie. Deweloperzy twierdzą że to jest nie do rozwiązania obecnie, jeżeli sta padnie to ciągnie ap ze sobą. Jakiś ticket był nawet na to wystawiony, ale bez rozwiązania.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

A może inaczej podejść do tematu. Dało by się napisać skrypt sprawdzający czy jest połączenie jako klient (najlepiej nie generujące ruchu sieciowego), a jeżeli nie ma to wyłączać ten tryb, tak aby pozostał tylko AP działający?

9

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Przecież to linux, więc tak, możesz napisać sobie dowolne takie skrypty.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Niestety moja widza nie jest na ten moment wystarczająca. Zajmuję się tematem stosunkowo od niedawna. A może Ty w wolnej chwili jeżeli oczywiście masz ochotę zająć się tematem wykombinowałbyś takie rozwiązanie? Częściowo rozwiązało by to problem, jak piszesz nie rozwiązany przez Developerów.
Fajnie gdyby taki skrypt nie generował ruchu na wifi w trybie klienta i przy okazji był na tyle elastyczny aby był w stanie ponownie wystartować w przypadku odnowienia utraconego połączenia ale to chyba już będzie problem bo trzeba by co jakiś czas odpalać wyłączone wcześniej wifi klient, a więc byłyby przerwy w pracy AP.
Dlatego myślę, że zupełnie by wystarczyły dwa skrypty - jeden odpalany w cronie sprawdzający czy jest połączenie i jeżeli nie to wyłączający wifi w trybie klienta, natomiast drugi do sprawdzenia czy już jest połączenie i ewentualnie jeżeli jest to ponowne włączający tryb AP + klient (ten skrypt uruchamiany ręcznie).

11

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Tak się nie da. No jak ma sprawdzić czy jest połączenie jak nie ma interfejsu klienta.

Skrypt jest bardzo prosty:

#!/bin/sh
if ! ping -q -c 1 -I wlan0-1 -W 10 192.168.100.100 > /dev/null; then
    (wifi up) &
fi

gdzie:
wlan0-1 to nazwa interfejsu klienta. Zobacz sobie jaki jest u Ciebie
192.168.100.100 - ip jakieś po tej drugiej stronie które ma być pingowane.

A działanie jest proste - na tym konkretnym interfejsie jest puszczany ping. Jak nie ma odpowiedzi - robiony jest restart całego wifi. Możesz z tego zrobić skrypt, nadać mu prawa wykonania i wrzucić jego wywołanie do crona lub wykonywać to z palca.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

12

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

A mógłbyś troszkę ulepszyć ten skrypt? Np tak aby badał czy jest ping i jeżeli brak to następowało by wyłączenie wifi w trybie klienta, a pozostawało by w trybie AP. Po wyłączeniu interfejsu pingowanie już nie powinno występować, czyli jak nie zadziała to następuje wyłączenie i później sam użytkownik ręcznie musi włączyć ponownie (czyli defacto skrypt powinien działać do momentu gdy wszystko jest ok).

13 (edytowany przez zeusdg 2012-08-27 11:40:56)

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Nie wiem czy można by tak zrobić ale mam na myśli następujący scenariusz:
1) sprawdzić w pliku wireless czy interfejs klienta jest disable=0
2) jeżeli disable=1 to wyjście bez zmian
3) jeżeli disable=0 to ping na tym interfejsie
4) jeżeli ping jest ok to wyjście bez zmian
5) jeżeli ping nie odpowiada to zmiana w pliku wireless na disable=1 (na interfejsie klienta) i reset wifi tak aby działał sam AP

14

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Zakładając że sta to druga sekcja:

#!/bin/sh
D=$(uci get wireless.@wifi-iface[1].disabled)
[ "x$D" = "x1" ] && exit 0
if ! ping -q -c 1 -I wlan0-1 -W 10 192.168.100.100 > /dev/null; then
    uci set wireless.@wifi-iface[1].disabled=1
    uci commit wireless
    (wifi up) &
fi

Ładnie myślisz algorytmicznie, więc tylko przekuwaj te myśli na kody...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Dzięki, po powrocie do domu sprawdzę.
W kwestii algorytmów - zajmuję się programowaniem m.in. w C# (ostatnio coraz mniej),  głównie projektuję systemy i kieruję projektami, a więc z algorytmami mam do czynienia na co dzień. Niestety troszkę silniej związany z systemami MS, chociaż  coraz bardziej odkrywam zalety linux (jak widać jeszcze na początku edukacji z tej dziedziny) :-)

16

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Więc dobrze wiesz że przy Twoich umiejętnościach sprowadza się to teraz tylko do składni smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Zgadza się, ale właśnie dzięki Twojej stronie poznałem możliwości OpenWrt, a wiadomo teraz zadziałała wyobraźnia i pojawiają się nowe pomysły co jeszcze fajnego można zrobić ;-)
Kiedyś znalazłem bardzo ciekawą stronę, na której było opisane wykorzystanie tego typu sprzętu w automatyce domu, a konkretniej sterowanie nawadnianiem ogródka w zależności od prognozy pogody, sterowanie piecem CO uwzględniając odczyty temperatury z pomieszczeń, sterowanie roletami, bramą, monitoring z kopią na zewnątrz... Początkowo byłem zaskoczony ale gdy przekonałem się, że przecież OpenWrt to linux (troszkę okrojony ale jednak), a coraz więcej routerów ma USB, dzięki któremu można łatwo sterować czymś podłączonym (np. arduino) możliwości są praktycznie nieograniczone - wystarczy pomysłowość i odrobina umiejętności.
Obecnie z OpenWrt mam już 1043ND z Gargoyle, a teraz dołączył do niego MR3020 :-)

18

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Inteligentny dom, tak pamiętam ten opis.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

19

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Skrypt działa jak należy jedynie trzeba zrobić małą korektę w linii:

D=$(uci set wireless.@wifi-iface[1].disabled)

set zamienić na get, a więc po zmianie powinno być:

D=$(uci get wireless.@wifi-iface[1].disabled)

Jeszcze raz wielkie dzięki Cezary.

20

Odp: TP-Link TL-MR3020 - Tryb AP + Klient

Eee, no tak. get.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.