ラズパイ4でEAP-TLS認証対応Wi-Fiアクセスポイントを作ろう

ラズパイ4(Raspberry Pi 4)でWPA2 Enterprise認証対応のWi-Fiアクセスポイントを作ったので、その際の設定手順等をまとめます。(2022/5/5 追記あり)

今回作るアクセスポイントは、既存のルーターおよびDHCPサーバーの配下に置くこととして、アクセスポイント自身にはルーター機能は持たせず、Wi-Fiとイーサネットのブリッジとして機能するアクセスポイントとして設定していきます。

(2022/5/5 追記)Raspberry Pi 4のOSを64bit版に更新したのに伴い、hostapdをソースコードからビルドしてインストールしました。その際の手順を追記しています。

1. はじめに
2. ブリッジインターフェースの設定
3. Wi-Fiの設定
4. hostapdのインストールと設定
5. 再起動
6. hostapdのログを見る方法
7. (追記)Debian 11(bullseye,64bit)環境でのビルド
8. 最後に

1. はじめに

ラズパイでWi-Fiアクセスポイントを作るための手順を記しているサイトは多数あるものの、ほとんどがWPA2-PSK認証を想定したもので、WPA2-Enterprise認証を想定して書かれたページはあまりありません。

WPA2-PSK認証を想定して書かれた、ラズパイ公式の設定手順(ブリッジ版アクセスポイント)を参考にしつつ、WPA2-PSK認証用の設定をWPA2-Enterprise認証用の設定に変更すれば動作するだろうと考えて試してみたものの、なぜかWPA2-Enterprise認証がうまく通りません。WPA2-PSK認証では問題なくつながるにもかかわらず、です。

hostapdのログを見たところ、鍵交換の途中で失敗しているらしいことはわかったものの、その原因がわからず、あれこれ試したところ、以下の設定をすることでようやくWPA2-Enterprise認証(EAP-TLS認証)が通るようになりました。

(1)ネットワークインターフェース(br0, eth0)にDHCPでIPアドレスを割り当てる。
(2)hostapd.confに rsn_preauth=1 を追加する。

特に(2)のrsn_preauth=1の設定を追加した途端にWPA2-Enterprise認証が通るようになった時は「ようやくつながるようになった!」と感激したものの、なぜこの設定が必要なのかはいまだにわかっておりません。(鍵交換の途中で失敗しているようだったので、鍵交換と関係ありそうな設定をひとつひとつ試していき、うまくいっただけなので。)もしかしたら、hostapdのバグ等によるものなのかもしれません。なお、インストールしたhostapdのバージョンはv2.8です。またラズパイ4のOSは、Raspberry Pi OSです。

上記(1)(2)の設定も含めて、すべての手順を以下に記していきます。

2. ブリッジインターフェースの設定

Wi-Fi(wlan0)とイーサネット(eth0)をブリッジさせるべく、ブリッジインターフェースを設定します。なお、ブリッジインターフェースの設定にbrctlを使っている解説ページが見受けられますが、brctlを含むbridge-utilsはobsoleteとなっていますので、OS標準のsystemd-networkdの方を使います。


(1)管理者権限(sudoコマンド)でテキストエディタで/etc/systemd/network/bridge-br0.netdevを作成し、保存する。
$ sudo cat /etc/systemd/network/bridge-br0.netdev
[NetDev]
Name=br0
Kind=bridge


(2)管理者権限(sudoコマンド)でテキストエディタで/etc/systemd/network/br0-member-eth0.networkを作成し、保存する。
$ sudo cat /etc/systemd/network/br0-member-eth0.network
[Match]
Name=eth0
[Network]
Bridge=br0


(3)管理者権限(sudoコマンド)でテキストエディタで/etc/systemd/network/br0-dhcp.networkを作成し、保存する。
$ sudo cat /etc/systemd/network/br0-dhcp.network
[Match]
Name=br0
[Network]
DHCP=yes


(4)管理者権限(sudoコマンド)でテキストエディタで/etc/dhcpcd.confを開き、先頭に以下の内容で1行追加する。
denyinterface wlan0


(5)systemd-networkdサービスを有効化する。次回起動時からブリッジインターフェースが有効になります。
$sudo systemctl enable systemd-networkd

3. Wi-Fiの設定


(1)管理者権限(sudoコマンド)でraspi-configコマンドを起動し、Wireless LANの国をJP(日本)に設定します。
$ sudo raspi-config


(2)明示的にWi-Fiを有効化します。
$ sudo rfkill unblock wlan


(3)Wi-Fiをサプリカントとして使うためにインストールされているwpa_supplicantを念のために無効化します。
$ sudo systemctl disbale wpa_supplicant

4. hostapdのインストールと設定


(1)hostapdをインストールし、有効化する。次回起動時からhostapdが自動起動します。
$ sudo apt install hostapd
$ sudo systemctl unmask hostapd
$ sudo systemctl enable hostapd


(2)管理者権限(sudoコマンド)でテキストエディタで/etc/hostapd/hostapd.confを作成し、保存する。#以降の文字列はコメントなので、入力不要です。
$ sudo cat /etc/hostapd/hostapd.conf
interface=wlan0
bridge=br0
driver=nl80211
country_code=JP
ieee80211d=1
ieee80211h=1
# bssid=00:00:00:00:00:00 #BSSIDを設定したい時は、設定する。(未設定の場合は、WLAN0のMACアドレスが使われる)
ssid=SSID_IS_HERE #SSIDを設定する。
hw_mode=a #5GHz帯を指定する。
channel=36
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0 #SSIDをステルス状態にしたい時は、1か2を設定する。
wpa=2
wpa_key_mgmt=WPA-EAP WPA-EAP-SHA256
rsn_pairwise=CCMP
rsn_preauth=1 #これを設定しないと、WPA2 Enterprise認証がうまく通らなかった。
wmm_enabled=1
ieee80211n=1
# ieee80211ac=1
require_ht=1
# require_vht=1
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40][MAX-AMSDU-3839]
# vht_capab=[MAX-MPDU-3895][SHORT-GI-80][SU-BEAMFORMEE]
# vht_oper_chwidth=1
# vht_oper_centr_freq_seg0_idx=42
ieee8021x=1
eapol_version=2
own_ip_addr=IP_ADDRESS_OF_THIS #hostapdが稼働しているラズパイ4のeth0のIPアドレス
radius_client_addr=IP_ADDRESS_OF_THIS #hostapdが稼働しているラズパイ4のeth0のIPアドレス
auth_server_addr=IP_ADDRESS_OF_RADIUS-SERVER #Radius serverが稼働しているPCのIPアドレス
auth_server_port=1812
auth_server_shared_secret=PASSWORD #Radius serverでの認証時のパスワード(FreeRADIUSであればclients.confに記されたパスワード)
acct_server_addr=IP_ADDRESS_OF_RADIUS-SERVER #Radius serverが稼働しているPCのIPアドレス
acct_server_port=1813
acct_server_shared_secret=PASSWORD #Radius serverでの認証時のパスワード(FreeRADIUSであればclients.confに記されたパスワード)

5. 再起動

ラズパイ4を再起動すれば、hostapdが動作して、Wi-Fiアクセスポイントとして動作するようになります。

なお毛流麦花の環境では、IEEE802.11ac対応のアクセスポイントではなく、IEEE802.11n対応のアクセスポイントになりました。(スマホに表示されるリンクスピードが150Mbpsとなっているため。)IEEE802.11acにならない理由を探ろうかと思ったものの、ラズパイ4の(サプリカントとして使った時の)Wi-Fiの実効速度は100Mbps程度とのことなので、深追いせずにそのままIEEE802.11n対応のアクセスポイントとして使っています。(上述のhostapd.confでも、IEEE802.11ac関連の設定はコメントアウトしています。)

6. hostapdのログを見る方法

参考までに、hostapdのログを見る方法を2種類書いておきます。syslogで見る方法と、hostapdを詳細なログを表示するモードで起動する方法の2種類です。より詳細なログが表示されるのは、後者の方法です。


【1. syslogで見る方法】
(1)管理者権限(sudoコマンド)でテキストエディタで/etc/hostapd/hostapd.confを開き、以下の2行を追加して保存する。
logger_syslog=-1
logger_syslog_level=0

(2)hostapdを再起動する。
$ sudo systemctl restart hostapd

(3)/var/log/syslogにhostapdのログが表示されるようになります。


【2. hostapdを詳細なログを表示するモードで起動する方法】
(1)hostapdを停止する。
$ sudo systemctl stop hostapd

(2)hostapdをddオプションを付けて起動する。
$ sudo hostapd -dd /etc/hostapd/hostapd.conf

(3)画面にhostapdの詳細なログが表示されます。Ctrl-Cで終了します。

7. (追記)Debian 11(bullseye,64bit)環境でのビルド

Raspberry PiのOSを64bit版に更新したのに伴い、hostapdをソースコードからビルドしてインストールしたのでメモします。

Raspberry PiのOSのバージョンは、Release date:April 4th 2022, 64bit, Linux kernel 5.15, Debian 11(bullseye)で、hostapdのバージョンは2.10(2022/01/16 Release)となります。

【Debian 11(bullseye,64bit)環境でのビルド】
(1)hostapdのダウンロード
$ wget https://w1.fi/releases...
$ tar xvzf (ダウンロードしたファイル名).gz
$ cd (Makefileのあるディレクトリ)
$ cp defconfig .config

(2).configの修正
.configの以下の3箇所を修正します。

#CONFIG_EAP=y # hostapd内蔵のRADIUSサーバーは不要なのでコメントアウトします。
CONFIG_IEEE80211AC=y # Wi-Fi5(802.11ac)を有効化するために、行頭の#を外します。
CONFIG_SUITEB192=y # hostapd 2.10はWPA3 Enterprise(192bit mode)に対応しているらしいので、念のため左記行を追加します。詳細は後述するものの、現行のRaspberry Pi OSの環境では実際にはWPA3 Enterprise(192bit mode)は使えないみたいです。

(3)hostapdのビルドとインストール
$ sudo apt-get install libnl-3-dev libssl-dev libnl-genl-3-dev
$ make
$ sudo make install

上記のようにしてビルドしたhostapdでは、Wi-Fi5(802.11ac)が有効化されます。ただし、802.11acを有効化しても実効速度は上り下り共に80~90Mbps程度で、Wi-Fi4(802.11n)時とほぼ同じです。

WPA3 Enterprise(192bit mode)については、hostapd 2.10自体は対応しているらしいものの、WPA3 Enterprise(192bit mode)用に記載した設定ファイルでhostapdを起動しようとしてもエラーになってしまい、Raspberry Pi 4では実際には使えません。WPA3 Enterprise(192bit mode)に対応するとなるとGCMP256への対応が必要になりますが、これに対応できていないのが原因なのではと思われます。iw listで表示される暗号化スイートにGCMP256は含まれていませんし、どのようにすれば使えるようになるのか、よくわかっていません。

hostapdはWPA3 Personal(SAE)にも対応しているらしいものの、これについては確認していません。

8. 最後に

ラズパイ4をWPA2 Enterprise認証対応アクセスポイント化できたことで、前述の通り実効速度は製品として販売されているアクセスポイントに劣るものの、以下のようなメリットがあります。

(1)製品として売られているWPA2 Enterprise認証対応アクセスポイントは概して高価であり、廉価なラズパイ4で構築することで、自宅で気軽にWPA2 Enterprise認証を試せるようになる。(うまくいったら、製品として売られているWPA2 Enterprise認証対応アクセスポイントを購入するとか。)

(2)既にWPA2 Enterprise認証対応アクセスポイント製品を所有している場合でも、ラズパイ4をWPA2 Enterprise認証対応アクセスポイント化することで、製品故障に伴う修理時の代替としての利用、あるいは一時的にアクセスポイントを増設したい時等の対応が気軽に行えるようになる。

スポンサーリンク
error: Content is protected !!