Kann ein Linux-Computer über eine einzige physische WLAN-Schnittstelle gleichzeitig als drahtloser Client und Zugriffspunkt fungieren?

12

Wenn ich nur eine physische WLAN-Schnittstelle habe, kann etwas gehackt werden, damit es ein Client eines vorhandenen Zugriffspunkts sein und gleichzeitig auch als Zugriffspunkt für andere Clients fungieren kann?

Ich habe einen vorhandenen 802.11g-ADSL-Router und werde einen HTPC mit 802.11n erstellen. Mein Laptop hat auch 802.11n, aber im Moment verbindet er sich nur mit 54 Mbit / s, weil der AP dies unterstützt. Ich möchte, dass der HTPC ein Client meines ADSL-Routers ist, mein Laptop jedoch ein Client des HTPC, sodass das Kopieren von Dateien schneller erfolgt.

Möglich?

Bearbeiten: Natürlich kann ich den HTPC über Ethernet mit dem ADSL-Router verbinden und WLAN auf dem Router deaktivieren, aber wir können diese Option einfach ignorieren. :-)

ThatGraemeGuy
quelle

Antworten:

9

Ich habe das noch nie persönlich gemacht, aber hier sind einige Informationen, um Sie in die richtige Richtung zu bringen.

Aus Protokollsicht ist es definitiv möglich, dass ein einzelnes Funkgerät sowohl als AP als auch als Client-STA fungiert. Es funktioniert am besten (oder ist fast obligatorisch), wenn sich der von Ihnen erstellte AP und der AP, dem Sie als Client beitreten, auf demselben Kanal befinden. Wenn die Funkkarte ständig auf Serviceanfragen umschalten muss, ist dies ein Rezept für verlorene Frames und schreckliche Leistung.

In Bezug auf die Software wird es möglich. Mehrere 802.11-Kartentreiber unter Linux unterstützen das Konzept von VAPs (virtuellen APs), mit denen eine einzelne Karte gleichzeitig als mehrere APs (mehrere SSIDs, sogar BSSIDs) fungieren kann. Unintuitiv bedeutet der Begriff VAP jede Art von virtuellen Schnittstellen auf derselben 802.11-Karte, unabhängig davon, ob sich die virtuelle Schnittstelle im AP-Modus befindet oder nicht. Bei diesen Karten- / Treiberkombinationen können Sie also zwei VAPs erstellen - einen VAP im STA-Modus

Der MadWifi-Treiber für Atheros-basierte Karten unterstützt VAPs. Wenn Ihre 802.11-Karte einen Atheros-Chipsatz verwendet und Sie die richtige Version des MadWifi-Treibers installieren, können Sie Ihre Karte möglicherweise wie folgt für den gleichzeitigen STA + AP-Modus konfigurieren:

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

Beachten Sie, dass dies keine vollständigen Anweisungen zum Einrichten sind, sondern nur ein Versuch, Ihnen den Einstieg zu erleichtern.

Vielleicht möchten Sie Google für etwas wie " wifi vap " für weitere Informationen. Ich habe die obigen Befehle von hier kopiert .

Oh, und einige Mythen: Atheros-Karten sind in Verbrauchermaschinen keine Seltenheit. Sie sind neben Broadcom, Marvell, Intel und Ralink ein wichtiger Akteur bei 802.11-Chipsätzen. Und nur weil ich das Beispiel von MadWifi / Atheros verwendet habe, heißt das nicht, dass es keine Linux-Treiber für die Chips der anderen großen Spieler gibt, die etwas Ähnliches können. Außerdem ist hierfür kein 802.11s erforderlich. Zu sagen, dass Sie 802.11s ausführen müssen, um dies zu tun, ist wie zu sagen, dass Sie das Spanning Tree-Protokoll unterstützen müssen, nur um Frames von einer Schnittstelle an eine andere weiterzuleiten.

Spiff
quelle
Es sieht so aus, als hätte das Board, das ich bekomme, einen Atheros-Chipsatz, also könnte ich Glück haben. Ich warte auf die Lieferung meiner Komponenten, dann kann ich bauen und testen.
ThatGraemeGuy
Ich hatte noch keine Chance mit MadWifi zu spielen. Ich akzeptiere, weil die Antwort richtig ist. Es scheint keinen anderen Chipsatz / keine andere Familie zu geben, die diese Funktionalität bietet.
ThatGraemeGuy
Spiff, ich arbeite mit einem Atheros-Chip und Madwifi und versuche, VAPs einzurichten, eine in sta und eine in ap. Ich kann mehrere VAPs im AP-Modus einrichten, aber wenn ich den ersten VAP in sta einrichte und dann versuche, einen anderen VAP in ap einzurichten, wird wlanconfig: ioctl: Eingabe- / Ausgabefehler angezeigt. Haben Sie eine Idee, wie Sie damit umgehen sollen?
Sachinr
1
@sachinr Stellen Sie das als Frage, damit jeder es sieht, nicht nur als Kommentar zu einer drei Jahre alten Antwort auf die Frage eines anderen.
Spiff
Hey, ich habe meine Frage hier hinzugefügt - superuser.com/questions/649742/… . Kannst du einen Blick darauf werfen? Danke :)
sachinr
4

Der nl80211-Treiber verfügt über den sogenannten "verwalteten" Schnittstellenmodus. Sie können es mit dem Dienstprogramm "iw" wie folgt konfigurieren:

iw phy phy0 interface add wlan1 typ verwaltet

Weitere Informationen hierzu finden Sie unter https://wireless.wiki.kernel.org/en/users/documentation/iw . Phy0 bezieht sich auf das, was Sie in / sys / class / ieee80211 / sehen.

Ich habe auch gesehen, dass der rPI3 etwas Ähnliches tut, aber mit einem schattigeren "__ap" -Schnittstellenmodus . Auf diese Weise erstellt der Benutzer eine zweite Schnittstelle, die nur im AP-Modus ausgeführt wird, und verwendet die ursprüngliche Schnittstelle als Client-Modus.

Unabhängig davon, wie Sie es erkennen (der Treiber muss es offensichtlich unterstützen), benötigen Sie zwei Schnittstellen (vom selben physischen Gerät). Eine Schnittstelle kann einfach wpa_supplicant als Client-Modus ausführen, die andere (AP-Modus) verwendet normalerweise hostapd, um den Accesspoint abzuspielen.

[BEARBEITEN:]

Der Quellcode des iw-Tools macht den schattigen __ap-Modus deutlich:

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

Der __ap-Modus wird in einen Netlink-Typ NL80211_IFTYPE_AP übersetzt. Ich habe das auch getestet und das funktioniert gut. Seltsam, dass das Kernel-Dokumentations-Wiki es jedoch nicht erfüllt.

Arnout
quelle
3

Quelle und weitere Informationen:

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

Kurze Antwort

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

Das Wi-Fi-Gerät muss den AP-Modus unterstützen

Sie benötigen ein nl80211-kompatibles drahtloses Gerät, das den AP-Betriebsmodus unterstützt. Dies kann durch Ausführen des Befehls iw list überprüft werden. Unter dem Block Unterstützte Schnittstellenmodi sollte der AP aufgeführt sein:

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

Drahtloser Client und Software-AP mit einem einzigen Wi-Fi-Gerät

Das Erstellen eines Software-AP ist unabhängig von Ihrer eigenen Netzwerkverbindung (Ethernet, WLAN, ...). Viele drahtlose Geräte unterstützen sogar den gleichzeitigen Betrieb sowohl als AP als auch als drahtloser "Client" gleichzeitig. Mit dieser Funktion können Sie mit einem einzigen drahtlosen Gerät einen Software-AP erstellen, der als "drahtloser Repeater" für ein vorhandenes Netzwerk fungiert. Die Funktion wird im folgenden Abschnitt in der Ausgabe der iw-Liste aufgeführt:

gültige Schnittstellenkombinationen:

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

Die Einschränkung #channels <= 1 bedeutet, dass Ihr Software-AP auf demselben Kanal wie Ihre Wi-Fi-Client-Verbindung arbeiten muss. Siehe die Kanaleinstellung in hostapd.conf unten.

Wenn Sie die Funktion verwenden möchten, müssen Sie möglicherweise zwei separate virtuelle Schnittstellen erstellen, um eine Ethernet-Verbindung zu verwenden. Virtuelle Schnittstellen für ein physisches Gerät wlan0 können wie folgt erstellt werden: Die virtuellen Schnittstellen mit eindeutiger MAC-Adresse werden für die Netzwerkverbindung (wlan0_sta) selbst und für die Software AP / hostapd "Wireless Repeater" erstellt:

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

Aufbau

Das Einrichten eines Zugangspunkts besteht aus zwei Hauptteilen:

  1. Einrichten der Wi-Fi-Verbindungsschicht, damit drahtlose Clients eine Verbindung zum Software-Zugriffspunkt Ihres Computers herstellen und IP-Pakete mit diesem austauschen können.
  2. Einrichten der Netzwerkkonfiguration auf Ihrem Computer, damit IP-Pakete ordnungsgemäß zwischen der eigenen Internetverbindung und den drahtlosen Clients weitergeleitet werden.

Werkzeuge

create_ap

Das Paket create_ap enthält ein Skript, mit dem entweder ein überbrückter oder ein NAT-Zugriffspunkt für die Internetfreigabe erstellt werden kann. Es kombiniert hostapd, dnsmasq und iptables für das gute Funktionieren des Access Points. Die grundlegende Syntax zum Erstellen eines virtuellen NAT-Netzwerks lautet wie folgt:

# create_ap wlan0 eth0 MyAccessPoint MyPassPhrase
Mustafa Candan
quelle
Tolle Antwort, danke!
Iman Akbari