Czy maszyna z systemem Linux może działać jednocześnie jako klient bezprzewodowy i punkt dostępowy przy użyciu jednego fizycznego interfejsu WLAN?

12

Jeśli mam tylko 1 fizyczny interfejs WLAN, czy można wprowadzić pewne modyfikacje, aby mógł on być klientem istniejącego punktu dostępu i jednocześnie działać jako punkt dostępu dla innych klientów?

Mam istniejący router ADSL 802.11g i zamierzam budować HTPC, który będzie miał 802.11n. Mój laptop ma również 802.11n, ale w tej chwili łączy się tylko z prędkością 54 Mb / s, ponieważ obsługuje to punkt dostępowy. Chciałbym mieć możliwość, aby HTPC był klientem mojego routera ADSL, ale niech mój laptop będzie klientem HTPC, więc kopiowanie plików będzie szybsze.

Możliwy?

Edycja: oczywiście mogę podłączyć HTPC do routera ADSL za pomocą Ethernetu i wyłączyć Wi-Fi na routerze, ale po prostu zignoruj ​​tę opcję. :-)

ThatGraemeGuy
źródło

Odpowiedzi:

9

Nie robiłem tego wcześniej osobiście, ale oto kilka informacji, które pozwolą ci pójść we właściwym kierunku.

Z punktu widzenia protokołu zdecydowanie możliwe jest, aby pojedyncze radio działało zarówno jako AP, jak i STA klienta. Działa najlepiej (a może jest to prawie obowiązkowe), jeśli tworzony punkt dostępu i ten, do którego dołączasz jako klient, działają na tym samym kanale. Posiadanie karty radiowej przez cały czas przełączania kanałów na zgłoszenia serwisowe to przepis na utracone ramki i straszną wydajność.

Pod względem oprogramowania staje się to możliwe. Kilka sterowników kart 802.11 w systemie Linux obsługuje koncepcję VAP (wirtualnych AP), która pozwala jednej karcie działać jako wiele AP (wiele SSID, nawet BSSID) jednocześnie. Wbrew intuicji, pojęcie VAP oznacza dowolny rodzaj wirtualnych interfejsów na tej samej karcie 802.11, niezależnie od tego, czy interfejs wirtualny jest w trybie AP, czy nie. Tak więc w przypadku tych kombinacji kart / sterowników można utworzyć dwa VAP - VAP w trybie STA

Sterownik MadWifi dla kart opartych na Atheros to taki, który obsługuje VAP. Jeśli twoja karta 802.11 korzysta z mikroukładu Atheros i zainstalujesz odpowiednią wersję sterownika MadWifi, być może będziesz mógł skonfigurować swoją kartę do jednoczesnego trybu STA + AP mniej więcej tak:

wlanconfig ath0 create wlandev wifi0 wlanmode sta
wlanconfig ath1 create wlandev wifi0 wlanmode ap

Pamiętaj, że nie są to kompletne instrukcje konfiguracji wszystkiego, ale próba rozpoczęcia pracy.

Możesz poprosić Google o coś takiego jak „ wifi vap ”, aby uzyskać więcej informacji. Skopiowałem powyższe polecenia stąd .

Aha, i niektóre obalenie mitów: karty Atheros nie są rzadkością w komputerach konsumenckich. Są ważnym graczem w chipsetach 802.11, a także Broadcom, Marvell, Intel i Ralink. I tylko dlatego, że użyłem przykładu MadWifi / Atheros, nie oznacza to, że nie ma sterowników Linuksa dla układów innych głównych graczy, które mogłyby zrobić coś podobnego. Ponadto nie jest wymagane 802.11s . Mówienie, że musisz to zrobić w 802.11, to jak mówienie, że musisz obsługiwać protokół Spanning Tree Protocol, aby przekazywać ramki z jednego interfejsu do drugiego.

Spiff
źródło
Wygląda na to, że płyta, którą otrzymuję, ma chipset Atheros, więc mogę mieć szczęście. Czekam na dostawę moich komponentów, potem mogę zbudować i przetestować.
ThatGraemeGuy
Nie miałem jeszcze okazji grać z MadWifi. Zgadzam się, ponieważ odpowiedź jest prawidłowa, wydaje się, że nie ma innego chipsetu / rodziny, która oferowałaby tę funkcjonalność.
ThatGraemeGuy
Spiff, pracuję z układem Atheros i madwifi i próbuję skonfigurować VAP jeden w STA, a drugi w AP. Jestem w stanie skonfigurować wiele VAP w trybie ap, ale kiedy skonfiguruję pierwszy VAP w STA, a następnie spróbuję skonfigurować inny VAP w AP, otrzymuję wlanconfig: ioctl: Błąd wejścia / wyjścia. Czy masz pomysł, jak sobie z tym poradzić?
sachinr
1
@sachinr Zadaj to pytanie, aby wszyscy je widzieli, a nie tylko komentarz do trzyletniej odpowiedzi na pytanie innej osoby.
Spiff
Hej, dodałem tutaj moje pytanie - superuser.com/questions/649742/… . Możesz spojrzeć? Dzięki :)
sachinr 24.09.13
4

Sterownik nl80211 ma tryb zwany „interfejsem zarządzanym”. Możesz go skonfigurować za pomocą narzędzia „iw”:

iw phy phy0 interfejs dodaj zarządzany typ wlan1

Więcej informacji na ten temat jest dostępnych na https://wireless.wiki.kernel.org/en/users/documentation/iw . Phy0 odnosi się do tego, co widzisz w / sys / class / ieee80211 /.

Widziałem też, że rPI3 robi coś podobnego, ale z bardziej zacienionym trybem interfejsu „__ap” . W ten sposób użytkownik tworzy drugi interfejs, który działa tylko w trybie AP i używa początkowego interfejsu jako trybu klienta.

Niezależnie od tego, w jaki sposób sobie to uświadomisz (sterownik oczywiście musi go obsługiwać), potrzebujesz dwóch interfejsów (z tego samego urządzenia fizycznego). Jeden interfejs może po prostu uruchomić wpa_supplicant jako tryb klienta, drugi (tryb AP) zwykle używa hostapd do odtwarzania punktu dostępu.

[EDYTOWAĆ:]

Kod źródłowy narzędzia IW wyjaśnia wyraźnie o podejrzanym trybie __ap:

..
} else if (strcmp(tpstr, "__ap") == 0) {
    *type = NL80211_IFTYPE_AP;
    return 0;
} else if (strcmp(tpstr, "__ap_vlan") == 0) {
    *type = NL80211_IFTYPE_AP_VLAN;
    return 0;
} else if (strcmp(tpstr, "wds") == 0) {
    *type = NL80211_IFTYPE_WDS;
    return 0;
} else if (strcmp(tpstr, "managed") == 0 ||
       strcmp(tpstr, "mgd") == 0 ||
       strcmp(tpstr, "station") == 0) {
    *type = NL80211_IFTYPE_STATION;
    return 0;
} 
..

Tryb __ap tłumaczy się na typ netlink NL80211_IFTYPE_AP. Też to przetestowałem i działa dobrze. Dziwne, że wiki dokumentacji jądra go nie spełnia.

Arnout
źródło
4

źródło i więcej informacji:

https://wiki.archlinux.org/index.php/Software_access_point

Krótka odpowiedź

sudo iw dev wlan0 interface add wlan0_ap type managed
sudo create_ap wlan0_ap wlan0 createap mypassword

Urządzenie Wi-Fi musi obsługiwać tryb AP

Potrzebujesz urządzenia bezprzewodowego zgodnego z nl80211, które obsługuje tryb pracy AP. Można to zweryfikować, uruchamiając polecenie iw list, w bloku Obsługiwane tryby interfejsu powinien znajdować się na liście AP:

...
    Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * WDS
         * monitor
         * mesh point
...

Bezprzewodowy klient i oprogramowanie AP z jednym urządzeniem Wi-Fi

Tworzenie oprogramowania AP jest niezależne od własnego połączenia sieciowego (Ethernet, bezprzewodowy, ...). Wiele urządzeń bezprzewodowych obsługuje nawet jednoczesne działanie zarówno jako AP, jak i jako „klient” bezprzewodowy jednocześnie. Korzystając z tej możliwości, możesz utworzyć oprogramowanie AP działające jako „repeater bezprzewodowy” dla istniejącej sieci, używając pojedynczego urządzenia bezprzewodowego. Możliwości są wymienione w poniższej sekcji danych wyjściowych z listy IW:

prawidłowe kombinacje interfejsów:

$ iw list
...
valid interface combinations:
     * #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
       total <= 3, #channels <= 2
...

Ograniczenie # kanały <= 1 oznacza, że ​​AP oprogramowania musi działać na tym samym kanale, co połączenie klienta Wi-Fi; patrz ustawienie kanału w pliku hostapd.conf poniżej.

Jeśli chcesz skorzystać z tej możliwości / funkcji, być może dlatego, że połączenie Ethernet nie jest dostępne, musisz utworzyć dwa oddzielne interfejsy wirtualne do korzystania z niego. Interfejsy wirtualne dla urządzenia fizycznego wlan0 można utworzyć w następujący sposób: Interfejsy wirtualne z unikalnym adresem MAC są tworzone dla samego połączenia sieciowego (wlan0_sta) i oprogramowania AP / hostapd „repeater bezprzewodowy”:

# iw dev wlan0 interface add wlan0_sta type managed 
# iw dev wlan0 interface add wlan0_ap  type managed

Konfiguracja

Utworzenie punktu dostępu składa się z dwóch głównych części:

  1. Konfigurowanie warstwy łącza Wi-Fi, aby klienci bezprzewodowi mogli skojarzyć się z punktem dostępowym oprogramowania komputera i wymieniać z nim pakiety IP.
  2. Konfigurowanie konfiguracji sieci na komputerze w celu prawidłowego przekazywania pakietów IP między własnym połączeniem internetowym a klientami bezprzewodowymi.

Przybory

create_ap

Pakiet create_ap udostępnia skrypt, który może utworzyć zmostkowany lub NATed punkt dostępu do udostępniania w Internecie. Łączy hostapd, dnsmasq i iptables w celu zapewnienia dobrego funkcjonowania punktu dostępu. Podstawowa składnia do tworzenia sieci wirtualnej NATed jest następująca:

# create_ap wlan0 eth0 MyAccessPoint MyPassPhrase
mustafa candan
źródło
Świetna odpowiedź, dziękuję!
Iman Akbari
Po drugie, jest to świetna odpowiedź, szczególnie jeśli chodzi o ograniczenie kanałów
szalony