hostapd(APモード)の使い方

hostapdとは

前回は、hostapのwpa_supplicant(clientモード)の使い方について説明しました。

今回は、hostapd(APモード)の使い方について説明したいと思います。

 

hostapdは、無線LANデバイスをAP/認証サーバーとして機能させるためのオープンソースソフトウェアです。

wpa_supplicant同様、様々なOSやドライバに対応しており、ユーザーインターフェースもCUI/GUIに対応しています。

環境

今回、使用する環境はUbuntu16.04+Kernel4.9.11+QCA9377(Qualcomm Wireless LAN製品)の組み合わせになります。

hostapdの基本的な使い方

hostapdは、動作させるAPもしくは認証サーバーの情報を設定することでAP/認証サーバーとして動作します。

hostapdは、ユーザーインターフェース(CUI/GUI)で操作することが可能です。

あらかじめ、hostapd.confファイルに設定情報を書いておくことで、hostapdを起動するだけでAP/認証サーバーとして動作します。

ユーザーインターフェースを使用することで、接続中のClientデバイスを切断させたり、WPSを開始させたり、動的な処理が可能になります。

hostapdの設定・起動

まず、hostapdの設定ファイルを準備します。

今回はAPとして起動する際に設定するパラメーターを説明しながら進めます。

以下、設定ファイル(hostapd.conf(名前は任意))の中身になります。

wpa_supplicant.confとは異なり、APの設定は動的に変更できないため書いておく必要があります。

以下の例は、WPA2-PSK/WPA3-SAEのAPの設定になります。(WPS対応)

WPA3-SAE対応のClientデバイスはWPA3-SAEで、WPA3-SAEに対応しておらずWPA2-PSKに対応しているClientデバイスはWPA2-PSKで接続可能な設定です。

wpa_supplicant同様設定していないパラメーターについては、デフォルト値が適用されるものがあります。

interface=wlan0
driver=nl80211
ctrl_interface=/var/run/hostapd
country_code=JP
ssid=test
channel=1 <= APのチャネルをch1に指定します。0にした場合サポートしていればACSが動作します。(CONFIG_ACSを有効にしてhostapdをビルドします)
hw_mode=g <= Phyモードを11gに指定します。
ieee80211n=1 <= 11nを有効にします。
wpa=2 <= WPA2/3を有効化します。(wpa=1はWPA)
wpa_key_mgmt=SAE WPA-PSK <= 対応するkey_mgmtです。(複数サポートする場合は半角スペースで分けます)
wpa_passphrase=12345678 <= パスワード(PSK)をセットします。
auth_algs=1 <= WEPでなければ’1’です。
wpa_pairwise=CCMP
group_cipher=CCMP
ieee80211w=1 <= SAEに対応する場合1/2が必要になります。(1:Optional,2:Mandatory) ※2にするとPMFを有効化していないWPA2デバイスが接続できなくなります。
ここから下の設定はWPS用です。
eap_server=1 <= WPS処理用のInternalRADIUSサーバーを有効にします。
wps_state=2
config_methods=virtual_push_button <= PBCを有効にします。
これは最低限ツようなパラメーターになります。デバイス名など相手に渡すことが可能なパラメーターオプションがいくつかあります。
以下のパラメーターでMACアドレスのフィルタリングが可能です。
macaddr_acl=0 <= 0:accept_mac_fileに記載のあるデバイスのみ接続を許可します。1:deny_mac_fileに記載のあるデバイス以外のデバイスの接続を許可します。
accept_mac_file=/etc/hostapd.accept <= 接続を許可するデバイスのMACアドレスを記載します。
#deny_mac_file=/etc/hostapd.deny <= 接続を拒否するデバイスのMACアドレスを記載します。

以下のコマンドでhostapdを起動します。

hostapd hostapd.conf &

test@test-ThinkPad-T430:~# ./hostapd ./hostapd.conf &
test@test-ThinkPad-T430:~# rfkill: Cannot open RFKILL contro[   96.249484] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
l device
[   96.258172] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
wlan0: interface state UNINITIALIZED->COUNTRY_UPDATE
random: Only 11/20 bytes of strong random data available
random: Not enough entropy pool available for secure operations
WPA: Not enough entropy in random pool for secure operations - update keys later when the first station connects
Device is trying to offload WPS Probe Response while not supporting this
[   96.298691] DEBUGFS PEER MAC = 0x66:0x55:0x44:0x33:0x22:0x11
[   96.423291] TXRX: Couldn't find peer from ID 13 - skipping security inits
wlan0: interface state COUNTRY_UPDATE->ENABLED
wlan0: AP-ENABLED
wlan0: IEEE 802.11 driver had channel switch: freq=2412, ht=1, vht_ch=0x0, he_ch=0x0, offset=0, width=1 (20 MHz), cf1=2412, cf2=0
wlan0: CTRL-EVENT-CHANNEL-SWITCH freq=2412 ht_enabled=1 ch_offset=0 ch_width=20 MHz cf1=2412 cf2=0 dfs=0
wlan0: AP-CSA-FINISHED freq=2412 dfs=0

“AP-ENABLED”が表示されれば起動成功です。

この時点で、ClientデバイスからAPが見つかり接続可能になっています。

wlan0: STA 36:29:44:b3:09:28 IEEE 802.11: associated
[13014.665300] TXRX: Couldn't find peer from ID 13 - skipping security inits
wlan0: AP-STA-CONNECTED 11:22:33:44:55:66
wlan0: STA 11:22:33:44:55:66 RADIUS: starting accounting session 92BBDCD2D27E1BC8
wlan0: STA 11:22:33:44:55:66 WPA: pairwise key handshake completed (RSN)
wlan0: EAPOL-4WAY-HS-COMPLETED 11:22:33:44:55:66

Clientデバイスから接続するとこのようなログが出力されます。
Associate成功時点で“AP-STA-CONNECTED”が、4way handshake成功時点で“EAPOL-4WAY-HS-COMPLETED”が表示されます。
以降は、IPを固定もしくはdhcpサーバーを起動して割り当てれば通信できるようになります。

制御用コマンド

hostapd_cliをインタラクティブモードで起動します。

hostapd_cli -iwlan0 -p/var/run/hostapd

 

AP起動後に使用する主なコマンドを記載します。

list_sta:接続中のclientデバイスを表示します。

deauthenticate/disassociate <Macアドレス(ff:ff:ff:ff:ff:ffですべて)>:対象MACもしくはすべてのデバイスを切断します。

chan_switch <チャネルスイッチを実行するまでのbeaconカウント> <移動先のfreq>:チャネルスイッチを実行します。

wps_pbc:WPSをPBCモードで待ち受けます。

> list_sta
66:55:44:33:22:11

deauthenticate/disassociate <Macアドレス(ff:ff:ff:ff:ff:ffですべて)>:対象MACもしくはすべてのデバイスを切断します。

> deauthenticate 66:55:44:33:22:11
wlan0: AP-STA-DISCONNECTED 66:55:44:33:22:11
<3>AP-STA-DISCONNECTED 66:55:44:33:22:11
OK
> wlan0: STA 66:55:44:33:22:11 IEEE 802.11: disassociated
> deauthenticate ff:ff:ff:ff:ff:ff
wlan0: AP-STA-DISCONNECTED 11:22:33:44:55:66
<3>AP-STA-DISCONNECTED 11:22:33:44:55:66
wlan0: AP-STA-DISCONNECTED 66:55:44:33:22:11
<3>AP-STA-DISCONNECTED 66:55:44:33:22:11
> disassociate ff:ff:ff:ff:ff:ff
wlan0: AP-STA-DISCONNECTED 11:22:33:44:55:66
<3>AP-STA-DISCONNECTED 11:22:33:44:55:66
wlan0: AP-STA-DISCONNECTED 66:55:44:33:22:11
<3>AP-STA-DISCONNECTED 66:55:44:33:22:11
wlan0: STA 11:22:33:44:55:66 IEEE 802.11: disassociated
OK
wlan0: STA 66:55:44:33:22:11 IEEE 802.11: disassociated

chan_switch <チャネルスイッチを実行するまでのbeaconカウント> <移動先のfreq>:チャネルスイッチを実行します。

>chan_switch 5 2417
wlan0: IEEE 802.11 CHAN_SWITCH HE config 0x2 VHT config 0x2
OK
> wlan0: IEEE 802.11 driver had channel switch: freq=2417, ht=1, vht_ch=0x2, he_ch=0x2, offset=0, width=1 (20 MHz), cf1=2417, cf2=0
wlan0: CTRL-EVENT-CHANNEL-SWITCH freq=2417 ht_enabled=1 ch_offset=0 ch_width=20 MHz cf1=2417 cf2=0 dfs=0
Device is trying to offload WPS Probe Response while not supporting this
<3>CTRL-EVENT-CHANNEL-SWITCH freq=2417 ht_enabled=1 ch_offset=0 ch_width=20 MHz cf1=2417 cf2=0 dfs=0
wlan0: AP-CSA-FINISHED freq=2417 dfs=0
<3>AP-CSA-FINISHED freq=2417 dfs=0

wps_pbc:WPSをPBCモードで待ち受けます。

ClientデバイスでPBCを実行するとWPSを使用して接続します。

> wps_pbc
Device is trying to offload WPS Probe Response while not supporting this
wlan0: WPS-PBC-ACTIVE
<3>WPS-PBC-ACTIVE
OK
> <3>WPS-ENROLLEE-SEEN 66:55:44:33:22:11 a00c1d3d-c455-5e48-8cde-e4c00922335f 10-0050F204-5 0x4288 4 1 [bullhead]
wlan0: STA 66:55:44:33:22:11 IEEE 802.11: associated
wlan0: CTRL-EVENT-EAP-STARTED 66:55:44:33:22:11
wlan0: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=1
<3>CTRL-EVENT-EAP-STARTED 66:55:44:33:22:11
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=0 method=1
wlan0: CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=254
<3>CTRL-EVENT-EAP-PROPOSED-METHOD vendor=14122 method=254
[  496.526711] DEBUGFS PEER MAC = 0x66:0x55:0x44:0x33:0x22:0x11
wlan0: WPS-REG-SUCCESS 66:55:44:33:22:11 a00c1d3d-c455-5e48-8cde-e4c00922335f
Device is trying to offload WPS Probe Response while not supporting this
<3>WPS-REG-SUCCESS 66:55:44:33:22:11 a00c1d3d-c455-5e48-8cde-e4c00922335f
wlan0: WPS-PBC-DISABLE
wlan0: WPS-SUCCESS
<3>WPS-PBC-DISABLE
<3>WPS-SUCCESS
wlan0: CTRL-EVENT-EAP-FAILURE 66:55:44:33:22:11
<3>CTRL-EVENT-EAP-FAILURE 66:55:44:33:22:11
wlan0: STA 78:f8:82:a0:6e:97 IEEE 802.1X: authentication failed - EAP type: 0 (unknown)
wlan0: STA 78:f8:82:a0:6e:97 IEEE 802.1X: Supplicant used different EAP type: 254 (expanded)
wlan0: STA 78:f8:82:a0:6e:97 IEEE 802.11: disassociated
wlan0: STA 78:f8:82:a0:6e:97 IEEE[  496.815449] DEBUGFS PEER MAC = 0x66:0x55:0x44:0x33:0x22:0x11
 802.11: associated
[  496.817535] TXRX: Couldn't find peer from ID 13 - skipping security inits
wlan0: AP-STA-CONNECTED 66:55:44:33:22:11
wlan0: STA 66:55:44:33:22:11 RADIUS: starting accounting session CDEA32F20FD8605F
<3>AP-STA-CONNECTED 66:55:44:33:22:11
wlan0: STA 66:55:44:33:22:11 WPA: pairwise key handshake completed (RSN)
wlan0: EAPOL-4WAY-HS-COMPLETED 66:55:44:33:22:11
<3>EAPOL-4WAY-HS-COMPLETED 66:55:44:33:22:11

まとめ

今回はhostapdの基本的な使い方を説明してきました。

次回はwpa_supplicantを使用してP2Pの基本的な使い方について説明しようと思います。


クアルコム社のWi-Fi製品は、リファレンスとしてLinux+wpa_supplicant/hostapdに対応しております。

製品へのご興味もございましたら、下記よりお問い合わせをお願いいたします。

お問い合わせ

Qualcomm製品に関するご質問等がございましたら、以下リンクよりお問い合わせください。

Qualcomm メーカー情報Topへ

Qualcomm メーカー情報Topページへ戻りたい方は、以下をクリックしてください。