GNU/Linux >> Znalost Linux >  >> Linux

Může počítač se systémem Linux fungovat současně jako bezdrátový klient i přístupový bod pomocí jediného fyzického rozhraní WLAN?

Osobně jsem to ještě nedělal, ale tady je pár informací, které vás nasměrují správným směrem.

Z hlediska protokolu je určitě možné, aby jedno rádio fungovalo jako AP i jako klient STA. Funguje to nejlépe (nebo je to téměř povinné), pokud AP, které vytváříte, a to, ke kterému se připojujete jako klient, jsou na stejném kanálu. To, že rádiová karta musí neustále přepínat kanály na požadavky služby, je recept na ztracené snímky a hrozný výkon.

Softwarově to začíná být možné. Několik ovladačů karet 802.11 v Linuxu podporuje koncept VAP (virtuální AP), který umožňuje, aby jedna karta fungovala jako více AP (více SSID, dokonce i BSSID) současně. V kontraintuitivním smyslu pojem VAP znamená jakýkoli druh virtuálních rozhraní na stejné kartě 802.11, bez ohledu na to, zda je virtuální rozhraní v režimu AP nebo ne. Takže na těchto kombinacích karta/ovladač můžete vytvořit dva VAP - VAP v režimu STA

Ovladač MadWifi pro karty založené na Atheros je ten, který podporuje VAP. Pokud vaše karta 802.11 používá čipovou sadu Atheros a nainstalujete správnou verzi ovladače MadWifi, možná budete moci nakonfigurovat kartu pro současný režim STA + AP nějak takto:

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

Všimněte si, že toto nejsou úplné pokyny pro nastavení všeho, ale pouze pokus, jak začít.

Pro více informací možná budete chtít vyhledat něco jako „wifi vap“ na Googlu. Zkopíroval jsem výše uvedené příkazy odtud.

Jo a trochu boření mýtů:Karty Atheros nejsou ve spotřebitelských počítačích neobvyklé. Jsou hlavním hráčem v čipsetech 802.11 spolu s Broadcom, Marvell, Intel a Ralink. A to, že jsem použil příklad MadWifi/Atheros, neznamená, že pro čipy ostatních velkých hráčů neexistují ovladače pro Linux, které umí něco podobného. Také 802.11s není k tomu potřebné. Říci, že k tomu musíte udělat 802.11s, je jako říkat, že musíte podporovat protokol Spanning Tree, abyste mohli předávat rámce z jednoho rozhraní do druhého.


zdroj a další informace:

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

Krátká odpověď

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

Zařízení Wi-Fi musí podporovat režim AP

Potřebujete bezdrátové zařízení kompatibilní s nl80211, které podporuje provozní režim AP. To lze ověřit spuštěním příkazu iw list, pod blokem Podporované režimy rozhraní by měl být uveden AP:

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

Bezdrátový klient a softwarový přístupový bod s jediným zařízením Wi-Fi

Vytvoření softwarového AP je nezávislé na vašem vlastním síťovém připojení (Ethernet, bezdrátové, ...). Mnoho bezdrátových zařízení dokonce podporuje současný provoz jako AP i jako bezdrátový „klient“ současně. Pomocí této schopnosti můžete vytvořit softwarový AP fungující jako „bezdrátový opakovač“ pro existující síť pomocí jediného bezdrátového zařízení. Schopnost je uvedena v následující části výstupu seznamu iw:

platné kombinace rozhraní:

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

Omezení #channels <=1 znamená, že váš softwarový přístupový bod musí fungovat na stejném kanálu jako připojení vašeho klienta Wi-Fi; viz nastavení kanálu v hostapd.conf níže.

Pokud chcete funkci/funkci používat, možná proto, že není k dispozici ethernetové připojení, musíte pro její použití vytvořit dvě samostatná virtuální rozhraní. Virtuální rozhraní pro fyzické zařízení wlan0 lze vytvořit následovně:Virtuální rozhraní s jedinečnou MAC adresou jsou vytvořena pro samotné síťové připojení (wlan0_sta) a pro softwarový AP/hostapd „wireless repeater“:

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

Konfigurace

Nastavení přístupového bodu se skládá ze dvou hlavních částí:

  1. Nastavení vrstvy připojení Wi-Fi, aby se bezdrátoví klienti mohli přidružit k přístupovému bodu softwaru vašeho počítače a vyměňovat si s ním pakety IP.
  2. Nastavení konfigurace sítě ve vašem počítači tak, aby správně předával pakety IP mezi vlastním internetovým připojením a bezdrátovými klienty.

Nástroje

create_ap

Balíček create_ap poskytuje skript, který může vytvořit buď přemostěný nebo NATovaný přístupový bod pro sdílení internetu. Pro dobré fungování přístupového bodu kombinuje hostapd, dnsmasq a iptables. Základní syntaxe pro vytvoření virtuální sítě NATed je následující:

# create_ap wlan0 eth0 MyAccessPoint MyPassPhrase

Ovladač nl80211 má něco, čemu se říká „spravovaný“ režim rozhraní. Můžete jej nakonfigurovat pomocí nástroje „iw“ takto:

iw rozhraní phy phy0 přidat spravovaný typ wlan1

Více informací o tomto je k dispozici na https://wireless.wiki.kernel.org/en/users/documentation/iw. Phy0 odkazuje na to, co vidíte v /sys/class/ieee80211/.

Také jsem viděl rPI3 dělat něco podobného, ​​ale s stinnějším režimem rozhraní "__ap". Tímto způsobem uživatel vytvoří druhé rozhraní, které běží pouze v režimu AP, a použije počáteční rozhraní jako klientský režim.

Ať už si to uvědomíte jakýmkoli způsobem (ovladač to samozřejmě musí podporovat), budete potřebovat dvě rozhraní (ze stejného fyzického zařízení). Jedno rozhraní může jednoduše spustit wpa_supplicant jako klientský režim, druhé (režim AP) obvykle používá hostapd k přehrávání přístupového bodu.

[EDIT:]

Zdrojový kód nástroje iw objasňuje stínový režim __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;
} 
..

Režim __ap se převádí na typ síťového spojení NL80211_IFTYPE_AP. Toto jsem také testoval a funguje to dobře. Je zvláštní, že wiki dokumentace jádra to nezmiňuje.


Linux
  1. Odstraňování jednoduchých a dvojitých uvozovek v řetězci pouze pomocí bash / standardních příkazů Linuxu

  2. Použití kbhit() a getch() v Linuxu

  3. Jaký souborový systém použít, když používáte Windows i Linux?

  1. Jak mohu zkontrolovat, které porty jsou na mém počítači se systémem Linux obsazené a které volné?

  2. Efektivní vázání kláves pomocí Mac i Linuxu

  3. Jak mohu v Linuxu použít regulární výrazy dopředu a dopředu pomocí funkce find?

  1. Vytvořit bezdrátový přístupový bod a sdílet internetové připojení s Nmcli?

  2. Jak mohu definovat DIRECTORY_SEPARATOR pro platformy Windows i Linux?

  3. RTL8188CUS AP a režim klienta současně s hostapd v Linuxu?