SORACOM Arc を使って EC2 に セキュリティグループを超えて SORACOM Napter でリモートアクセスしてみた

SORACOM から衝撃的なサービスが出てきました。SIM を挿せない仮想サーバでもSORACOM を利用できる世界がやってきました。
2021.06.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

昨日の 【6/22-24開催】SORACOM Discovery 2021 ONLINE 2日目で発表された新サービス「SORACOM Arc」を触ってみました。

本来は IoT デバイスやIoT システムの開発場面などでの利用が想定されるものかと思いますが、サーバや各種ネットワーク機器へのリモートアクセス用途としても利用できるのではないかと思い、SORACOM ArcSORACOM Napter を組み合わせて EC2 に接続してみました。

構成図

全体の構成イメージです。

  • EC2 のセキュリティグループは全てのインバウンドを拒否
  • EC2 のセキュリティグループはアウトバウンドだけ許可(デフォルト)
  • EC2 にバーチャル SIM を付与
  • 手元のPC(Mac) から SORACOM Napter で接続

20-diagram

それでは実際に設定していきたいと思います。

SORACOM Arc の設定

下記のドキュメントを元にバーチャル SIM/Subscriber を作成します。

ドキュメントにも記載されていますが、注意点としてSORACOM のコンソールで作業する場合は、「サブスクリプションコンテナに対応した新しい SIM 管理画面」で 作業するようにしてください。切り替えずに作業すると バーチャル SIM を作成しても接続情報が表示されません。

08-change-console

コンソールを切り替えられたら、コンソール上部にある「SIM 登録」 をクリックします。

09-regist-vsim2

次の画面で「バーチャル SIM を登録」タブに切り替えて「登録」 タブをクリックします。

02-regist-vsim

登録ボタンをクリックすると、下記のように接続情報が表示されます。これは後ほど使うのでそのままコピペして適当なテキストに保存しておきます。
(PrivateKey は後から参照できないので、コピペし忘れたら作成し直す必要があります。)

03-success-regist

SORACOM Arc 側の作業はこれだけです。

EC2 側の準備

次に SORACOM Napter で接続する EC2 を用意します。今回は、執筆時点で最新の Amazon Linux2 ( ami-06631ebafb3ae5d34 )を使いました。

SORACOM Arc では、この EC2 から SORACOM プラットフォームに対して WireGuard による VPN 接続を行うため、EC2 で WireGuard が利用できる必要があります。

WireGuard の導入は下記公式ドキュメントにある CentOS 7Method 3 を参考にしました。

$ sudo yum -y update
$ sudo amazon-linux-extras install epel
$ sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo curl -o /etc/yum.repos.d/jdoss-wireguard-epel-7.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
$ sudo yum -y install wireguard-dkms wireguard-tools

パッケージのインストールができたら設定ファイル(/etc/wireguard/wg0.conf)を作成します。この設定は SIM 登録時に出力されるものをそのままコピペします。

sudo vi /etc/wireguard/wg0.conf

バーチャル SIM の登録画面で控えておいた接続情報をそのまま貼り付けます。

[Interface]
PrivateKey = <YOUR_PRIVATE_KEY>
Address = 10.xxx.xxx.xxx/32

[Peer]
PublicKey = <YOUR_PUBLIC_KEY>
AllowedIPs = 100.127.0.0/16
Endpoint = xxx.arc.soracom.io:11010

設定ファイルが作成できたら WireGuard で接続します。

sudo wg-quick up wg0

route コマンドで確認すると下記のようにwg0というインターフェイス名でソラコム側への経路が追加されていることが分かります。

11-ec2-route

この状態で SORACOM に疎通確認してみます。

ping pong.soracom.io

06-ping-soracom

EC2 から 物理 SIM 無しで SORACOM プラットフォームにアクセスできました!

SORACOM Napter の設定

次に SORACOM Napter で EC2 にアクセスしてみましょう。ドキュメントは下記になります。

作成した仮想 SIM を選択して「オンデマンドリモートアクセス」を選択します。

04-napter-start

接続するデバイス( EC2 )側のポートや利用時間、アクセス元の IP アドレスレンジを設定します。今回は手元の Mac から接続するので「アクセス元 IP レンジ」には自宅の IP を設定しました。
(画面にかかれている通り空欄の場合は、コンソールにアクセスしているグローバルIPが指定されます)

05-ondemand-remote-access

設定が完了すると、SORACOM Napter 経由でアクセスするホスト名などの情報が表示されるので、これらの情報を元に EC2 へ接続します。

07-napter-connect-method

すぐに接続したいところですが、EC2 のセキュリティグループで許可ルールを全て削除してから接続してみたいと思います。
下記のように接続先の EC2 のセキュリティグループからインバウンドの許可ルールを全て削除しておきます。(実際の利用では全て削除することは無いと思いますが…)

10-no-inbound-rule-security-group

この状態で SORACOM Napter の接続情報を元に SSH 接続してみます。

ssh -i <Your SSH Key> -p xxx ec2-user@xxx.napter.soracom.io

セキュリティグループを超えて EC2 に接続できました!

12-ssh-from-mac-to-ec2

最後に

SORACOM Arc の登場で、物理 SIM を持たない仮想サーバに対しても SORACOM Napter で接続できるようになりました。IoT とは異なる使い方ですが、サーバのリモートアクセスにも使えてしまうSORACOM Arc すごいですね。

以上です。