soratun
(sora-com tun-nel。ソラタン) は、バーチャル SIM/Subscriber の作成、設定、および接続を支援する SORACOM Arc 用のクライアントエージェントです。デバイスにインストールして使用します。ソラコムが、soratun/LICENSE に基づいて as-is で提供しています。
soratun と WireGuard の比較
ソラコムでは、Arc を利用する際は soratun
の使用を推奨します。一方で、Arc は Linux カーネルに含まれる WireGuard 実装でも動作します。以下のような観点で、使用する実装を選択してください。
観点 | soratun の特徴 | WireGuard の特徴 |
---|---|---|
パフォーマンス | ユーザー空間で 1 つのプロセスとして動作するため相対的に低速です。 | カーネル空間で動作するため高速です。 |
安定性 | 公式の wireguard-go をライブラリとして使用しています。ソラコムでは、Linux カーネルに含まれる WireGuard 実装の方が、テストカバレッジが広いと考えます。 | カーネルの一部としてメンテナンスされているため、安定性は高いと考えます。 |
通信のセキュリティ | 公式の wireguard-go をライブラリとして使用しており、プロトコルや通信に関わる部分に変更を加えていないため、カーネルと同等と考えます。 | - |
導入方法 | 1 つのバイナリファイルのコピー (SIM 認証を利用する場合は Krypton CLI を含む 2 つのファイルのコピー) | OS のパッケージマネージャーによるインストール |
SORACOM との統合 | ブートストラップ (バーチャル SIM/Subscriber の作成、設定)、および SORACOM への接続が簡単です。 | SORACOM API などを利用し WireGuard の構成ファイルを自動的に生成するような仕組みの実装が必要です。 |
ブートストラップとは
デバイスからリクエストして SORACOM でバーチャル SIM/Subscriber を作成し、デバイスをプロビジョニングする (デバイスに WireGuard の接続情報などを保存する) ことを「ブートストラップ」と言います。
soratun の主な機能
soratun
は、以下のような機能を提供します。
Arc で SORACOM に接続するための WireGuard インターフェースを作成します。
SORACOM への通信が WireGuard インターフェースを経由するように、OS のルーティングテーブルを設定します。具体的には、以下のネットワーク宛の通信を WireGuard インターフェース経由に設定します。すでに同じルートが定義されている場合は、上書きされます。
- バーチャル SIM/Subscriber を作成したときに、SORACOM から提供される
arcAllowedIPs
。 - soratun 設定ファイルにお客様が指定する
additionalAllowedIPs
。詳しくは、AllowedIPs の設定 を参照してください。
- バーチャル SIM/Subscriber を作成したときに、SORACOM から提供される
systemd の watchdog をサポートします。定期的に Arc の接続状況を systemd にレポートします。詳しくは、systemd を利用してデバイス起動時に WireGuard インターフェースを作成する を参照してください。
バーチャル SIM/Subscriber のブートストラップを支援します。
soratun
は、認証方式が異なる 3 種類のブートストラップ方式を支援します。詳しくは、ブートストラップの種類 を参照してください。enableMetrics
がTrue
に設定されている場合、60 秒ごとに以下のようなメトリックスをログに出力します。詳しくは、soratun 設定ファイルリファレンス を参照してください。soratun_sent_bytes_total{simId="バーチャル SIM/Subscriber の SIM ID",interface="インターフェース名",endpoint="SORACOM Arc エンドポイント"} 送信バイト数 soratun_received_bytes_total{simId="バーチャル SIM/Subscriber の SIM ID",interface="インターフェース名",endpoint="SORACOM Arc エンドポイント"} 受信バイト数 soratun_latest_handshake_epoch{simId="バーチャル SIM/Subscriber の SIM ID",interface="インターフェース名",endpoint="SORACOM Arc エンドポイント"} 最終ハンドシェイク時刻
ブートストラップの種類
soratun
は、バーチャル SIM/Subscriber をブートストラップする方式として、認証方式が異なる 3 種類のブートストラップ方式を支援します。
バーチャル SIM/Subscriber の作成方法 | バーチャル SIM/Subscriber の種類 | 認証のために必要な情報 | 説明 |
---|---|---|---|
SORACOM API の認証キーを使用する ( soratun bootstrap authkey コマンド) | プライマリ | SORACOM API の認証キー | SORACOM API の認証キーを、デバイスに安全に配布および保存する必要があります。デバイスが盗難された際に、認証キーが漏洩するリスクがあります。なお、IoT SIM は必要ありません。詳しくは、soratun で SORACOM API の認証キーを使用してバーチャル SIM/Subscriber をブートストラップする を参照してください。 |
SORACOM Air for セルラーのセルラー回線認証を使用する (*1) ( soratun bootstrap cellular コマンド) | セカンダリ | 任意のサブスクリプションの IoT SIM | SORACOM Air for セルラーのセルラー回線を使用して SORACOM に接続する必要があります。詳しくは、soratun でセルラー回線認証を使用してバーチャル SIM/Subscriber をブートストラップする を参照してください。 |
Krypton の「Endorse による SIM 認証」を使用する (*1) ( soratun bootstrap sim コマンド) | セカンダリ | Krypton の「Endorse による SIM 認証」 をサポートするサブスクリプションの IoT SIM (*2) | SORACOM Air for セルラーのセルラー回線は使用しないため、SORACOM に接続できていなくても、ブートストラップできます。詳しくは、soratun で SIM 認証を使用してバーチャル SIM/Subscriber をブートストラップする を参照してください。 |
- (*1) この方式では、Krypton を利用してブートストラップします。ブートストラップするたびに、別途 Krypton の料金 が発生します。
- (*2) サブスクリプションについて詳しくは、単体で契約するサブスクリプション を参照してください。
サポート対象プラットフォーム
soratun
は、以下のプラットフォームをサポートします。
- Linux amd64
- Ubuntu 20.04.2 LTS
- Linux arm (Raspberry Pi 32-bit)
- Raspberry Pi OS 2021-05-07
- Ubuntu 20.04.2 LTS
macOS はサポート対象外です
テストと開発用途として以下のプラットフォームで動作します。ただし、これらのプラットフォームはサポート対象外です。また、Krypton の「Endorse による SIM 認証」を使用したブートストラップはテストされていません。
- macOS Big Sur 以降