NetBSD Advent Calendar 2024 1日目の記事です。今日はRaspberry Piで無線LANのアクセスポイントを構築する話をしようとおもいます。
Raspberry Piで無線LANアクセスポイント?
過去のAdvent Calendarで、PCルータを構築する記事がありました。それならPCルータに無線LANアクセスポイントの機能を組み込めばよいのでは?と思うかもしれません。
- NetBSD+Raspberry PiでPCルータを作る(カーネルビルド編)(2015/12/23)
- NetBSD+Raspberry PiでPCルータを作る(ユーザランド設定編)(2015/12/03)
実のところ、これら一連の記事で紹介したPCルータはThinkpad X40という、(だいぶ昔の)ノートPC上に構築しており、搭載されている無線LANアダプタのath(4)(Atheros IEEE 802.11 driver)が利用可能です。
じつは当初、無線LANアクセスポイントをPCルータに組み込んでみたのですが、運用を開始するとカーネルパニックが頻発するという現象に遭遇してしまいました…(NetBSD-9の場合)。そのため、手元に余っていたRaspberry Pi model B(初代バーション)上に無線LANアクセスポイントを構築した、という話になります。また、結果的に有線LANと無線LANのネットワークを分離できたというメリットもありました。
無線LANアクセスポイントの構築
使用する無線LANデバイス
今回は無線LANアダプタとしてTL-WN725Nを利用します。NetBSDではurtwn0(4)として認識されます。
[ 3.062574] urtwn0 at uhub1 port 2
[ 3.062574] urtwn0: Realtek (0x0bda) 802.11n NIC (0x8179), rev 2.00/0.00, addr 4
[ 3.202878] urtwn0: MAC/BB RTL8188EU, RF 6052 1T1R, address 54:af:97:68:aa:8b
[ 3.202878] urtwn0: 1 rx pipe, 2 tx pipes
/etc/ifconfig.urtwn0の設定
/etc/ifconfig.urtwn0
には以下を記述します。無線LAN側のネットワークとして 172.16.151.0/24
が利用されます。
172.16.151.1 netmask 255.255.255.0 up
hostapdの設定
無線LANアクセスポイント機能を提供するデーモンとして、hostapdを利用します。
/etc/hostapd.conf
に以下を記載します。
設定項目 | 設定値 | 備考 |
---|---|---|
interface | urtwn0 |
|
ssid | nbsdadvcal2024 |
|
channel | 0 |
チャンネルが自動的に設定されるようになる |
wpa_passphrase | mypassphrase |
# 無線LANアダプタのデバイス名を設定します。
interface=urtwn0
logger_syslog=0
logger_syslog_level=0
logger_stdout=1
logger_stdout_level=1
debug=2
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
# SSIDを設定します。
ssid=nbsdadvcal2024
country_code=JP
# hw_modeの値は、ifconfigの出力から確認する。
hw_mode=b
# channelに0を設定するとチャンネルが自動的に選択される。
channel=0
wpa=1
# WPAのパスワードを設定します。
wpa_key_mgmt=WPA-PSK
# パスフレーズを設定します。
wpa_passphrase=mypassphrase
auth_algs=1
wpa_pairwise=CCMP
rsn_pairwise=CCMP
wpa_group_rekey=600
wpa_strict_rekey=1
wpa_ptk_rekey=600
eapol_key_index_workaround=7
eap_reauth_period=0
hostapdの起動
一通りの設定が完了し、あとは hostapd
を起動するだけです。
$ # SSIDを設定します。
$ sudo ifconfig urtwn0 ssid nbsdadvcal2024
$
$ ifconfig urtwn0
urtwn0: flags=0x8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ssid nbsdadvcal2024
powersave off
bssid 54:af:97:68:aa:8b chan 2
address: XX:XX:XX:XX:XX:XX
media: IEEE802.11 autoselect hostap (autoselect mode 11b hostap)
status: active
inet6 fe80::56af:97ff:fe68:aa8b%urtwn0/64 flags 0 scopeid 0x2
inet 172.16.151.1/24 broadcast 172.16.151.255 flags 0
$
$ # hostapdを起動します。
$ sudo /usr/sbin/hostapd -td /etc/hostapd.conf
どこまで実用になる?
無線LANアクセスポイントは構築できましたが、ハードウェアは初代Raspbery Pi model Bということもあり、どこまで実用になるのでしょうか?私の環境では、スマートフォンを無線LANに接続し、SNS(Twitter(現:X))を閲覧したり、自作のWebアプリの動作確認といった、比較的シンプルな用途での利用にとどまっているのですが、たまにデーモンが止まったりして再起動対応する以外は別段困ったりはしていません。ただ、複数人で無線LANを利用するようなケースだとちょっと厳しいかもしれません…。
まとめ
NetBSDで無線LANアクセスポイントを構築する手順を紹介しました。Raspberry PiのようなSBC(Single Board Computer)もマシンパワーが向上しており、欲しい機能を自由に組み込んだお手製の無線LANアプライアンスを作ってみるのも面白そうです。