はじめに
ソラコムの松井です。
2015年9月30日に IoT プラットフォームをローンチして以来、多くのお客様が SORACOM Air で様々なデバイスを 3G/LTE 接続して、様々な IoT システムが生まれました。ローンチ後、色々なイベントなどでお客様とお話をしている中で、ご要望として「デバイスに直接通信したい」という声を多く頂いていました。
本日発表する「SORACOM Gate」は、まさにこのご要望をセキュリティを保った上で実現するものであり、ご紹介出来る事をうれしく思います。
背景
SORACOM Air で通信するデバイスは、ゲートウェイからプライベートIPアドレスが振られ、インターネットに通信する際にはグローバルIPアドレスにアドレス変換されるため、原理上インターネットからデバイスに対して直接通信を行う事は出来ません。
もしグローバルIPアドレスで通信が出来れば非常に簡単にデバイスへアクセスする事が出来る反面、インターネットからの攻撃に晒されてしまうという危険性もあり、一概にどちらがよいとは言えません。
セキュリティを担保しつつ、なるべく便利にデバイスへアクセスする事が可能な手段が求められていました。
これまでの試み
これまで、インターネットから SORACOM Air で通信しているデバイスに対するアクセスについては、様々な試みがされてきました。
- プロトコル的に双方向の通信をサポートしている MQTT を Beam 経由で使用する
- SSHのポートフォワーディングを利用する
- STUN/TURNを使用した一般的なNAT超えのための手法
しかし上記のような手法では、例えばSTUNに非対応な業務用IPカメラなどでは対応が出来ないケースがありました。
私自身、検証環境として自宅に Raspberry Pi を設置していますが、設定変更やプログラムコードの変更など ssh でログインしたい事も多いので SORACOM Air の接続とは別にメンテナンス用に有線LANを接続してあります。しかし、実際にデバイスが設置されるような場所に都合良く有線LANがあるとは限りませんし。やはり、3G/LTEを経由してメンテナンスを行えるのがベストでしょう。
Gate の概要
基本的な構成は、下図のようになります。
※SORACOM Gate を利用するには、Canal や Direct/Door で利用する Virtual Private Gateway(以下VPG)の利用が必須となります。
下部にあるのが、SORACOM Gate Virtual Subnet(以下、Virtual Subnet)と呼ばれる、仮想的な L2 ネットワークです。
まず、VPGに対してGateを有効化(Open)すると、同じVPGに接続された全てのデバイスが Virtual Subnet に仮想的に接続されますので、同VPG配下のデバイス間の通信が可能となります。
次に、Canal や Direct/Door を利用してノード(AWS上のインスタンスや、オンプレミスのサーバ・ネットワーク機器)を、VXLANというプロトコルでVPGに対して接続します。VPG経由でVirtual Subnetに参加したノードとデバイス同士は、仮想的に同じネットワークに属しているため、プライベートIPアドレスを利用してサービスにアクセスしたり、ssh等でログインしてメンテナンスを行った位する事が容易に実現出来ます。
デモ動画
前述の構成図で、PCからGatewayとなるインスタンスにログインし、さらに Raspberry Pi の持つ 10.193.19.136 というアドレスに対して、httpやsshでアクセスしている様子です。Gatewayインスタンスから見ると、あたかも同じLANに繋がっているかのように、簡単に繋がってしまうのがお分かりいただけると思います。
追加の情報
SORACOM Gate は本日からご利用いただけます。利用に際しては、以下のガイドをご参照ください。
また、Gateを活用したリファレンスアーキテクチャも早速ご用意いたしましたので、ご確認ください。
最後に
Gate のアイコンは、SF映画などでワープ航法の時に宇宙空間に開く穴をイメージして作成されています。サーバや端末からデバイスまで、一気にワープできるようなイメージが伝わればいいなと思います。
ソラコム 松井