この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
mae3xx_tips:warplink_sps:start [2017/06/08 10:35] admin [設定ファイルの編集 (armsd.conf)] |
mae3xx_tips:warplink_sps:start [2017/06/20 11:25] (現在) admin |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
+ | ====== WarpLink SPS の利用 ====== | ||
+ | {{:mae3xx_tips:warplink_sps:logo_small.gif|WarpLink SPS}} | ||
+ | |||
+ | WarpLink SPS((IIJ様 SACM の OEM)) は、通信機器(サービスアダプタ((SA)))をネットワークに自動接続し、遠隔から集中管理するマネージメントシステム基盤です。\\ | ||
+ | 設定管理などのすべての機能を専用の Web 画面を通して一元的に行えるため、SaaS アプリケーションのように手軽に機器の管理を行うことが可能です。\\ | ||
+ | VPN ルータの集中監視に加えて、無人環境に多数展開している IoT ゲートウェイを一元管理することが可能となり、VPN ルータ / IoT ゲートウェイに\\ | ||
+ | 掛かるトータルコストを大幅に削減できます。 | ||
+ | |||
+ | {{:mae3xx_tips:warplink_sps:warplinksps_login.png?800|WarpLink SPS login}} | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== 準備 ===== | ||
+ | |||
+ | ご利用にはユーザ登録が必要です。\\ | ||
+ | 弊社営業部 (TEL: 0422-37-8112 E-Mail: sales@centurysys.co.jp) へお問い合わせ下さい。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== 設定 ===== | ||
+ | |||
+ | ==== 設定ファイルの編集 (armsd.conf) ==== | ||
+ | |||
+ | ファームウェア v2.7.0 より、WarpLink SPS との接続を行うエージェント(armsd)を組み込んであります。\\ | ||
+ | armsd の設定ファイル ''/etc/armsd/armsd.conf'' を編集します。 | ||
+ | |||
+ | <file config armsd.conf> | ||
+ | distribution-id: 0000-0123-4567-8901-2345-6789-dead-beef | ||
+ | ls-sa-key: hogehogefugafuga | ||
+ | #sa-model-name: arms client daemon | ||
+ | #sa-version: 0.00 | ||
+ | |||
+ | #path-iconfig: /etc/armsd/initial-config | ||
+ | #path-state-cache: /var/cache/armsd/state | ||
+ | #https-proxy-url: http://192.168.0.1:8080/ | ||
+ | |||
+ | #hb-disk-usage0: / | ||
+ | #hb-traffic-if0: eth0 | ||
+ | |||
+ | ### see sample scripts in /usr/share/armsd-X.X/examples | ||
+ | #script-app-event: /etc/armsd/scripts/app-event | ||
+ | #script-clear: /etc/armsd/scripts/clear | ||
+ | #script-command: /etc/armsd/scripts/command | ||
+ | #script-post-pull: /etc/armsd/scripts/post-pull | ||
+ | #script-reconfig: /etc/armsd/scripts/reconfig | ||
+ | #script-start: /etc/armsd/scripts/start | ||
+ | #script-status: /etc/armsd/scripts/status | ||
+ | #script-stop: /etc/armsd/scripts/stop | ||
+ | #script-reboot: /etc/armsd/scripts/reboot | ||
+ | #script-line-ctrl: /etc/armsd/scripts/line | ||
+ | #script-state-changed: /etc/armsd/scripts/state-changed | ||
+ | </file> | ||
+ | |||
+ | distribution-id, ls-sa-key を設定しておきます。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 起動設定 (Upstart) ==== | ||
+ | |||
+ | ''/etc/default/armsd'' を編集し、自動起動するようにします。 | ||
+ | |||
+ | <file config armsd> | ||
+ | START=yes | ||
+ | </file> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 起動の確認 ==== | ||
+ | |||
+ | 起動できているか確認してみます。 | ||
+ | |||
+ | <code> | ||
+ | root@plum:~# ps ax|grep armsd | ||
+ | 1025 ? Ss 0:03 /usr/sbin/armsd -D -f /etc/armsd/armsd.conf | ||
+ | 31798 pts/1 S+ 0:00 grep --color=auto armsd | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | log でも確認してみます。 | ||
+ | |||
+ | <code> | ||
+ | Jun 7 13:20:18 plum armsd[1025]: armsd version 1.0.7, with libarms 5.41 (Release) | ||
+ | Jun 7 13:20:18 plum armsd[1025]: no state cache file - try LS-PULL | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 2 - Pull from LS. | ||
+ | Jun 7 13:20:18 plum armsd[1025]: state changed: INITIAL -> LSPULL | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - calculated. ls max retry 1500 times. | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - calculated. ls retry interval 60 sec. | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - line: connecting(0): DHCP | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 21 - Line DHCP(0) Connected. | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - [-] Start rs-solicitation | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - RS[0]: socket prepared. connecting... | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - RS[0]: SSL connection established. (TLSv1.2 - ECDHE-RSA-AES256-GCM-SHA384) | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 2 - Connecting to LS | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 3 - LS Access Done | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - [-] End rs-solicitation | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - line: disconnecting(0): DHCP | ||
+ | Jun 7 13:20:18 plum armsd[1025]: disable web proxy | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 25 - Line DHCP(0) Disconnected. | ||
+ | Jun 7 13:20:18 plum armsd[1025]: state changed: LSPULL -> RSPULL | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - calculated. rs max retry 5 times. | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - calculated. rs retry interval 60 sec. | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - line: connecting(0): DHCP | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 21 - Line DHCP(0) Connected. | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - [-] Start config-solicitation | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - RS[0]: https://202.221.50.98/arms/msg | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - RS[1]: https://202.221.50.99/arms/msg | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - RS[0]: socket prepared. connecting... | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 200 - RS[0]: SSL connection established. (TLSv1.2 - AES256-GCM-SHA384) | ||
+ | Jun 7 13:20:18 plum armsd[1025]: log callback: 5 - Connecting to RS | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 6 - RS Access Done | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - RS End point: https://202.221.50.98/arms/msg | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - [-] End config-solicitation | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - line: disconnecting(0): DHCP | ||
+ | Jun 7 13:20:19 plum armsd[1025]: disable web proxy | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 25 - Line DHCP(0) Disconnected. | ||
+ | Jun 7 13:20:19 plum armsd[1025]: state changed: RSPULL -> PULLDONE | ||
+ | Jun 7 13:20:19 plum armsd[1025]: initial configuration succeeded | ||
+ | Jun 7 13:20:19 plum armsd[1025]: state cache saved | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - [-] Start push-method-query | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - RS[0]: socket prepared. connecting... | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - RS[0]: SSL connection established. (TLSv1.2 - AES256-GCM-SHA384) | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - [-] End push-method-query | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 91 - Push method: tunnel | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#0: https://202.221.50.98:443/arms/tunnel | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#1: https://202.221.50.99:443/arms/tunnel | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#2: https://[2001:0240:bb88:0000:0000:0000:0000:0262]:443/arms/tunnel | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#3: https://[2001:0240:bb88:0000:0000:0000:0000:0263]:443/arms/tunnel | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 70 - Start push confirmation | ||
+ | Jun 7 13:20:19 plum armsd[1025]: state changed: PULLDONE -> PUSH_SENDREADY | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#0: try to connect 202.221.50.98:443 | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#0: socket prepared. connecting... | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#0: socket connected. | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#1: try to connect 202.221.50.99:443 | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#1: socket prepared. connecting... | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#1: socket connected. | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#2: address family mismatched: 2001:0240:bb88:0000:0000:0000:0000:0262 | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#2: closed. | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#3: address family mismatched: 2001:0240:bb88:0000:0000:0000:0000:0263 | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#3: closed. | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#1: SSL connection established. (TLSv1.2 - AES256-GCM-SHA384) | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#1: sent http header. | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#0: SSL connection established. (TLSv1.2 - AES256-GCM-SHA384) | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#0: sent http header. | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#0: received http header. | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - [-] Start push-confirmation-start | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - Start confirmation | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - tunnel#1: received http header. | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - [-] Start push-confirmation-start | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - Start confirmation | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - [70418033] End push-confirmation-start | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - Sent confirmation request. wait for response. | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - [-] Start push-confirmation-done | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 200 - [70418033] End push-confirmation-done | ||
+ | Jun 7 13:20:19 plum armsd[1025]: state changed: PUSH_SENDREADY -> PUSH_WAIT | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 80 - Start heartbeat (interval: 300 sec) | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 82 - heartbeat server: 202.221.50.96 | ||
+ | Jun 7 13:20:19 plum armsd[1025]: log callback: 82 - heartbeat server: 202.221.50.97 | ||
+ | </code> | ||
+ | |||
+ | heartbeat が送信されていますので、接続は成功しているようです。 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== カスタマイズ ===== | ||
+ | |||
+ | ==== コールバックスクリプトの作成 ==== | ||
+ | |||
+ | WarpLink SPS のシステムに接続中に発生する各種イベント(コンフィグの適用など)は、armsd に登録したコールバックスクリプトにより処理を行います。\\ | ||
+ | |||
+ | コールバックスクリプトには、下記があります。 | ||
+ | |||
+ | <code> | ||
+ | #script-app-event: /etc/armsd/scripts/app-event | ||
+ | #script-clear: /etc/armsd/scripts/clear | ||
+ | #script-command: /etc/armsd/scripts/command | ||
+ | #script-post-pull: /etc/armsd/scripts/post-pull | ||
+ | #script-reconfig: /etc/armsd/scripts/reconfig | ||
+ | #script-start: /etc/armsd/scripts/start | ||
+ | #script-status: /etc/armsd/scripts/status | ||
+ | #script-stop: /etc/armsd/scripts/stop | ||
+ | #script-reboot: /etc/armsd/scripts/reboot | ||
+ | #script-line-ctrl: /etc/armsd/scripts/line | ||
+ | #script-state-changed: /etc/armsd/scripts/state-changed | ||
+ | </code> | ||
+ | |||
+ | ^ Name ^ Function ^ Arguments | | ||
+ | |app-event|IP アドレス変更の通知| | | ||
+ | |clear|ステータス初期化 (PUSH)| | | ||
+ | |command|任意コマンド|command <id> <requestfile> <resultfile>| | ||
+ | |post-pull|Pull 完了後に実行| | | ||
+ | |reconfig|コンフィグ変更 (PUSH)|reconfig <id> <version> <info> <configfile>| | ||
+ | |start|Pull 時実行|start <id> <version> <info> <configfile>| | ||
+ | |stop|モジュール停止|stop <id>| | ||
+ | |reboot|再起動| | | ||
+ | |line-ctrl|Pull 時の回線接続((SMF SDK を用いて独自 RS を構築している事業者のみ設定可能です。WarpLink SPS/SACM などのサービスを直接利用する場合には利用できません。))|line-ctrl <action> <line-type> <ifindex> [<id> <password> [<cid> <apn> <pdp>]]| | ||
+ | |state-changed|ステータス変化通知|state-changed <old-status> <new-status>| | ||
+ | |||
+ | \\ | ||
+ | |||
+ | 機器の起動時には、モジュールの個数分(5) "start" スクリプトが呼ばれます。\\ | ||
+ | 例として、次のような "start" スクリプトにすると、 | ||
+ | |||
+ | <file bash start> | ||
+ | #!/bin/bash | ||
+ | |||
+ | id=$1 | ||
+ | version=$2 | ||
+ | info=$3 | ||
+ | config=$4 | ||
+ | |||
+ | echo start script invoked at `date`: $0 $* | ||
+ | |||
+ | echo module-id=$id | ||
+ | echo version=$version | ||
+ | echo info=$info | ||
+ | echo config file is: $config: | ||
+ | echo ----- | ||
+ | cat $config | ||
+ | echo ----- | ||
+ | </file> | ||
+ | |||
+ | 次のようなログが(Upstart のログに)記録されます。 | ||
+ | |||
+ | <code> | ||
+ | start script invoked at Wed Jun 7 13:20:18 JST 2017: /etc/armsd/scripts/start 2 0.0.0-0 /tmp/armsd.1025/tmp/0 | ||
+ | module-id=2 | ||
+ | version=0.0.0-0 | ||
+ | info= | ||
+ | config file is: /tmp/armsd.1025/tmp/0: | ||
+ | ----- | ||
+ | hogehoge | ||
+ | ----- | ||
+ | start script invoked at Wed Jun 7 13:20:18 JST 2017: /etc/armsd/scripts/start 3 0.0.0-0 /tmp/armsd.1025/tmp/1 | ||
+ | module-id=3 | ||
+ | version=0.0.0-0 | ||
+ | info= | ||
+ | config file is: /tmp/armsd.1025/tmp/1: | ||
+ | ----- | ||
+ | ----- | ||
+ | start script invoked at Wed Jun 7 13:20:18 JST 2017: /etc/armsd/scripts/start 4 0.0.0-0 /tmp/armsd.1025/tmp/2 | ||
+ | module-id=4 | ||
+ | version=0.0.0-0 | ||
+ | info= | ||
+ | config file is: /tmp/armsd.1025/tmp/2: | ||
+ | ----- | ||
+ | ----- | ||
+ | start script invoked at Wed Jun 7 13:20:18 JST 2017: /etc/armsd/scripts/start 0 0.0.0-0 /tmp/armsd.1025/tmp/3 | ||
+ | module-id=0 | ||
+ | version=0.0.0-0 | ||
+ | info= | ||
+ | config file is: /tmp/armsd.1025/tmp/3: | ||
+ | ----- | ||
+ | hoge1 | ||
+ | http://www.yahoo.co.jp?file=hogehoge.img&hoge=fuga | ||
+ | ----- | ||
+ | start script invoked at Wed Jun 7 13:20:19 JST 2017: /etc/armsd/scripts/start 1 0.0.0-0 /tmp/armsd.1025/tmp/4 | ||
+ | module-id=1 | ||
+ | version=0.0.0-0 | ||
+ | info= | ||
+ | config file is: /tmp/armsd.1025/tmp/4: | ||
+ | ----- | ||
+ | ----- | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | |||
+ | === ファームウェア更新機能の実装 === | ||
+ | |||
+ | モジュール ID: 0 には "ファームウェア(URL)" を割り当てていますので、ファームウェア更新機能を作成するには、 | ||
+ | |||
+ | * VERSION((無条件に実行されるため、バージョンをチェックして無駄なダウンロードを避けるため)) および URL を config に記述するようにする | ||
+ | * start / reconfig スクリプトで、config ファイルをパースしてファームウェア更新が必要か判定する | ||
+ | |||
+ | という実装が考えられます。 | ||
+ | |||
+ | サンプルは次のようになるでしょうか。 | ||
+ | |||
+ | <file bash reconfig> | ||
+ | #! /bin/bash | ||
+ | |||
+ | |||
+ | firmup_check() { | ||
+ | local config=$1 | ||
+ | local ma_version=`cat /etc/version` | ||
+ | local VERSION="None" | ||
+ | local URL="" | ||
+ | |||
+ | . $config | ||
+ | |||
+ | echo "MA version(current): \"$ma_version\"" | ||
+ | echo "Version in config: \"$VERSION\"" | ||
+ | |||
+ | if [ "$ma_version" != "$VERSION" ]; then | ||
+ | echo "version unmatched, need to update firmware, firmware URL is \"$URL\"" | ||
+ | # wget $URL -O /tmp/firmware.img # (download firmware) | ||
+ | # firmup /tmp/firmware.img # (update firmware) | ||
+ | else | ||
+ | echo "version matched, not need to firm-update." | ||
+ | fi | ||
+ | } | ||
+ | |||
+ | echo reconfig script invoked at `date`: $0 $* | ||
+ | |||
+ | # $1 is module-id | ||
+ | case "$1" in | ||
+ | "0" ) firmup_check $4 | ||
+ | ;; | ||
+ | esac | ||
+ | </file> | ||
+ | |||
+ | {{:mae3xx_tips:warplink_sps:change_config_00.png?1000|コンフィグ変更}} | ||
+ | |||
+ | |||
+ | \\ | ||
+ | |||
+ | 実行例は下記のようになります。 | ||
+ | |||
+ | <file generic syslog> | ||
+ | reconfig script invoked at Wed Jun 7 14:51:02 JST 2017: /etc/armsd/scripts/reconfig 0 0.0.0-0 /tmp/armsd.1025/candidate-config/0 | ||
+ | MA version(current): "MA-E3xx firmware version 2.7.0 (Tue May 9 11:28:30 JST 2017)" | ||
+ | Version in config: "MA-E3xx firmware version 2.7.1 (Tue May 10 11:28:30 JST 2017)" | ||
+ | version unmatched, need to update firmware, firmware URL is "http://ma-tech.centurysys.jp/lib/exe/fetch.php?media=download_software:mae3xx:mae3xx_trusty_v2_7_1.img" | ||
+ | </file> |