IoT デバイスで「暗号化されていない TCP でアクセスすること」を前提としたサーバー (以下、TCP サーバー) が動作している場合でも、そのデバイスが IoT SIM を利用していればセキュアに接続できます。
具体的には、オンデマンドリモートアクセスの
をオンにすると下図のように通信できます。この動作のポイントは、 をオンにしたオンデマンドリモートアクセスを境にして、デバイス側とアクセス元の端末 (以下、PC) 側で通信方式が異なる点です。- SORACOM と PC の間は、TLS 暗号化されている TCP でセキュアに通信できます。逆に、SORACOM と PC の間は、暗号化されていない TCP では通信できません。
- デバイスと SORACOM の間は、暗号化されていない TCP (TCP サーバーが待ち受けている通信方式) で通信できます。
Napter 利用料金が発生します
オンデマンドリモートアクセスを作成すると Napter 利用料金が発生します。なお、Napter には無料利用枠があるため、無料利用枠内の利用であれば、Napter 利用料金が発生しません。詳しくは、SORACOM Napter のご利用料金 を参照してください。
TCP サーバーが「TLS 暗号化されている TCP」(TCPS サーバー) で待ち受ける場合
オンデマンドリモートアクセスを作成するときに
をオフにしてください。 をオフにした場合は、SORACOM と PC の間で TLS 暗号化されている TCP で通信すると、そのまま TCPS サーバーにアクセスできます。
デバイスと SORACOM の間は「TLS 暗号化されていない TCP」で通信してもセキュアです
SORACOM と IoT SIM を利用するデバイスの間は閉域網接続なためセキュアです。その結果、PC からデバイスまでセキュアなリモートアクセスを実現できます。
操作を始める前に準備が必要です (クリックして確認してください)
(1) SORACOM Air for セルラーの IoT SIM、および IoT SIM を利用できるデバイスを準備する
各種デバイスでの IoT SIM の使用方法については 各種デバイスで SORACOM Air を使用する を参照してください。
準備完了ステップ 1: IoT デバイスで TLS サーバーを起動する
デバイスで、TLS で待ち受ける TLS サーバーを起動します。今回はデバイスとして Raspberry Pi を想定した手順を掲載します。
デバイスで利用する IoT SIM の IP アドレスをコピーします。
ifconfig wwan0
などのコマンドを実行すると、IP アドレスを取得できます。以下の例の場合は、xxx.xxx.xxx.xxx
が IoT SIM の IP アドレスです。$ ifconfig wwan0
wwan0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500 inet xxx.xxx.xxx.xxx netmask 255.255.255.248 destination xxx.xxx.xxx.xxx unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 8 bytes 1474 (1.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Raspberry Pi に
netcat-openbsd
をインストールして、TCP サーバーを起動します。$ sudo apt install netcat-openbsd $ nc -l xxx.xxx.xxx.xxx 8080
なお、
xxx.xxx.xxx.xxx
は、手順 1 で確認した IP アドレスを入力します。この手順で TCP サーバーを起動した場合は、TCP サーバーは「暗号化されていない TCP」で待ち受けており、待ち受けているポート番号は「8080」です。
ステップ 2: オンデマンドリモートアクセスを作成する
ユーザーコンソール にログインし、デバイスが利用する IoT SIM にあわせてカバレッジタイプを変更します。
たとえば、plan01s の IoT SIM を利用するデバイスに SSH 接続する場合は、グローバルカバレッジの表示に変更します。詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。
→ → の順にクリックします。
SIM 管理画面が表示されます。
デバイスが利用する IoT SIM がオンラインであることを確認します。
デバイスが利用する IoT SIM にチェックを入れて、
→ の順にクリックします。オンデマンドリモートアクセス画面が表示されます。
選択した IoT SIM にすでにオンデマンドリモートアクセスが作成されている場合は、オンデマンドリモートアクセスの一覧が表示されます。新しいオンデマンドリモートアクセスを作成するには、
をクリックします。接続先の情報を設定します。
設定項目について詳しくは、ユーザーコンソールでオンデマンドリモートアクセスを作成する を参照してください。
項目 説明 デバイスに接続する方法 (SORACOM Air または SORACOM Arc) を選択します。SORACOM Air で追加サブスクリプションを利用している場合は、複数のサブスクリプションが表示されます。ただし、Napter で利用するサブスクリプションを選択する必要はありません。オンライン が表示されているサブスクリプションが利用されます。 デバイスで動作する TCP サーバーが待ち受けているポート番号 (例: 8080) を指定します。
オンデマンドリモートアクセスを維持する時間 (リモートアクセスを許可する時間) を選択します。 暗号化されていない TCP で待ち受ける TCP サーバーにアクセスするときは、アクセス元から SORACOM までを暗号化するためにチェックを入れます。
デバイスにリモートアクセスできる IP アドレスレンジをグローバル IP アドレスで指定します。空欄の場合は、ユーザーコンソールを操作している端末のグローバル IP アドレスが設定されます。 をクリックします。
選択した IoT SIM に対してオンデマンドリモートアクセスが構成され、アクセス情報が表示されます。
の表示を確認します。
:
の前が IP アドレス、:
の後ろがポート番号です。
ステップ 3: オンデマンドリモートアクセスを利用して TLS 接続する
ステップ 1: IoT デバイスで Web アプリを起動する で起動した TCP サーバーは、暗号化されていない TCP にのみ対応していますが、Napter の をオンにすることで、アクセス元から SORACOM まで (インターネット区間) をTLS 暗号化されている TCP でアクセスできます。
ここでは、PC (アクセス元の端末) で Node.js を利用し、TLS 暗号化されている TCP で Napter に接続して、Napter からデバイスまでは 暗号化されていない TCP で接続します。デバイス (TCP サーバー) からのレスポンスも PC で受信できます。
PC で以下の JavaScript を
tcp-client.js
という名前で保存します。yyy.yyy.yyy.yyy
とzzzzz
は、ステップ 2: オンデマンドリモートアクセスを作成する で確認した IP アドレスとポート番号を指定します。var HOST = "yyy.yyy.yyy.yyy"; var PORT = "zzzzz"; var tls = require("tls"); var client = tls.connect(parseInt(PORT), HOST, {rejectUnauthorized: false}, function () { console.log("Connected Server:", HOST, PORT); var message = "Hello, Server! This is a message from the client.\n"; client.write(message); console.log("Send Data:", message); }); client.on("data", function (data) { console.log("Received from server:", data.toString()); client.end(); }); client.on("close", function () { console.log("Disconnected"); }); client.on("error", function (err) { console.error("Error:", err); });
tcp-client.js
を実行します。TLS 暗号化されている TCP で Napter に接続され、「Send Data: Hello, Server! This is a message from the client.」が送信されます。このあと、TCP サーバーからのメッセージを受信します。PC は以下の表示のままにしてください。
$ node tcp-client.js
Connected Server: yyy.yyy.yyy.yyy zzzzz Send Data: Hello, Server! This is a message from the client.
TCP サーバーが起動している Raspberry Pi にメッセージが表示されます。
Hello, Server! This is a message from the client.
Raspberry Pi に表示されたメッセージの次の行に「Hello, Client!」を入力して Enter キーを押します。
Hello, Client
「Hello, Client!」が PC に送信されます。このとき、Napter までは 暗号化されていない TCP で通信されています。
node tcp-client.js
を実行した PC にメッセージが表示されます。このとき、Napter から PC までは TLS 暗号化されている TCP で通信されています。Received from server: Hello, Client! Disconnected
ステップ 4: オンデマンドリモートアクセスを削除する
オンデマンドリモートアクセスは、オンデマンドリモートアクセスを削除する を参照してください。
で指定した時間が経過すると、自動的に削除されます。手動で削除する場合は、