Una macchina Linux può agire contemporaneamente come client wireless e access point utilizzando un'unica interfaccia WLAN fisica?


9

Se ho solo 1 interfaccia WLAN fisica, è possibile eseguire alcuni hackery in modo che possa essere un client di un punto di accesso esistente e allo stesso tempo funga da punto di accesso per altri client?

Ho un router ADSL 802.11g esistente e sto costruendo un HTPC che avrà 802.11n. Il mio laptop ha anche 802.11n, ma al momento si connette solo a 54Mbps perché questo è ciò che l'AP supporta. Mi piacerebbe essere in grado di avere l'HTPC come client del mio router ADSL, ma avere il mio laptop come client dell'HTPC, quindi copiare i file in esso sarà più veloce.

Possibile?

Modifica: ovviamente posso collegare l'HTPC al router ADSL usando Ethernet e disabilitare la connessione wifi sul router, ma lascia semplicemente ignorare questa opzione. :-)

Risposte:


7

Non l'ho fatto prima personalmente, ma ecco alcune informazioni per orientarti nella giusta direzione.

Dal punto di vista del protocollo, è sicuramente possibile avere una singola radio funzionante sia come AP che come client STA. Funziona meglio (o forse è quasi obbligatorio) se l'AP che stai creando e quello che stai entrando come client si trovano sullo stesso canale. Avere la scheda radio deve continuare a cambiare canale alle richieste di servizio è una ricetta per i frame persi e le prestazioni terribili.

Dal punto di vista del software, sta diventando possibile. Diversi driver di schede 802.11 su Linux supportano il concetto di VAP (Virtual AP) che consente a una singola scheda di agire come più AP (più SSID, anche BSSID) allo stesso tempo. Contrariamente al termine, il termine VAP ha finito per significare qualsiasi tipo di interfaccia virtuale sulla stessa scheda 802.11, indipendentemente dal fatto che l'interfaccia virtuale sia in modalità AP o meno. Quindi, in queste combo di schede / driver, è possibile creare due VAP: un VAP in modalità STA

Il driver MadWifi per le schede basate su Atheros è uno che supporta i VAP. Se la tua scheda 802.11 utilizza un chipset Atheros e installi la versione corretta del driver MadWifi, potresti configurare la tua scheda per la modalità STA + AP simultanea in questo modo:

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

Si noti che queste non sono istruzioni complete per l'impostazione di tutto, ma solo un tentativo di iniziare.

Potresti volere Google per qualcosa del tipo " wifi vap "per maggiori informazioni. Ho copiato i comandi di cui sopra Qui .

Oh, e alcuni miti che si scatenano: le carte Atheros non sono rare nelle macchine di consumo. Sono uno dei principali attori nei chipset 802.11, insieme a Broadcom, Marvell, Intel e Ralink. E solo perché ho usato l'esempio di MadWifi / Atheros, non significa che non ci siano driver Linux per i chip dei giocatori più importanti che possono fare una cosa simile. Inoltre, lo è 802.11s non richiesto per questo. Dire che devi fare 802.11 per farlo è come dire che devi supportare Spanning Tree Protocol solo per inoltrare i frame da un'interfaccia all'altra.


Sembra che la tavola che ho preso abbia un chipset Atheros, quindi potrei essere fortunato. Sto aspettando la consegna dei miei componenti, quindi posso costruire e testare.
ThatGraemeGuy

Non ho ancora avuto la possibilità di giocare con MadWifi. Accetto perché la risposta è corretta, non sembra esserci nessun altro chipset / famiglia che offre questa funzionalità.
ThatGraemeGuy

Spiff, sto lavorando con un chip Atheros e madwifi e sto provando a configurare i VAP uno in sta e uno in ap. Sono in grado di impostare più VAP in modalità ap, ma quando imposto il primo VAP in sta e quindi provare a configurare un altro VAP in ap, ottengo wlanconfig: ioctl: errore di input / output. Hai qualche idea su come affrontare questo?
sachinr

1
@sachinr Chiedilo come una domanda così tutti lo vedono, non solo un commento su una risposta di tre anni alla domanda di qualcun altro.
Spiff

Ehi, ho aggiunto la mia domanda qui - superuser.com/questions/649742/... . Puoi dare un'occhiata? Grazie :)
sachinr

3

Il driver nl80211 ha qualcosa chiamato la modalità di interfaccia "gestita". Puoi configurarlo usando l'utilità "iw" in questo modo:

iw phy phy0 interface aggiunge il tipo wlan1 gestito

Maggiori informazioni su questo sono disponibili all'indirizzo https://wireless.wiki.kernel.org/en/users/documentation/iw . Phy0 si riferisce a ciò che vedi in / sys / class / ieee80211 /.

Ho anche visto l'rPI3 fare qualcosa di simile, ma con un aspetto più ombreggiato modalità di interfaccia "__ap" . In questo modo l'utente crea una seconda interfaccia che viene eseguita solo in modalità AP e utilizza l'interfaccia iniziale come modalità client.

In qualunque modo tu te ne accorga (ovviamente il driver deve supportarlo), avrai bisogno di due interfacce (dallo stesso dispositivo fisico). Un'interfaccia può semplicemente eseguire wpa_supplicant come modalità client, l'altra (modalità AP) in genere utilizza hostapd per riprodurre l'access point.

[MODIFICARE:]

Il codice sorgente dello strumento iw rende molto chiaro la modalità __ap ombreggiata:

..
} 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;
} 
..

La modalità __ap si traduce in un netlink di tipo NL80211_IFTYPE_AP. Ho anche provato questo, e questo funziona bene. Strano che il wiki della documentazione del kernel non lo faccia però.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.