masa.yamaguchi
2024年6月24日 18時02分
現在、Armadillo Base OS(Armadillo-610)上のコンテナ上のアプリから ネットワーク接続/切断を実施しようとしていますが、
現状できておりません。
(ABOS Webは何でも出来てしまうことから、ユーザが不要な設定ができないようにする為、ABOS Web使わずネットワーク接続/切断を試みています)
■状況
・REST APIについては、ネットワーク切断する処理が見当たらなかったため、REST APIは未使用。
・sshpassを使用してネットワーク切断をしようとするとエラーとなり、切断できない。
[前提]
・REST APIにてネットワーク情報の取得ができることは確認済み(GET "/api/connections")。
・sshpassはインストール後、"nmcli d"ができることは確認済み。
・無線LAN接続(インフラストラクチャモード)確認後、
"podman exec -it アプリ名 bash" 実行し、コンテナ内のアプリで無線LANを切断しようとして
"nmcli connection down"を実行するが、以下エラー発生。
root@armadillo:/# sshpass -p atmark ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null atmark@IPアドレス nmcli connection down コネクション名 Warning: Permanently added 'IPアドレス' (ECDSA) to the list of known hosts. Connection 'コネクション名' deactivation failed: Not authorized to deactivate connections
・nmcli connection down はホストでは実行できることを確認済み。
■質問
Armadillo Base OSのコンテナ上のアプリからネットワーク接続/切断を実施する方法について、ご教示頂きたいです。
コメント
masa.yamaguchi
2024年6月27日 19時11分
佐藤 様
masa.yamaguchiです。ご回答ありがとうございます。
以下curlコマンド実行により、コンテナからネットワークの接続・切断が確認できました。
1点だけ念のためにお伺いしたいこと★がございます。
<実行したcurlコマンド> curl -v -k -c cookie -b cookie -d password=root https://<IPアドレス>:58080/login curl -k -v -c cookie -b cookie -d con_uuid=ISB-CloudIQEx https://<IPアドレス>:58080/connection_down curl -k -v -c cookie -b cookie -d con_uuid=ISB-CloudIQEx https://<IPアドレス>:58080/connection_up
★お伺いしたいこと
上記<IPアドレス>は以下のケースではコンテナ内からのcurlコマンド実行で接続・切断ができました。
・ホストのpodman0のIPアドレス:10.88.0.1
・ホストのeth0のIPアドレス:192.168.11.XX
しかしながら、ご提示いただいたループバックアドレス:127.0.0.1 の場合は、コンテナ内からのcurlコマンド実行ができませんでした。
(以下MSGが表示されます)
* Trying 127.0.0.1:58080... * connect to 127.0.0.1 port 58080 failed: Connection refused * Failed to connect to 127.0.0.1 port 58080: Connection refused * Closing connection 0 curl: (7) Failed to connect to 127.0.0.1 port 58080: Connection refused
上記事象は意図通りとなりますでしょうか。
(ホストでcurlコマンドに127.0.0.1を設定した場合は正常に動作します)
at_makoto.sato
2024年6月28日 9時12分
佐藤です。
> ★お伺いしたいこと
>
> 上記<IPアドレス>は以下のケースではコンテナ内からのcurlコマンド実行で接続・切断ができました。
> ・ホストのpodman0のIPアドレス:10.88.0.1
> ・ホストのeth0のIPアドレス:192.168.11.XX
> しかしながら、ご提示いただいたループバックアドレス:127.0.0.1 の場合は、コンテナ内からのcurlコマンド実行ができませんでした。
> (以下MSGが表示されます)
>
> * Trying 127.0.0.1:58080... > * connect to 127.0.0.1 port 58080 failed: Connection refused > * Failed to connect to 127.0.0.1 port 58080: Connection refused > * Closing connection 0 > curl: (7) Failed to connect to 127.0.0.1 port 58080: Connection refused >
> 上記事象は意図通りとなりますでしょうか。
> (ホストでcurlコマンドに127.0.0.1を設定した場合は正常に動作します)
すいません。アドレスの指定は "host.containers.internal" にしてください。(デフォルトは10.88.0.1です)
(こちらの手元で確認した環境では、コンテナconfファイルにset_network hostを設定していたため127.0.0.1で繋がりました。)
at_makoto.sato
2024年6月27日 17時33分
佐藤です。
> ・REST APIについては、ネットワーク切断する処理が見当たらなかったため、REST APIは未使用。
すいません、仰るとおり現状ネットワークを接続・切断するAPIは用意しておりません。すこし手間ですが、以下のようにするとできるかと思います。
(curl は apt install curl でインストールしておいてください)
connection_down の部分を connection_up にすると接続になります。
REST APIの方は今後のアップデートで対応を検討します。
> "nmcli connection down"を実行するが、以下エラー発生。
atmark ユーザでログインしてる空ではないかと思います。