ブログ

Armadillo Base OS:コンテナから無線LANの設定を行う方法

at_shinya.matsumoto
2024年8月1日 15時53分

Armadillo Base OSでコンテナ内(アプリケーション)から無線LANの設定を行う方法を紹介します。
本内容はArmadillo Base OSのバージョン 3.20.2-at.1 以降で使用する事が出来ます。
バージョンが古い場合はアップデートしてからお試し下さい。


1.ABOS Webでトークンの設定を行う
2.コンテナにcurlをインストールする
3.コンテナのコンフィグファイルを修正
4.コンテナ内から無線LANのコネクションを作成する

1.ABOS Webでトークンの設定を行う

最初にABOS Webを開いてトークンの設定を行います。
ABOS Webへのアクセス方法は製品マニュアルまたはこちらを参照下さい。

ABOS Webを開き、下記の設定管理を開きます。

この設定管理ではパスワード変更以外に、トークンの追加/削除や権限の設定を行う事ができます。
※トークンの権限は製品マニュアルの「REST API」を参照下さい。

今回は無線LANの設定を行う必要がある為、トークンに NetworkAdmin NetworkView の権限を
追加しておきます。

これでトークン側の設定は完了です。

2.コンテナにcurl , jq をインストールする

VScodeでコンテナ(アプリケーション)を作成する場合は、packages.txtに curl , jq を追記し、
ビルド時にインストールしておきます。

3.コンテナのコンフィグファイルを修正

トークンを変数AUTHとして設定
 VScodeのapp.conf(Armadillo Base OSでは/etc/atmark/containers/コンテナ名.conf)に下記の様に
 変数としてトークンを設定しておくと楽です。
 (コンテナに/etc/atmark/abos_web/tokensをマウントする事でもコンテナ内から確認出来ます)

add_args --env=AUTH="Authorization:Bearer a05f27ee-9396-4c0e-b7fb-436fe735b6f0"

上記のコンテナ及びコンフィグファイルをArmadilloにインストールした前提で次に進みます。

4.コンテナ内で無線LANの設定を行う

ここではコマンドの検証の為、コンテナ内に入って動作確認を行います。

コンテナの再起動
[armadillo]# podman_start [コンテナ名]

コンテナに入る
[armadillo]# podman exec -it [コンテナ名] /bin/bash

コンテナ内にコネクションを作成する前に、現状のコネクションを確認します。

■コンテナ内からコネクションを確認
[container]# curl -k -s -H "$AUTH" \
"https://host.containers.internal:58080/api/connections" | jq
<実行結果>
{
  "connections": [
    {
      "name": "Wired connection 2",
      "state": "activated",
      "uuid": "188a6e2d-fe01-3b50-b741-00b226aeff82",
      "ctype": "802-3-ethernet",
      "device": "eth1"
    },
    {
      "name": "lo",
      "state": "activated",
      "uuid": "9f760843-dfcd-458e-ba88-b7734a068478",
      "ctype": "loopback",
      "device": "lo"
    }
  ]
}

クライアントモードとして使用

まずは無線LANのコネクションを作成し、クライアントとしてアクセスポイントに接続します。

■無線LANのコネクションを作成
 ここではアクセスポイント”Buffalo-A-7598”にアクセスします。
 プロンプトが戻るまで5秒~10秒程度時間が掛かります。
[container]# curl -k -s -H "$AUTH" \
https://host.containers.internal:58080/api/wlan/connect \
-d ssid=***** \
-d passphrase=***** | jq
<実行結果>
{
  "uuid": "8a82aa6e-5708-4284-afd9-c5e97676901c"
}

コネクションが作られているか確認します。

■コネクションを確認(Buffalo-A-7598が無線LANのコネクション)
[container]# curl -k -s -H "$AUTH" \
"https://host.containers.internal:58080/api/connections" | jq
<実行結果>

<中略>
    {
      "name": "Buffalo-A-7598",
      "state": "activated",
      "uuid": "8a82aa6e-5708-4284-afd9-c5e97676901c",
      "ctype": "802-11-wireless",
      "device": "wlan0"
    },
<以下略>

クライアントモードのコネクション削除は下記コマンドを実行します。

クライアントのコネクション削除
[container]# curl -k -H "$AUTH" -X DELETE \
https://host.containers.internal:58080/api/connections/"コネクション名"  ※本記事ではBuffalo-A-7598

クライアントモードの説明は以上で完了です。

アクセスポイントモードとして使用

次に、アクセスポイントとして使用する方法を説明します。

■コネクションの作成
 SSID,パスワード,IPアドレス,チャンネル(またはhw_mode)を適宜設定します。(以下は例)
 hw_mode=g で2.5GHz、hw_mode=a で5GHzに設定可能です。
 パスワードは8文字以上で設定します。
[container]# curl -k -H "$AUTH" -X POST \
-d ssid=my_ap \
-d passphrase=my_passphrase \
-d bridge_addr=198.51.100.1/24 \
-d channel=1 \
https://host.containers.internal:58080/api/wlan/ap


■作成したコネクションの確認
[container]# curl -k -s -H "$AUTH" \
"https://host.containers.internal:58080/api/connections" | jq
<実行結果>

<中略>
    {
      "name": "abos_web_br_ap",
      "state": "activated",
      "uuid": "283d2896-4f25-4e63-af63-771973592727",
      "ctype": "bridge",
      "device": "br_ap"
    },
<以下略>

アクセスポイントを削除する場合は下記を実行します。

curl -k -s -H "$AUTH" -X DELETE \
https://host.containers.internal:58080/api/wlan/ap

以上で、アクセスポイントの設定は完了です。


開発手順・TIPS集のTOPに戻る