Ich brauche Hilfe beim Sichern des Ad-hoc-Netzwerks mit wpa_supplicant.
Ich habe versucht, mithilfe des integrierten WLAN-Adapters ein drahtloses Ad-hoc-Netzwerk zwischen Raspberry PIs 3 einzurichten.
pi@raspberrypi3bare:~ $ iw list
Wiphy phy0
max # scan SSIDs: 10
max scan IEs length: 2048 bytes
Retry short limit: 7
Retry long limit: 4
Coverage class: 0 (up to 0m)
Device supports T-DLS.
Supported Ciphers:
* WEP40 (00-0f-ac:1)
* WEP104 (00-0f-ac:5)
* TKIP (00-0f-ac:2)
* CCMP (00-0f-ac:4)
* CMAC (00-0f-ac:6)
Available Antennas: TX 0 RX 0
Supported interface modes:
* IBSS
* managed
* AP
* P2P-client
* P2P-GO
* P2P-device
Band 1:
Capabilities: 0x1020
HT20
Static SM Power Save
RX HT20 SGI
No RX STBC
Max AMSDU length: 3839 bytes
DSSS/CCK HT40
Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
Minimum RX AMPDU time spacing: 16 usec (0x07)
HT TX/RX MCS rate indexes supported: 0-7
Bitrates (non-HT):
* 1.0 Mbps
* 2.0 Mbps (short preamble supported)
* 5.5 Mbps (short preamble supported)
* 11.0 Mbps (short preamble supported)
...
* 54.0 Mbps
Frequencies:
* 2412 MHz [1] (20.0 dBm)
...
* 2472 MHz [13] (20.0 dBm)
* 2484 MHz [14] (disabled)
Supported commands:
* new_interface
* set_interface
* new_key
* start_ap
* join_ibss
* set_pmksa
* del_pmksa
* flush_pmksa
* remain_on_channel
* frame
* set_channel
* tdls_oper
* start_sched_scan
* start_p2p_device
* crit_protocol_start
* crit_protocol_stop
* connect
* disconnect
Supported TX frame types:
* managed: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* P2P-client: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* P2P-GO: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* P2P-device: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
Supported RX frame types:
* managed: 0x40 0xd0
* P2P-client: 0x40 0xd0
* P2P-GO: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
* P2P-device: 0x40 0xd0
software interface modes (can always be added):
valid interface combinations:
* #{ managed } <= 1, #{ P2P-device } <= 1, #{ P2P-client, P2P-GO } <= 1,
total <= 3, #channels <= 2
* #{ managed } <= 1, #{ AP } <= 1, #{ P2P-client } <= 1, #{ P2P-device } <= 1,
total <= 4, #channels <= 1
Demnach wird P2P (Ad-Hoc) unterstützt.
Meine Netzwerkschnittstellenkonfiguration sieht folgendermaßen aus:
auto wlan0
iface wlan0 inet static
address 192.168.0.10
netmask 255.255.255.0
wireless-channel 11
wireless-essid FooBar2
wireless-mode ad-hoc
# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Ohne aktivierten wpa_supplicant kann ich wlan0 auf zwei verschiedenen Pi'es (zwei verschiedene IP-Adressen) starten und es funktioniert einwandfrei. Ich kann einen Pi von einem anderen aus anpingen (und umgekehrt).
Wenn ich versuche, wpa_supplicant darüber auszuführen (auf beiden Pi'es), bekomme ich sie nicht zum Laufen.
Die Konfigurationsdatei wpa_supplicant sieht folgendermaßen aus:
pi@raspberrypi3bare:~ $ sudo cat /etc/wpa_supplicant/wpa_supp.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
ap_scan=2
network={
ssid="FooBar2"
key_mgmt=WPA-PSK
psk=102ea4041e1612cc5905c4b9008f5e9aaebe91d20792ca16ab7754fd137865a8
mode=1
proto=RSN
group=CCMP
pairwise=CCMP
frequency=2462
}
Die Ausgabe des Startbefehls:
pi@raspberrypi3bare:~ $ sudo wpa_supplicant -c /etc/wpa_supplicant/wpa_supp.conf -D nl80211 -i wlan0
Successfully initialized wpa_supplicant
Note: nl80211 driver interface is not designed to be used with ap_scan=2; this can result in connection failures
wlan0: Trying to associate with SSID 'FooBar2'
wlan0: Associated with 7e:6c:29:3d:49:eb
wlan0: CTRL-EVENT-CONNECTED - Connection to 7e:6c:29:3d:49:eb completed [id=0 id_str=]
WMM AC: Missing IEs
wlan0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
pi@raspberrypi3bare:~ $ ping 192.168.0.30
PING 192.168.0.30 (192.168.0.30) 56(84) bytes of data.
From 192.168.0.10 icmp_seq=1 Destination Host Unreachable
Ein paar weitere Einzelheiten:
pi@raspberrypi3bare:~ $ wpa_supplicant -v
wpa_supplicant v2.6
Copyright (c) 2003-2016, Jouni Malinen <[email protected]> and contributors
pi@raspberrypi3bare:~ $ uname -a
Linux raspberrypi3bare 4.4.21-v7+ #911 SMP Thu Sep 15 14:22:38 BST 2016 armv7l GNU/Linux
Irgendeine Idee, was ich ändern könnte, damit wpa_supplicant funktioniert?
Antwort1
Übrigens: P2P ist Wi-Fi Direct, was etwas ganz anderes ist als Ad Hoc. Ad Hoc bezieht sich ausschließlich auf IBSS. Der Rest dieser Antwort geht davon aus, dass Sie IBSS und nicht P2P meinten.
WPA2-PSK-Authentifizierung über IBSS ist möglich (der IEEE 802.11-Standard definiert, wie das geht), aber die Implementierung ist etwas kompliziert, daher bin ich mir nicht sicher, wie weit verbreitet sie ist. Es würde mich nicht überraschen, wenn wpa_supplicant sie nicht unterstützt, da der Supplicant die Rolle wechseln und in einigen Fällen zum Authentifikator werden und in anderen Fällen weiterhin als Supplicant fungieren muss, je nachdem, welches Gerät die höhere MAC-Adresse hat. Normalerweise wird die Rolle des WPA2-PSK-Authentifikators von hostapd auf einem Gerät im AP-Modus übernommen. Ich bin nicht sicher, ob in wpa_supplicant ein Authentifikatorcode vorhanden ist.
Versuchen Sie, Ad Hoc (IBSS) mit 40-Bit-WEP zum Laufen zu bringen. Sobald das funktioniert, prüfen Sie, ob wpa_supplicant WPA2-PSK über IBSS unterstützt und wie Sie es einrichten.