Armadilloフォーラム

Armadillo Base OS:コンテナ上のアプリから無線LANアクセスポイント接続を作成・削除する方法について

masa.yamaguchi

2024年7月3日 11時53分

現在、Armadillo Base OS(Armadillo-610)上のコンテナ上のアプリから無線LANアクセスポイント接続を作成・削除する方法について
調査しています。( ABOS WEB 操作の 「WLAN設定 - アクセスポイントとして使用する/設定を削除」をコンテナ上のアプリから実施することが目的)
現状実現できておりませんが、上記方法についてもし実現可能で、且つ方法をご存じであればご教示頂きたいです。

[備考(試したこと)]
・REST API は接続作成する機能は見当たりませんでした。
・設定ファイル hostapd.conf を任意の場所に用意してコンテナから ホストの/etc/hostapd/ 配下にコピーする手段は
 調査中です(コンテナ内からホストのファイルにアクセスする手段が見つかりませんでした)。

コメント

at_makoto.sato

2024年7月3日 13時53分

佐藤です。

すいません。ご認識の通り現状では REST API からは無線LANアクセスポイント接続を作成・削除することはできません。

> 現状実現できておりませんが、上記方法についてもし実現可能で、且つ方法をご存じであればご教示頂きたいです。
少し手間なのですが、以下のようにするとできるかと思います。(コンテナ内に curl インストール済みの前提です)
作成する場合

curl -v -k -c cookie -b cookie -d password=<ABOS Webへのログインパスワード> https://host.containers.internal:58080/login
curl -k -v -c cookie -b cookie \
-d bridge_addr=<ABOS WEB上での「ブリッジアドレス」に当たる値> \
-d netmask=<「サブネットマスク」に当たる値> \
-d hw_mode=<「使用周波数」に当たる値で、5GHzの場合は「a」、2.4GHzの場合は「g」を設定してください> \
-d channel=<「使用チャンネル」に当たる値> \
-d ssid=<「SSID」に当たる値> \
-d wpa_passphrase=<「パスワード」に当たる値で、半角8文字以上を設定してください> \
https://host.containers.internal:58080/ap_setup

削除する場合

curl -v -k -c cookie -b cookie -d password=<ABOS Webへのログインパスワード> https://host.containers.internal:58080/login
curl -k -v -c cookie -b cookie -X POST -H "Content-Type: application/x-www-form-urlencoded" https://host.containers.internal:58080/ap_delete

masa.yamaguchi

2024年7月3日 18時03分

佐藤様

masa.yamaguchiです。ご回答ありがとうございます。
報告事項と1点質問がございます。

■報告事項
ご教示頂いた方法で、コンテナ内からcurlコマンドを使用することで
無線LANアクセスポイント接続を作成・削除することを確認できました。

■質問
無線LANアクセスポイント接続を作成時、それだけでは スマホとArmadillo:WLANのAP接続ができませんでした。
上記に加えて ABOS Web のDHCPサーバ設定で、以下設定を実施してつながるようになりました。

・インターフェース:br_ap 192.168.1.1/24  を選択
・DHCPリリース範囲:192.168.1.10 ~ 192.168.1.254
・DHCPリリース時間:24h

重ね重ねすみませんが、上記 ABOS Web のDHCPサーバ設定で行う設定と同等の処理を
コンテナ上のアプリから実施する方法があればご教示頂きたいです。
[備考]
・こちらでDHCPあり・なしのケースで以下コマンド実行結果(詳細情報)を比較したところ、結果に差異がありませんでした。
 →REST APIを使用してDHCP設定をする方法は、現状見つけることができていません。

<Rest API : ネットワーク設定:詳細情報取得>
curl -k -H "$AUTH" https://host.containers.internal:58080/api/connections/abos_web_br_ap

at_makoto.sato

2024年7月3日 18時17分

佐藤です。

> 重ね重ねすみませんが、上記 ABOS Web のDHCPサーバ設定で行う設定と同等の処理を
> コンテナ上のアプリから実施する方法があればご教示頂きたいです。
こちらも、REST API はありませんが、以下のようにすることでできるかと思います。
作成する場合

curl -v -k -c cookie -b cookie -d password=<ABOS Webへのログインパスワード> https://host.containers.internal:58080/login
curl -k -v -c cookie -b cookie \
-d interface=br_ap \
-d start_addr=192.168.1.10 \
-d end_addr=192.168.1.254 \
-d lease_time=24h \
https://host.containers.internal:58080/dhcp_setup

削除する場合

curl -v -k -c cookie -b cookie -d password=<ABOS Webへのログインパスワード> https://host.containers.internal:58080/login
curl -k -v -c cookie -b cookie -d interface=br_ap https://host.containers.internal:58080/dhcp_delete

masa.yamaguchi

2024年7月3日 18時42分

佐藤様

masa.yamaguchiです。ご回答ありがとうございます。

ご提示いただいた方法で、 コンテナ上のアプリからDHCP設定の追加・削除が行えました。
これで問題が解消しました。ありがとうございました。

masa.yamaguchi

2024年7月9日 18時10分

佐藤様

masa.yamaguchiです。
すみません。あと2点だけ以下お伺いしたいことがございます。

①コンテナ上のアプリからインフラストラクチャモードにて指定のSSIDに接続しようとして、
以下コマンドを試しに実行しましたが、接続できませんでした。
(コマンドはログイン->接続の順です)

curl -v -k -c cookie -b cookie -d password=root https://host.containers.internal:58080/login
 
curl -k -v -c cookie -b cookie \
-d interface=wlan0 \
-d driver=nl80211 \
-d hw_mode=a \
-d channel=10 \
-d ieee80211n=1 \
-d wpa=2 \
-d wpa_key_mgmt=WPA-PSK \
-d rsn_pairwise=CCMP \
-d ssid=<SSID> \
-d wpa_passphrase=<PASSWORD> \
https://host.containers.internal:58080/ap_setup

コンテナ上のアプリから、インフラストラクチャモードにて指定のSSIDに接続する場合のコマンドについて
もし存在する場合ご教示頂きたいのですが、よろしいでしょうか。

②上記接続を削除する場合のコマンドも併せてご教示頂きたいです。

at_makoto.sato

2024年7月10日 9時09分

佐藤です。

接続は以下のようにするとできるかと思います。

curl -k -v -c cookie -b cookie \
-d essid=<SSID> \
-d other_essid="" \
-d security=wpa-psk \
-d password=<PASSWORD> \
-d method=auto \
-d ip_addr="" \
-d netmask="" \
-d gateway_addr="" \
-d p_dns_addr="" \
-d s_dns_addr="" \
https://host.containers.internal:58080/wlan_setup

削除の方はもうひと手間かかります。
まず、以下のコマンドで、接続のuuidを取得します。

curl -v -k -c cookie -b cookie https://host.containers.internal:58080/api/connections

レスポンスとして、jsonが返ってきますので、その中からWLAN接続のuuidを見つけてください。
(おそらく"name"が"ssid名"になっているデータにあります)

その uuid を使って以下を実行すると削除されるかと思います。

curl -v -k -c cookie -b cookie -d con_uuid=<見つけたuuid> https://host.containers.internal:58080/wlan_delete

masa.yamaguchi

2024年7月10日 10時12分

佐藤様

masa.yamaguchiです。ご回答ありがとうございます。

ご教示頂いた方法にて、コンテナ上のアプリからインフラストラクチャモードにて指定のSSIDに接続、
並びに接続を削除できたことを確認しました。
お手数をおかけしてすみませんでした。