イニシエーター接続機能

CLI を使用し、remote.itアカウントに登録されている他のデバイスへのイニシエーター接続を作成する手順を説明します。

  1. 接続先サービスのID確認
  2. イニシエーター接続の開始
  3. サービスへの接続
  4. イニシエーター接続の切断

 

1. 接続先サービスのサービスID確認

CLI を使用してターゲットデバイス(サービス)に接続する前に、そのサービスIDを事前に確認する必要があります。サービスIDは Webポータルまたは、デスクトップアプリで確認することができます。(もしくは、APIを使って取得することも可能です。)

 

a) Webポータルで確認する方法
Webポータルのデバイスリストから接続するデバイスのデバイス名をクリックし、 表示されたダイアログから対象サービスの「Service ID」の内容を確認します。

__________2020-09-11_15.29.04.png

 

b) デスクトップアプリで確認する方法
デスクトップアプリのデバイスリストから接続したいデバイスのデバイス名をクリックし、続けて接続するサービス名をクリックします。
右ペインの「Details」タブをクリックした中の「Service ID」の内容を確認します。

__________2022-01-25_14.48.40.png

2. イニシエーター接続の開始

CLI を使ってターゲットデバイス(サービス)へ接続する方法を説明します。

 

1) “remoteit connection add” コマンドを実行します。
その際、事前に確認したサービスIDを “--id” 
フラグを使って指定します。また、アプリケーションからアクセスを待ち受けるための任意のポート番号を “--port” フラグを使って併せて指定してください。

sudo remoteit connection add --id 80:00:00:F9:5E:00:00:25 --port 30000
✓ ADD in progress ...
✓ NEXT-ACTION: run 'sudo remoteit status' for status

 

2) “remoteit status” コマンドを使用し、イニシエーター接続が開始されたことを確認します。
 ”Connections:” テーブルの UIDカラムに指定したサービスのUIDがあり、”State”カラムに “ready” と表示されていれば接続の作成は成功です。
 他の接続を追加する場合は、1) の手順を再度行ってください。

sudo remoteit status
 ✓ Fetching status

Username: jpdemo@remote.it

Device:
UID                                   | Name                         | Type            | Status          | Address                
----------------------------------------------------------------------------------------------------------------------------------------
80:00:00:00:01:0B:2F:26    | demo-ubuntu               | device          | connected    | 127.0.0.1:65535         

Services:
UID                        | Name                      | Type            | Status       | Address                  | Enabled 
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
80:00:00:00:01:0B:2F:28    | ssh                       | SSH (28)      | connected    | 127.0.0.1:22           | true    

Connections:
UID                        | Name                      | Type            | Status       | Address                                   | Enabled   | P2P   | Failover 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
80:00:00:F9:5E:00:00:25    | demo_AWS_ubuntu16-SSH     | SSH (28)        | ready        | demo_AWS_ubuntu16-SSH.at.remote.it:30000  | true       | false | false


※ Connections 該当箇所

Connections:
UID                        | Name                      | Type          | Status       | Address        
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 80:00:00:F9:5E:00:00:25    | demo_AWS_ubuntu16-SSH     | SSH (28)      | ready        | demo_AWS_ubuntu16-SSH.at.remote.it:30000

 

※ 接続に成功すると、”Adress” カラムに接続先となるアドレスとポート番号が表示されます。(上記の例では demo_AWS_ubuntu16-SSH.at.remote.it:30000 です。)接続アプリ(例 SSHクライアント)にはこのアドレスとポート番号を宛先として指定します。

 

※ また、netstat コマンドを利用して、実際に接続するためのアドレスとポート番号が待ち受けていることを確認できます。(この例では 127.0.0.1:30000 が LISTEN になっています。上記で待ち受けを開始した「*.at.remote.it」の名前は実際には「127.0.0.1」へ解決されます。

netstat -an |grep 127.0.0.1 |grep LISTEN
tcp        0      0 127.0.0.1:30000         0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:65535         0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:64000         0.0.0.0:*               LISTEN

 

※ バージョン 1.7.26 以降、イニシエーター接続はオンデマンドで接続する方式になりました。
これにより、接続を開始した直後は「待機状態(ready)」としてアプリケーションからの接続を待ち受ける状態になります。その後アプリケーションから実際にアクセスされたタイミングで、ターゲットデバイスに対する実際の接続を開始します。
接続が「待機状態」の場合、remoteit status コマンドで確認できる各接続の Status のカラムが「ready」として示されます。

 

※ “remoteit connection add” コマンドには、必須フラグである “--id” の他に、いくつかのフラグが用意されており、”--help” フラグで確認することができます。

__________2022-01-25_15.28.45.png

 

以下にいくつかの主要なフラグを説明します。

  • --ip
    接続を待ち受けるアドレスを指定します。指定しない場合、ローカルホスト(127.0.0.1)が設定されます。ローカルIPを指定することで、作成した接続が同一ネットワーク上の他のデバイスからアクセス可能となります。
  • --port
    接続を待ち受けるポート番号を指定します。必須フラグです。
  • --restrict
    作成した接続へのアクセスを受け付ける接続元アドレスを指定します。指定しない場合、制限なし(0.0.0.0)が設定されます。(--ipでローカルホスト以外のIPアドレスを指定する場合に、このフラグの値を考慮する必要があります。)
  • --p2p
    P2P接続を試みるかどうかを true または false で指定します。指定しない場合、true(P2P有効)が設定されます。P2P接続が成功しないことが明らかな場合に、無効にすることで接続までの時間短縮が図れます。
  • --failover
    P2P接続に失敗した場合にProxy接続にフェールオーバーするかどうかを true または false で指定します。指定しない場合、true(フェールオーバー有効)が設定されます。セキュリティ上、Proxy接続を許可したくない場合に無効にすることで、P2P接続ができない場合は接続を許さない運用が可能です。
  • --timeout
    P2PまたはProxy接続を開始したあと無通信状態が続き「待機状態(ready)」に戻るまでの時間(分)を指定します。指定しない場合、0(待機状態に戻らない)が設定されます。
  • --name
    接続先URLの「at.remote.it」ドメインの前の部分の名前を指定します。指定しない場合、デバイス名とサービス名を使って「device-service.at.remote.it」の形式で生成されます。
  • --enableCertificate
    証明書を使った接続先URLを使用するかどうかを true または false で指定します。指定しない場合、使用する(true)が設定されます。無効とすることで、接続先アドレスとして従来どおりの「127.0.0.1:ポート番号」が表示されます。

 

※ 記述例

sudo remoteit connection add --id 80:00:00:F9:5E:00:00:25 --port 34567
--ip 0.0.0.0 --restriction 192.168.10.0 --failover false --timeout 15 --enableCertificate false

 

3. サービスへの接続

開始したremote.itのイニシエーター接続を使って、目的のサービスへ接続する方法を説明します。
本ガイドではターミナルを使ったSSH接続を例に紹介しますが、宛先のアドレスとポート番号の指定方法はそれぞれのアプリケーションの方法に従ってください。

 

1) “remoteit status” コマンドを実行し、”Connections:” テーブルの中の接続中サービスのアドレスとポート番号(この例では tkhm-05-r3itPi-ssh.at.remote.it:30002)を控えます。

Connections:
UID                        | Name                      | Type          | Status       | Address        
---------------------------------------------------------------------------------------------------------------------------------------------------------------
80:00:00:F9:5E:00:00:25    | tkhm-05-r3itPi - ssh      | SSH (28)      | ready        | tkhm-05-r3itPi-ssh.at.remote.it:30002

 

2) サービスへ接続するためのアプリケーション(この例ではSSHクライアントとしてターミナルを使用)を起動し、接続先として先ほど控えたアドレスとポート番号を指定します。

__________2022-01-25_15.47.53.png

 

3) 接続できれば完了です。

__________2022-01-25_15.48.25.png

 

※ バージョン 1.6.5 以降から、イニシエーター接続時に何らかの理由でP2P接続ができなかった場合に、自動でProxy接続にフェールオーバーする機能が実装されました。
アプリケーションから実際に接続した後、remoteit status コマンドでその接続がP2P接続とProxy接続のどちらで接続されているか確認することができます。

 

[接続待機状態の場合]
Status: ready
P2P: false
Failover: false

Connections:
 UID                                   | Name                                          | Type                | Status       | Address                       | Enabled   | P2P   | Failover 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 80:00:00:F9:5E:00:00:25    | demo_AWS_ubuntu16-SSH            | SSH (28)          | ready        | 127.0.0.1:33001          | true      | false | false

 

[P2P接続の場合]
Status: connected
P2P: true
Failover: false

Connections:
 UID                                   | Name                                          | Type                | Status       | Address                       | Enabled   | P2P   | Failover 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 80:00:00:F9:5E:00:00:25    | demo_AWS_ubuntu16-SSH            | SSH (28)          | connected  | 127.0.0.1:33001          | true      | true | false

 

[Proxy接続の場合]
Status: connected
P2P: false
Failover: true

Connections:
 UID                                   | Name                                          | Type                | Status       | Address                       | Enabled   | P2P   | Failover 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 80:00:00:F9:5E:00:00:25    | demo_AWS_ubuntu16-SSH            | SSH (28)          | connected  | 127.0.0.1:33001          | true      | false | true

※ 上記のとおり、P2P と Failover のカラムは設定値ではなく現在の接続状態を表していますのでご注意ください。

 

4. イニシエーター接続の切断

接続中のイニシエーター接続を切断(接続情報の削除)する方法を説明します。

 

1) “remoteit status” コマンドを実行し、切断したい接続中サービスのUIDをを控えます。

Connections:
UID                        | Name                             | Type              | Status        
-------------------------------------------------------------------------------------------------------------------------------
 80:00:00:F9:5E:00:00:25    | demo_AWS_ubuntu16-SSH            | SSH (28)          | connected    

 

2) “remoteit connection remove” コマンドを実行します。その際、切断するサービスのUIDを “--id” フラグを使って指定します。

sudo remoteit connection remove --id 80:00:00:F9:5E:00:00:25
✓ REMOVE in progress ...
✓ NEXT-ACTION: run 'sudo remoteit status' for status

 

3) “remoteit status” コマンドを使用し、イニシエーター接続が切断されたことを確認します。
 ”Connections:” テーブルから該当UIDの接続が削除されていれば切断が完了です。

sudo remoteit status
 ∘ Fetching status

Username: jpdemo@remote.it

Device:
UID                        | Name                             | Type              | Status       | Address                
--------------------------------------------------------------------------------------------------------------------------------------------------
 80:00:00:00:01:09:24:60    | demo-ubuntu                      | device            | connected    | 127.0.0.1:65535         

Services:
UID                        | Name                             | Type              | Status       | Address                  | Enabled 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
80:00:00:00:01:09:24:66    | ssh                              | SSH (28)        | connected    | 127.0.0.1:22           | true    

Connections:

 

※また、netstat コマンドを利用して、待ち受けていたアドレスとポート番号が存在しなくなったことを確認できます。(この例では 127.0.0.1:30000 が存在しなくなっています。)

netstat -an |grep 127.0.0.1 |grep LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:65535         0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:64000         0.0.0.0:*               LISTEN

 

※接続中の接続を待機状態(ready)に戻す “remoteit connection disconnect” コマンドも用意してあります。こちらは remove コマンドとは異なり、待ち受けは継続します。
また、接続待機中(ready)の接続に “remoteit connection connect” コマンドを実行することで強制的に接続開始することも可能です。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています