Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SORACOM Arc Inside!! / SORACOM Meetup Arc tech overview

SORACOM Arc Inside!! / SORACOM Meetup Arc tech overview

2021年7月27日(火)SORACOM Meetup〜Wi-Fiからもソラコムを!はじめよう新サービスSORACOM Arcにて、ソラコム ソフトウェアエンジニア 川上 大喜が発表した資料です。

イベントページ:https://soracom.connpass.com/event/218134/

7cd783377515bdf8207062840b7b2f4e?s=128

SORACOM
PRO

July 27, 2021
Tweet

Transcript

  1. SORACOM Arc Technical Overview SORACOM Meetup 〜 Wi-Fiからもソラコムを! はじめよう新サービスSORACOM Arc

    Jul. 27th, 2021 株式会社ソラコム エンジニア 川上 大喜 (@moznion)
  2. 株式会社ソラコム エンジニア 川上 大喜 (moz/@moznion) 好きなコマンド: xargs, kill

  3. 2021年7月27日現在の状況をもとにしています。 記載されている内容については今後、告知の有無に関わらず 変更される可能性があることをご承知おきください。

  4. 今回の新登場キャラクター SORACOM Arc バーチャル SIM

  5. SORACOM Arc

  6. SORACOM Arc https://soracom.jp/services/arc/

  7. SORACOM Arc インターネット回線越しに VPN (WireGuard) のトンネルを構築して ソラコムプラットフォームに接続するサービス ざっくり言うと……

  8. SORACOM Arc https://soracom.jp/services/arc/

  9. SORACOM Arc https://soracom.jp/services/arc/

  10. なぜWireGuardを採用したのか

  11. なぜWireGuard? • 最新の暗号化手法を採用したVPNソリューション • 高速・好パフォーマンス • シンプル • 構成 •

    設定 • Linux Kernel 5.6+ からはカーネルに標準搭載 • Linux Kernel 以外にも動く実装が多数
  12. なぜWireGuard? • 最新の暗号化手法を採用したVPNソリューション • 高速・好パフォーマンス • シンプル • 構成 •

    設定 • Linux Kernel 5.6+ からはカーネルに標準搭載 • Linux Kernel 以外にも動く実装が多数
  13. なぜWireGuard? – シンプル • 基本的にWireGuardデーモンが立っていれば良い SORACOM Arc Peer Device Peer

    Tunnel • 設定が極めて簡素 Device Peerの例
  14. なぜWireGuard? • 最新の暗号化手法を採用したVPNソリューション • 高速・好パフォーマンス • シンプル • 構成 •

    設定 • Linux Kernel 5.6+ からはカーネルに標準搭載 • Linux Kernel 以外にも動く実装が多数
  15. なぜWireGuard? – 多様な実装 • サポートしている (Appがある) OS • iOS •

    Android • macOS • Windows • FreeBSD • 様々な言語レベルでの対応 • Golang • https://github.com/WireGuard/wireguard-go • Rust • https://github.com/WireGuard/wireguard-rs • 組み込み向け • lwIP • https://github.com/smartalock/wireguard-lwip • Arduino on ESP32 • https://github.com/ciniml/WireGuard-ESP32-Arduino
  16. なぜWireGuard? – 多様な実装 • Soratun • SORACOM ArcのためのWireGuardクライアント • Soratunを動かしておけば別途WireGuardの

    デーモンを動作させる必要がない • 詳細はこの次の弊社CRE佐藤の発表で……
  17. Arcはなぜつながるのか

  18. SORACOM Arc はなぜつながるのか こたえ: Virtual SIMと呼ばれる仮想SIMを使用し、 あたかも本物のSIMによって通信しているかの ごとく振る舞うから

  19. SORACOM Arc はなぜつながるのか • Arcの利用に際してはVirtual SIMの作成が必要 • Virtual SIMのIMSIとIPアドレス/鍵情報が内部的に対応 •

    「VPN内のIPアドレス」と「鍵情報」がマッチしたときに WireGuardのトンネルが確立される • => トンネルが確立すると推移的にIMSIを特定できる • i.e. Virtual SIMの正体 • lMSI (トリビア: このIMSIは必ず `99999` からはじまる) • Device Peerの公開鍵
  20. SORACOM Arc はなぜつながるのか Device Private Key: XXX Device IP: 192.0.2.123

    Arc Server Public Key: YYY Arc Server Endpoint: example.arc.soracom.io 以下が全て満たされた時、トンネルを確立 • 送信されてきたArcサーバーの公開鍵と サーバーの秘密鍵が合致するかどうかを確認 • Device IPに関連するDeviceの公開鍵を探索 • その公開鍵と送信されてきたDevice秘密鍵 情報 (厳密には秘密鍵そのものではありません) が合致するかどうかを確認 リクエスト (トンネル確立ハンドシェーク) 送信 IMSI: 99999XXXXXXXXXX
  21. SORACOM Arc はなぜつながるのか IMSI: 99999XXXXXXXXXX Tunnel デバイス公開鍵からIMSIを特定し、 以降このトンネルを介した 通信にはIMSI: 99999XXXXXXXXXX

    を使用してプラットフォームを利用
  22. デバイスのブートストラップ

  23. デバイスのブートストラップ • SORACOM APIを利用する方法 • SORACOM Kryptonを利用する方法

  24. デバイスのブートストラップ - API Virtual SIM作成API API Server Arc Endpoint デバイスからVirtual

    Simを作成するシナリオ
  25. デバイスのブートストラップ - API Virtual SIM作成API API Server Arc Endpoint デバイスからVirtual

    Simを作成するシナリオ WireGuardセットアップ
  26. デバイスのブートストラップ - API Virtual SIM作成API API Server Arc Endpoint デバイスからVirtual

    Simを作成するシナリオ WireGuardセットアップ 作成したVirtual SIM情報 • IMSI • IP Address • Device Private Key • Device Public Key • Arc Server Endpoint • Arc Server Public Key
  27. デバイスのブートストラップ - API Virtual SIM作成API 作成したVirtual SIM情報 • IMSI •

    IP Address • Device Private Key • Device Public Key • Arc Server Endpoint • Arc Server Public Key API Server Arc Endpoint WireGuardトンネル確立リクエスト トンネル確立 デバイスからVirtual Simを作成するシナリオ
  28. デバイスのブートストラップ - API API Server Arc Endpoint 既存のVirtual Simをデバイスに当てて使うシナリオ Virtual

    SIMを再度作成する必要はない WireGuardトンネル確立リクエスト トンネル確立 作成したVirtual SIM情報 • IMSI • IP Address • Device Private Key • Device Public Key • Arc Server Endpoint • Arc Server Public Key
  29. デバイスのブートストラップ - Krypton 実SIMを介したブートストラップリクエスト Krypton Endpoint Arc Endpoint

  30. デバイスのブートストラップ - Krypton 実SIMを介したブートストラップリクエスト Krypton Endpoint Arc Endpoint WireGuardセットアップ

  31. デバイスのブートストラップ - Krypton 実SIMを介したブートストラップリクエスト Krypton Endpoint Arc Endpoint WireGuardセットアップ Virtual

    SIM情報 • IMSI • IP Address • Device Private Key • Device Public Key • Arc Server Endpoint • Arc Server Public Key
  32. デバイスのブートストラップ - Krypton 実SIMを介したブートストラップリクエスト Krypton Endpoint Arc Endpoint WireGuardセットアップ Virtual

    SIM情報 • IMSI • IP Address • Device Private Key • Device Public Key • Arc Server Endpoint • Arc Server Public Key WireGuardトンネル確立リクエスト トンネル確立
  33. デバイスのブートストラップ Pros Cons API • Virtual SIM単体で 利用可能 • デバイスからAPIを呼ぶ場合は

    デバイス上にAPIトークンを 保持する必要がある • 認証情報を端末で持つ必要が Krypton • 認証情報を端末で持つ必要が 無い (実 • 実SIMが必要となる
  34. Arcの便利な使い方

  35. Arcの便利な使い方 • Wi-Fi/Cellular Dual-Stack • SORACOM Napter over Arc •

    SORACOM Gate D2D with Arc
  36. Wi-Fi/Cellular Dual-Stack 例: 移動端末 Air: Wi-Fi (固定インターネット回線) が利用不能な時

  37. Wi-Fi/Cellular Dual-Stack 例: 移動端末 Arc: Wi-Fi (固定インターネット回線) が利用可能な時

  38. Wi-Fi/Cellular Dual-Stack 例: 移動端末 Arc: Wi-Fi (固定インターネット回線) が利用可能な時 データ通信料金の削減が可能 =>

    例えば大容量通信のオフロードに
  39. SORACOM Napter over Arc Napter リモートアクセス

  40. SORACOM Napter over Arc Napter リモートアクセス

  41. SORACOM Napter over Arc Napter リモートアクセス エンドツーエンドでの コネクションの確立

  42. SORACOM Napter over Arc Napter リモートアクセス エンドツーエンドでの コネクションの確立 Arcで端末を接続しておくだけで いつでもリモートアクセスが可能に

  43. SORACOM Gate D2D with Arc VPG (Type-E) Gate Device to

    Device 有効 Arcが有効なデバイス
  44. SORACOM Gate D2D with Arc VPG (Type-E) Gate Device to

    Device 有効 Arcが有効なデバイス ログイン
  45. SORACOM Gate D2D with Arc VPG (Type-E) Gate Device to

    Device 有効 Arcが有効なデバイス ログイン デバイス間通信
  46. SORACOM Gate D2D with Arc VPG (Type-E) Gate Device to

    Device 有効 Arcが有効なデバイス ログイン デバイス間通信 安価にVPN利用の プライベート網を 構築可能 リモートからの メンテナンスも 安全かつ容易に
  47. Arc (WireGuard)のルーティング

  48. ルーティングについて ソラコムプラットフォームに接続するためには 100.127.0.0/16 をルーティングしなければなりません。 また、例えば前述のD2D通信をする際には WireGuardのトンネルを確立する際に適切な IPレンジ (10.0.0.0/8) も共にルーティングする 必要があります。

  49. ルーティングについて Wire Guard デバイス Data: 100.127.0.0/16 インターネット イントラネット Data: NOT

    100.127.0.0/16 Allowed-IP === ["100.127.0.0/16"]
  50. ルーティングについて Wire Guard デバイス Data: 100.127.0.0/16 or 10.0.0.0/8 インターネット イントラネット

    Data: NOT 100.127.0.0/16 and NOT 10.0.0.0/8 Allowed-IP === ["100.127.0.0/16", "10.0.0.0/8"]
  51. 新機能のご案内

  52. 新機能のご案内 SORACOM ArcのIPv6サポートが 2021年8月4日 (水) に開始される予定です

  53. 新機能のご案内 – IPv6サポート • *.arc.soracom.io ドメインがIPv4とIPv6の両方のレ コードを返却するdual-stackドメインになります • lPv6が利用可能なクライアント環境であれば、 ArcのWireGuardエンドポイントに対して

    IPv6での接続が可能となります
  54. 新機能のご案内 – IPv6サポート ⚠️ 注意 ⚠️ Soratunをご利用の場合、アップデートが必要です。 バージョンv1.1.0以降のバージョンに更新して いただく必要があります。 更新がされない場合、新規のArcセッションが

    構築できなくなる場合がございます。
  55. 新機能のご案内 新機能については今後も定期的に提供していく 予定ですのでご期待ください!

  56. SORACOM Arcを ぜひご利用ください! ! (1アカウントあたり1 Virtual SIMが毎月無料枠として無料で利用できます)

  57. None