wpa_supplicant を使用して Ad-Hoc ネットワークを保護する方法についてサポートが必要です。
オンボード WiFi アダプターを使用して、Raspberry PI 3 間で Ad-Hoc ワイヤレス ネットワークをセットアップしようとしています。
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
上記により、P2P(Ad-Hoc)がサポートされます。
私のネットワーク インターフェイス構成は次のようになります。
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
wpa_supplicant が有効になっていない場合、2 つの異なる Pi (2 つの異なる IP アドレス) で wlan0 を起動でき、正常に動作します。1 つの Pi から別の Pi に ping を実行できます (逆の場合も同様)。
その上で wpa_supplicant を実行しようとすると (両方の Pi で)、動作させることができません。
wpa_supplicant 設定ファイルは次のようになります。
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
}
起動コマンドの出力:
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
その他の詳細:
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
wpa_supplicant を動作させるために何を変更すればよいかご存知ですか?
答え1
ちなみに、P2P は Wi-Fi Direct であり、Ad Hoc とはまったく異なります。Ad Hoc は IBSS のみを指します。この回答の残りの部分では、P2P ではなく IBSS を意味していると想定しています。
IBSS 経由の WPA2-PSK 認証は可能です (IEEE 802.11 標準でその方法が定義されています) が、実装が少し複雑なので、どの程度広くサポートされているかはわかりません。wpa_supplicant がこれをサポートしていなくても驚きません。これは、どちらのデバイスの MAC アドレスが大きいかに基づいて、サプリカントが役割を切り替えて、場合によっては認証者になり、その他の場合には引き続きサプリカントとして機能する必要があるためです。通常、WPA2-PSK 認証者の役割は、AP モードのデバイス上の hostapd によって実行されます。wpa_supplicant に認証者コードが存在するかどうかはわかりません。
40 ビット WEP で Ad Hoc (IBSS) を動作させてみます。動作を確認したら、wpa_supplicant が IBSS 経由の WPA2-PSK をサポートしているかどうか、またその設定方法を調べます。