GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kann ein Linux-Rechner über eine einzige physische WLAN-Schnittstelle gleichzeitig sowohl als drahtloser Client als auch als Zugriffspunkt fungieren?

Ich habe das noch nie persönlich gemacht, aber hier sind einige Informationen, die Sie auf den richtigen Weg bringen.

Aus Protokollsicht ist es durchaus möglich, dass ein einzelnes Funkgerät sowohl als AP als auch als Client-STA fungiert. Es funktioniert am besten (oder ist vielleicht fast obligatorisch), wenn sich der AP, den Sie erstellen, und der, dem Sie als Client beitreten, auf demselben Kanal befinden. Wenn die Funkkarte ständig Kanäle für Dienstanforderungen wechseln muss, ist dies ein Rezept für verlorene Frames und eine schreckliche Leistung.

Softwaretechnisch wird es möglich. Mehrere 802.11-Kartentreiber unter Linux unterstützen das Konzept von VAPs (virtuelle APs), wodurch eine einzelne Karte gleichzeitig als mehrere APs (mehrere SSIDs, sogar BSSIDs) fungieren kann. Entgegen der Intuition bezeichnet 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. Auf diesen Karten/Treiber-Kombinationen könnten 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- und 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 aller Dinge sind, sondern nur ein Versuch, Ihnen den Einstieg zu erleichtern.

Vielleicht möchten Sie nach etwas wie "wifi vap" googeln, um weitere Informationen zu erhalten. Ich habe die obigen Befehle von hier kopiert.

Oh, und ein bisschen Mythos:Atheros-Karten sind in Consumer-Geräten keine Seltenheit. Sie sind zusammen mit 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 Player gibt, die Ähnliches können. Außerdem ist 802.11s nicht hierfür erforderlich. Zu sagen, dass Sie dafür 802.11s verwenden müssen, ist wie zu sagen, dass Sie das Spanning Tree Protocol unterstützen müssen, nur um Frames von einer Schnittstelle zur anderen weiterzuleiten.


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

WLAN-Gerät muss 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 AP aufgelistet sein:

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

WLAN-Client und Software-AP mit einem einzigen WLAN-Gerät

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

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 betrieben werden muss; siehe die Kanaleinstellung in hostapd.conf unten.

Wenn Sie die Fähigkeit/das Feature verwenden möchten, weil möglicherweise keine Ethernet-Verbindung verfügbar ist, müssen Sie zwei separate virtuelle Schnittstellen erstellen, um sie zu verwenden. Virtuelle Schnittstellen für ein physikalisches 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

Konfiguration

Das Einrichten eines Zugangspunkts besteht aus zwei Hauptteilen:

  1. Einrichten der Wi-Fi-Verbindungsschicht, damit drahtlose Clients sich mit dem Softwarezugriffspunkt Ihres Computers verbinden und IP-Pakete mit ihm austauschen können.
  2. Einrichten der Netzwerkkonfiguration auf Ihrem Computer, sodass IP-Pakete ordnungsgemäß zwischen seiner eigenen Internetverbindung und den drahtlosen Clients weitergeleitet werden.

Werkzeuge

create_ap

Das Paket create_ap stellt ein Skript bereit, das entweder einen überbrückten oder einen NAT-Zugriffspunkt für die Internetfreigabe erstellen 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

Der nl80211-Treiber hat einen sogenannten "verwalteten" Schnittstellenmodus. Sie können ihn mit dem "iw"-Dienstprogramm wie folgt konfigurieren:

iw phy phy0 interface add wlan1 type managed

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 macht, aber mit einem zwielichtigeren "__ap"-Schnittstellenmodus. Auf diese Weise erstellt der Benutzer eine zweite Schnittstelle, die nur im AP-Modus läuft, und verwendet die anfängliche Schnittstelle als Client-Modus.

Wie auch immer Sie es realisieren (der Treiber muss es natürlich unterstützen), Sie benötigen zwei Schnittstellen (von demselben physischen Gerät). Eine Schnittstelle kann einfach wpa_supplicant als Client-Modus ausführen, die andere (AP-Modus) verwendet normalerweise hostapd, um Accesspoint zu spielen.

[BEARBEITEN:]

Der Quellcode des iw-Tools macht einiges über den zwielichtigen __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 dies auch getestet, und das funktioniert gut. Seltsam, dass das Kernel-Dokumentations-Wiki dies jedoch nicht erwähnt.


Linux
  1. Entfernen von einfachen und doppelten Anführungszeichen in einer Zeichenfolge nur mit Bash / Standard-Linux-Befehlen

  2. Wie kann ich den DIRECTORY_SEPARATOR sowohl für Windows- als auch für Linux-Plattformen definieren?

  3. Verwenden von kbhit() und getch() unter Linux

  4. Welches Dateisystem soll verwendet werden, wenn sowohl Windows als auch Linux verwendet werden?

  5. Wie kann ich überprüfen, welche Ports belegt und welche Ports auf meinem Linux-Rechner frei sind?

Wie Sie Ihr Android-Telefon mit Airdroid von Linux aus drahtlos verwalten, steuern und darauf zugreifen können

Greifen Sie unter Linux mit Xclip und Xsel auf den Inhalt der Zwischenablage zu

So konfigurieren Sie das Netzwerk unter Linux mit Netplan und NMTUI

VMware:So erstellen Sie eine virtuelle Maschine und installieren das Gastbetriebssystem mit dem vSphere-Client

So richten Sie einen Linux-VPN-Server und -Client mit OpenVPN ein

So richten Sie das Linux-iSCSI-Speicherziel und den Remote-Client-Zugriff ein