OpenWrtをベースとした人気の小型ルーターがGL.iNetトラベルルーターです。
OpenWrtがベースですが標準インターフェースは初心者でも使いやすいように構成・カスタマイズされたUIが提供されており、OpenWrtの高機能を簡単に操作することができます。
我が家で稼働しているGL.iNetトラベルルーター「GL-AXT1800(Slate AX)」には標準でWPS機能がないためAOSS/WPSによるデバイス接続できませんが、そこはOpenWrtベースなので簡単な設定でAOSS/WPS対応ルーターに変身します。
本記事ではGL.iNetトラベルルーター「GL-AXT1800(Slate AX)」をベースに、AOSS/WPSによる接続機能を有効化するまでの手順を説明していきます。
AOSS/WPS有効化の前提環境を確認
GL.iNetルーターの多くの機種ではAOSS/WPSによるWi-Fi接続機能が(標準として)ありません。
標準機能としてはありませんが、簡単な設定によりAOSS/WPSによるWi-Fi接続(接続待ち)機能を使うことができます。
無線LANはPSK暗号化されていること
まず、前提としてAOSS/WPSは「PSKによる暗号化」を前提としているため、GL.iNetルーター管理画面から確認しておきます。
GL.iNetルーターは標準では以下の無線チャンネルが構築されています。
無線チャンネル | 無線暗号化 | |
---|---|---|
プライベートWi-Fi | ゲストWi-Fi | |
2.4GHz | WPA2-PSK | 未設定 |
5GHz | WPA2-PSK | 未設定 |
これからAOSS/WPSによる接続待ち機能を有効にするチャンネルすべてについて、上記のように「PSKによる暗号化」設定されていることを確認します。
※デフォルト「WPA2-PSK」以外でも良いですが、PSK暗号化必須
AOSS/WPS有効化は詳細画面(LuCI)で行う
AOSS/WPS機能の有効化は標準の管理画面で設定することはできません。
GL.iNetの「詳細設定」メニューから詳細管理画面(LuCI)を使って設定していきます。
「詳細設定」メニュー画面のリンクをクリックすると、ブラウザの別タブ画面に詳細管理画面(LuCI)へのログイン画面が表示されます。
ユーザー”root”/パスワードはルーターログイン時のパスワードで詳細設定画面(LuCI)へログインします。
ワイヤレスデバイスの設定変更(WPSボタンの有効化)
では詳細管理画面(LuCI)を使ってWPSボタンを有効化していきます。
ワイヤレスデバイス概要画面の見方と操作
ワイヤレスデバイスの設定は詳細管理画面(LuCI)のメニュー「Network > Wireless」画面から行います。
GL.iNetルーターでは標準で上図のように2つの無線チャンネル(radio0/radio1)についてそれぞれ2つの無線デバイス(プライベートSSID/ゲストSSID)の計4つが定義されており、以下のようになっています。
無線チャンネル | 周波数帯 | Wi-Fi種別 |
---|---|---|
radio0 | 5GHz | プライベートWi-Fi |
ゲストWi-Fi | ||
radio1 | 2.4GHz | プライベートWi-Fi |
ゲストWi-Fi |
本記事ではradio0(5GHz帯)およびradio1(2.4GHz帯)のプライベートWi-Fiに対しWPS有効化を行い、ゲストWi-FiへはWPS有効化を行いません。
※ゲストWi-FiへもWPSボタン有効化を行いたい方はやってください。
それぞれのプライベートWi-Fiについて「Edit」ボタンから設定画面へ入ります。
無線セキュリティの設定変更
「Edit」ボタンから無線デバイスの設定画面に入り、以下の「Wireless Security」タブ画面を確認します。
以下のように確認・設定変更します。
Encryption | PSK暗号化方式が設定されていること |
---|---|
Enable WPS Pushbutton | チェックする |
確認・設定変更が完了したら「Save」ボタンで画面を閉じます。
同様の確認・設定変更をWPSボタン有効化したい無線チャンネルすべてについて行います。
無線セキュリティの設定をシステム反映
WPSボタン有効化の設定が完了すると、設定変更した無線チャンネルの設定内容は下図のように一時保留状態(Pending Changes)になっています。
画面下部の「Save & Apply」ボタン押下により、設定変更内容をシステム反映させます。
以上で無線チャンネルへのWPSボタン有効化の設定は完了です。
AOSS/WPSによるデバイス接続
ここまでの手順でWPSボタンの有効化が完了しています。
GL.iNetルーターはすでにAOSS/WPSによるWi-Fi接続待ちができる状態になっています。
ここからは、実際にAOSS/WPSによるデバイスの接続を行っていきます。
WPS接続ボタンの確認
AOSS/WPSによる接続待ちを行うためにはメニュー「Status > Overview」画面へ移動します。
Overview画面の「Wireless」の欄には「Start WPS」という青いボタンが表示されています。
このボタンを押下することで、GL.iNetルーターはAOSS/WPSによるWi-Fi接続の接続待ち状態に入ります。
AOSS/WPSによるWi-Fi接続
では実際にデバイスをAOSS/WPSによりGL.iNetルーターへWi-Fi接続してみましょう。
「Start WPS」の青いボタンを押下すると、下図のように「WPS Status:アクティブ」に変わり、またボタンも赤くなります。
この状態はAOSS/WPSによる接続待ち状態です。
よって、この状態になったらWi-Fi接続したデバイス側の手順によりWPS接続を行います。
無事にAOSS/WPSによるWi-Fi接続が完了すると、下図のように「Assosiated Station」欄にWi-Fi接続機器が追加表示されます。
IPアドレスの確認
また、Wi-Fi接続が完了したデバイスに対してGL.iNetルーターから正しくIPアドレスが払い出されている場合は「Active DHCP Leases」欄にデバイス名と払い出されたIPアドレスが表示されます。
以上でAOSS/WPSによるデバイスの接続が完了しました。
ルーター本体のボタンによるWPS接続
以上のように、GL-AXT1800(Slate AX)の詳細画面(LuCI)の「Start WPS」ボタンを使ってAOSS/WPSによる接続待ち受けを行うことができます。
ここからは、GL-AXT1800(Slate AX)のルーター本体のリセットボタンを使ってAOSS/WPSによる接続待ち受けを行える仕組みを説明していきます。
ここからの記事はLinux(OpenWrt)のシェルの動作を理解している方を対象としています。
ルーター本体のリセットボタンでWPS接続
GL-AXT1800(Slate AX)にはWPS専用のボタンはないので、リセットボタンを使って(流用して)WPS接続待ちを行えるようにしていきます。
なお、リセットボタンはボタン押下の時間(何秒間押すか)によって以下のように動作が変わります。
リセットボタンの押下時間 | 動作内容 |
---|---|
20秒超 | 何もしない |
8秒以上~20秒以下 | 工場出荷時状態へ戻す ※”factory_reset”の実行 |
3秒以上~8秒未満 | ネットワーク設定を初期化 ※”reset_network”の実行 |
上記の「リセットボタンの押下時間」は機種によりちょっとだけ異なりますが、要するに「リセットボタンの押下時間によって”設定初期化”と”ファクトリーリセット(工場出荷時状態へ初期化)”の機能が振り分けられる仕組みなので、この機能に「WPS待ち受け機能」を追加することで、ボタン押下時間を間違うことで最悪「工場出荷時状態」へリセットされるリスクがあることは理解しておく必要があります。
リセットボタンの動作の仕組み
GL.iNetトラベルルーターでルーター本体のリセットボタンを押下した場合には以下のディレクトリ(/etc/rc.button)の「reset」シェルが起動されます。
root@GL-AXT1800:~# cd /etc/rc.button
root@GL-AXT1800:/etc/rc.button# ls -l
-rwxr-xr-x 1 root root 87 Oct 17 22:02 failsafe
-rwxr-xr-x 1 root root 81 Oct 17 22:02 power
-rwxr-xr-x 1 root root 134 Oct 17 22:02 reboot
-rwxr-xr-x 1 root root 455 Oct 17 22:02 reset
-rwxr-xr-x 1 root root 526 Oct 17 22:02 rfkill
-rwxr-xr-x 1 root root 1029 Oct 17 22:02 switch
-rwxr-xr-x 1 root root 1739 Oct 17 22:02 wps
root@GL-AXT1800:/etc/rc.button#
この「reset」シェルの中にリセットボタン押下時の処理が記述されています。
標準のリセットボタン動作(GL-ATX1800の場合)
GL.iNetトラベルルーターの標準の「reset」シェルは以下のように記述されています。
※例)GL-AXT1800(Slate AX)
root@GL-AXT1800:/etc/rc.button# cat reset
#!/bin/sh
. /lib/functions.sh
. /lib/functions/gl_util.sh
OVERLAY="$( grep ' /overlay ' /proc/mounts )"
case "$ACTION" in
pressed)
[ -z "$OVERLAY" ] && return 0
reset_btn_pressed
;;
timeout)
. /etc/diag.sh
set_state failsafe
;;
released)
[ -z "$OVERLAY" ] && return 0
reset_btn_released
if [ "$SEEN" -gt 20 ]
then
return 0
elif [ "$SEEN" -ge 8 ]
then
factory_reset
elif [ "$SEEN" -ge 3 ]
then
reset_network &
fi
;;
esac
return 0
root@GL-AXT1800:/etc/rc.button#
上記のように「19行目~33行目」のシェル記述により以下のように動作します。
リセットボタンの押下時間 | 動作内容 |
---|---|
20秒超 | 何もしない |
8秒以上~20秒以下 | 工場出荷時状態へ戻す ※”factory_reset”の実行 |
3秒以上~8秒未満 | ネットワーク設定を初期化 ※”reset_network”の実行 |
リセットボタンへWPS機能を追加する
本記事ではこの標準のリセットボタンの機能を以下のように変更してみます。
リセットボタンの押下時間 | 動作内容 |
---|---|
30秒超 | 何もしない |
20秒以上~30秒以下 | 工場出荷時状態へ戻す ※”factory_reset”の実行 |
10秒以上~20秒未満 | ネットワーク設定を初期化 ※”reset_network”の実行 |
3秒以上~10秒未満 | AOSS/WPS待ち受け状態に入る |
上記の仕様に変更した「reset」シェルは以下のようになります。
root@GL-AXT1800:/etc/rc.button# cat reset
#!/bin/sh
. /lib/functions.sh
. /lib/functions/gl_util.sh
OVERLAY="$( grep ' /overlay ' /proc/mounts )"
case "$ACTION" in
pressed)
[ -z "$OVERLAY" ] && return 0
reset_btn_pressed
;;
timeout)
. /etc/diag.sh
set_state failsafe
;;
released)
[ -z "$OVERLAY" ] && return 0
reset_btn_released
if [ "$SEEN" -gt 30 ]
then
return 0
elif [ "$SEEN" -ge 20 ]
then
factory_reset
elif [ "$SEEN" -ge 10 ]
then
reset_network &
elif [ "$SEEN" -ge 3 ]
then
cd /var/run/hostapd
for socket in *; do
[ -S "$socket" ] || continue
hostapd_cli -i "$socket" wps_pbc
done
fi
;;
esac
return 0
root@GL-AXT1800:/etc/rc.button#
- 33~39行目に「WPS開始」機能を追加
- 24/27/30行目の時間(リセットボタン押下時間)を変更
24/27/30行目によりリセットボタン押下時間を調整(ちょっと長く設定)しています。
その上で「3秒~10秒のリセットボタン押下でWPS待ち受け状態にする」機能を33行目~39行目に記述しています。
まとめると、以下の仕様のシェルとなります。
リセットボタンの押下時間 | 動作内容 |
---|---|
30秒超 | 何もしない |
20秒以上~30秒以下 | 工場出荷時状態へ戻す ※”factory_reset”の実行 |
10秒以上~20秒未満 | ネットワーク設定を初期化 ※”reset_network”の実行 |
3秒以上~10秒未満 | AOSS/WPS待ち受け状態に入る ※”hostapd_cli”コマンドによるWPS開始 |
リセットボタンの押下時間によって「WPS待ち受け状態にするつもりがネットワーク設定が初期化された!!」なんてことにもなるので、ボタン押下時間や機能の順番はご自分で調整してください。
まとめ、GL.iNetルーターでAOSS/WPSを使う
このように、GL.iNetルーターには標準ではAOSS/WPS機能が提供されていませんが、そこはさすがに高機能ルーターOSであるOpenWrtベースであり、ちょっとした設定でAOSS/WPSを利用できるようになります。
最近は「Wi-Fi接続方式はWPSのみ」なんてデバイスも増えており、その場合でもGL.iNetルーターは簡単にWPS機能を有効化することができます。
基本は詳細設定画面(LuCI)から「WPS開始」
GL.iNetルーターのほとんどはルーター本体にWPSボタンがないので、本記事手順によりWPS有効化した場合の接続方式(WPS接続待ち受け)は詳細設定画面(LuCI)からの「Start WPS」ボタン押下となります。
「Start WPS」ボタンは設定したすべてのSSIDについて表示されるので、デバイスに対応したSSIDの「Start WPS」ボタンを押下することで、デバイスをAOSS/WPSによりWi-Fi接続することができます。
ルーター本体ボタンの利用時の注意点
また、GL.iNetルーター本体のリセットボタンを押下した場合に「AOSS/WPS開始」の仕組みを取り込むことができます。
ルーター本体のリセットボタンを押下した場合には「/etc/rc.button」ディレクトリの「reset」シェルが起動されることから、この「reset」シェルを改変することでリセットボタンに「WPS開始」の機能を盛り込むことができます。
これにより、詳細設定画面(LuCI)を開かなくてもルーター本体のリセットボタンによりAOSS/WPS接続待ちにすることができます。
し・か・し・・・
本記事で述べたようにリセットボタンにはすでに「ネットワーク設定の初期化」「ルーター本体を工場出荷時状態へ初期化」の機能が割り当てられており、リセットボタンの押下時間により処理が振り分けられる仕組みになっています。
そのうえで「WPS開始」機能をリセットボタンに付与することで、リセットボタンの押下時間の設定によっては「WPS接続したかっただけなのにルーター本体が初期化されちゃった!」という状態になるリスクがあります。
くれぐれも「reset」シェルの内容を理解できる方のみ、ルーター本体のリセットボタンの利用をおすすめします。