任意の IP ネットワークからSORACOMプラットフォームへ接続できるSORACOM Arc。
Dockerで動かすときに少し詰まったので共有です。
2022/2/25追記
Dockerfile
を使ったより簡単なセットアップ方法を追記しました。
このリポジトリのREADMEに従ってコンテナを作成することですぐにDockerでSORACOM Arcを使用できます。
環境
- Windows 11
- WSL2 (Ubuntu 20.04)
- CPU Architecture: x86_64
- Docker 20.10.11
Dockerイメージを取得
今回はUbuntu 20.04を使用しました。
$ docker pull ubuntu:20.04
公式ドキュメントによると、サポート対象は次の通りです。
以下のプラットフォームをサポートします。
- Linux amd64
- Ubuntu 20.04.2 LTS
- Linux arm (Raspberry Pi 32-bit)
- Raspberry Pi OS 2021-05-07
- Ubuntu 20.04.2 LTS
コンテナの作成&起動
$ docker run --cap-add NET_ADMIN -it ubuntu:20.04
--cap-add
とはデフォルトで無効化されている capability を有効化するためのオプションです。
SORACOM Arcのトンネルを作成するにはNET_ADMINの権限が必要です(参考)。
capabilityとは?
Linuxにはこのような場合に使える,rootが持っている絶対的な権限を細かく分け,必要な権限だけを与える仕組みが存在します。これがケーパビリティ(capability)です。
パッケージのインストール
取得したDockerイメージはのちに使うパッケージがいくつかインストールされていないので、インストールしておきましょう。
$ apt update && apt install -y wget iputils-ping net-tools
/dev/net/tunの作成
$ mkdir -p /dev/net
$ mknod /dev/net/tun c 10 200
$ chmod 666 /dev/net/tun
soratun によるバーチャル SIM/Subscriber のブートストラップ
公式ドキュメントの通りにやるとうまくいきました。
ただし、ステップ4の
soratun --config /path/to/arc.json up
を実行するとセッションが開始されます。これは生かしておく必要があるので、別のターミナルで
$ docker exec -it YOUR_CONTAINER_ID /bin/bash
をして
$ ping -c 3 pong.soracom.io
をすることで疎通確認ができます。
後記
soratunって名前かわいいな、と思ったら sora-com tun-nelのことなんですね。