Чи може машина Linux працювати одночасно як бездротовим клієнтом, так і точкою доступу, використовуючи єдиний фізичний інтерфейс WLAN?


12

Якщо у мене є лише один фізичний інтерфейс WLAN, чи можна зробити такий хакер, щоб він міг бути клієнтом існуючої точки доступу і в той же час діяв як точка доступу для інших клієнтів?

У мене є існуючий 802.11g маршрутизатор ADSL, і я буду створювати HTPC, який матиме 802.11n. Мій ноутбук також має 802.11n, але на даний момент він підключається лише зі швидкістю 54 Мбіт / с, тому що це підтримує AP. Я хотів би мати можливість HTPC бути клієнтом мого маршрутизатора ADSL, але щоб мій ноутбук був клієнтом HTPC, тому копіювання файлів на нього буде швидше.

Можливо?

Редагувати: очевидно, я можу підключити HTPC до маршрутизатора ADSL за допомогою Ethernet та відключити Wi-Fi на роутері, але дозволяє просто ігнорувати цю опцію. :-)

Відповіді:


9

Я раніше цього не робив особисто, але ось деякі відомості, щоб направити вас у правильному напрямку.

З точки зору протоколу, однозначне радіо може працювати як AP, так і клієнтський STA. Найкраще це виходить (або, можливо, є майже обов'язковим), якщо додаток, який ви створюєте, і той, до якого ви приєднуєтесь як клієнт, перебуваєте на одному каналі. Наявність радіокарти має продовжувати перемикати канали на сервісні запити - це рецепт втрачених кадрів та жахливої ​​продуктивності.

Програмне забезпечення - це стає можливим. Кілька драйверів карт 802.11 в Linux підтримують концепцію VAP (віртуальних AP), яка дозволяє одній картці одночасно діяти як кілька AP (декілька SSID, навіть BSSID). Протирічливо, термін VAP означає будь-який вид віртуальних інтерфейсів на одній і тій же карті 802.11, незалежно від того, перебуває віртуальний інтерфейс у режимі AP чи ні. Таким чином, на цих комбо-картах / драйверах ви можете створити два VAP-програми - VAP-режим VA

Драйвер MadWifi для карт на базі Atheros - це підтримка VAP. Якщо на вашій карті 802.11 використовується чіпсет Atheros, і ви встановлюєте правильну версію драйвера MadWifi, можливо, ви зможете налаштувати свою карту для одночасного режиму STA + AP приблизно так:

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

Зауважте, що це не повна інструкція щодо налаштування всього, а лише спроба розпочати роботу.

Ви можете скористатися Google для отримання додаткової інформації як " wifi vap ". Я скопіював вищезгадані команди звідси .

Ну, і про міф, який розрушується: картки Atheros не рідкість у споживчих машинах. Вони є головним гравцем 802.11 чіпсетів, поряд з Broadcom, Marvell, Intel та Ralink. І тільки тому, що я використав приклад MadWifi / Atheros, це не означає, що для інших основних чіпів гравців Linux не існує драйверів Linux, які можуть зробити подібне. Також 802.11s для цього не потрібно. Скажіть, що для цього потрібно виконати 802.11s - це як сказати, що вам потрібно підтримувати протокол Spanning Tree просто для пересилання кадрів з одного інтерфейсу в інший.


Схоже, на платі, яку я отримую, є чіпсет Atheros, тому я можу пощастити. Я чекаю доставки моїх компонентів, тоді можу скласти і протестувати.
ThatGraemeGuy

У мене ще не було шансів грати з MadWifi. Я приймаю, оскільки відповідь правильна, схоже, немає жодного іншого чіпсета / сімейства, який би пропонував цю функціональність.
ThatGraemeGuy

Spiff, я працюю з чіпом Atheros і madwifi, і я намагаюся налаштувати VAP один в sta і один в ap. Я можу налаштувати кілька VAP в режимі ap, але коли я встановив перший VAP в стані, а потім спробую встановити інший VAP в ap, я отримую wlanconfig: ioctl: помилка вводу / виводу. Чи маєте ви ідею, як з цим боротися?
sachinr

1
@sachinr Задайте це як запитання, щоб усі бачили це, а не просто коментар до трирічної відповіді на чуже запитання.
Spiff

Привіт, тут я додав своє запитання - superuser.com/questions/649742/… . Ви можете подивитися? Дякую :)
sachinr

4

Драйвер nl80211 має щось, що називається "керований" режим інтерфейсу. Ви можете налаштувати його за допомогою утиліти "iw", наприклад:

iw phy phy0 інтерфейс додати тип wlan1 керується

Більше інформації про це можна отримати на веб-сторінці https://wireless.wiki.kernel.org/en/users/documentation/iw . Phy0 посилається на те, що ви бачите в / sys / class / ieee80211 /.

Я також бачив, як rPI3 робить щось подібне, але з більш тінистим режимом інтерфейсу "__ap" . Таким чином користувач створює другий інтерфейс, який працює лише в режимі AP, і використовує початковий інтерфейс як клієнтський режим.

Яким би способом ви це не усвідомили (водій, очевидно, повинен підтримувати його), вам знадобляться два інтерфейси (від одного фізичного пристрою). Один інтерфейс може просто запускати wpa_supplicant як клієнтський режим, інший (режим AP) зазвичай використовує hostapd для відтворення точки доступу.

[EDIT:]

Вихідний код інструменту iw дає чітке уявлення про тінистий режим __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;
} 
..

Режим __ap перекладається на тип мережі NL80211_IFTYPE_AP. Я також тестував це, і це прекрасно працює. Дивно, що у вікі документації на ядро ​​це не згадується.


4

джерело та додаткова інформація:

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

Коротка відповідь

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

Пристрій Wi-Fi повинен підтримувати режим AP

Вам потрібен бездротовий пристрій nl80211, який підтримує режим роботи AP. Це можна перевірити, запустивши команду iw list, у блоці підтримуваних режимів інтерфейсу має бути вказано AP:

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

AP бездротовий клієнт та програмне забезпечення з одним пристроєм Wi-Fi

Створення програмного забезпечення AP не залежить від вашого власного мережевого з'єднання (Ethernet, бездротовий зв'язок, ...). Багато бездротових пристроїв підтримують одночасну роботу як AP, так і як бездротовий "клієнт" одночасно. За допомогою цієї можливості ви можете створити програмне забезпечення AP, яке виступає як "бездротовий ретранслятор" для існуючої мережі, використовуючи один бездротовий пристрій. Можливість вказана у наступному розділі у висновку iw списку:

дійсні комбінації інтерфейсів:

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

Обмеження #channels <= 1 означає, що ваша програмна AP повинна працювати на тому ж каналі, що і підключення до вашого Wi-Fi клієнта; дивіться налаштування каналу в hostapd.conf нижче.

Якщо ви хочете використовувати можливості / функції, можливо, через те, що з'єднання Ethernet недоступне, вам потрібно створити два окремих віртуальних інтерфейси для його використання. Віртуальні інтерфейси для фізичного пристрою wlan0 можна створити наступним чином: Віртуальні інтерфейси з унікальною MAC-адресою створюються для самого мережевого з'єднання (wlan0_sta) і для програмного забезпечення AP / hostapd "бездротовий ретранслятор":

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

Конфігурація

Налаштування точки доступу складається з двох основних частин:

  1. Налаштування шару зв'язку Wi-Fi, щоб бездротові клієнти могли асоціюватися з точкою доступу до програмного забезпечення вашого комп'ютера та обмінюватися з ним IP-пакетами.
  2. Налаштування мережевої конфігурації на вашому комп’ютері, щоб вона належним чином ретранслювала IP-пакети між власним підключенням до Інтернету та бездротовими клієнтами.

Інструменти

create_ap

Пакет create_ap надає сценарій, який може створити мост або NATED точку доступу для обміну в Інтернеті. Він поєднує hostapd, dnsmasq та iptables для гарного функціонування точки доступу. Основний синтаксис створення NATED віртуальної мережі полягає в наступному:

# create_ap wlan0 eth0 MyAccessPoint MyPassPhrase

Чудова відповідь, дякую!
Іман Акбарі

По-друге, це чудова відповідь, особливо про обмеження каналів
crazystick
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.