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:
- Einrichten der Wi-Fi-Verbindungsschicht, damit drahtlose Clients sich mit dem Softwarezugriffspunkt Ihres Computers verbinden und IP-Pakete mit ihm austauschen können.
- 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.