remote.it とは
一言でいうと簡単に利用できる、P2P接続サービスになります。
リモートワークの普及に伴い、サイバーセキュリティに関心を置く会社も増えたのではないででしょうか?
そんな時remote.itを使うことで、セキュリティリスクを抑えてグローバルIPから社内LANに接続する仕組みを簡単に作ることができます!
「ポート解放が不要な点」や、「P2P接続するポートを制限することが可能」なため、かなりセキュアにアクセスすることができます。
今回はremote.itを使って「安全に」外部のインターネットから社内LANにアクセスしてみたいと思います。
(ついでにミニアプリを作ってみます。)
※もちろん情シスからはOKを貰ってますよ!
それではさっそく作っていきましょう!
事前準備
[ハードウェア]
- RaspberryPi 4B (必須)
- SwitchBot (ミニアプリを作る場合必須になります。ラズパイへSSH接続するだけなら不要です。)
[その他]
- remote.itのアカウント発行
remote.itのインストール
公式のDocが充実しているので迷うことはないかもですが、パッケージのインストールからは書かれていなかったので以下の手順でインストールを進めてください!
まずはラズパイにremote.itをインストールします。
# remote.ioのインストール
$wget https://downloads.remote.it/cli/v1.8.8/remoteit.arm-v6-linux
$sudo cp ./remoteit.arm-v6-linux /usr/bin/remoteit
$sudo remoteit agent install
$sudo remoteit tools install
#インストールされているか確認
$remoteit version
1.8.8
その後、事前準備したremote.itのアカウントを使い、サインインとデバイスの登録を行います。
# サインイン
$sudo remoteit signin
Username: test@example.com
Password: ✓ SIGNIN in progress ...
✓ NEXT-ACTION: run 'remoteit register' to register this device into your remote.it account
# ラズパイをP2P接続できるように登録
$sudo remoteit register
Device name: RaspberryPi
✓ REGISTER in progress ...
✓ NEXT-ACTION: run 'remoteit add' to add services to this device
P2P接続を許可するポート番号を指定します。
# P2Pの設定を追加
$sudo remoteit add
Enter Service Type ('ID' or 'Name', not case sensitive, default is 'ssh'): 1
Enter Port (default is '0'): 3000
Enter Service Name (default is 'MyService'): Next.js
# SSHもついでに登録(対話形式でなくフラグでも登録できます)
$sudo remoteit add --name ssh --port 22 --type 28
以上でラズパイ側の設定は完了です!
[公式Doc]
P2P通信をしてみる
ここまで来たら後はP2P接続するだけです!
以下からremote.itの管理画面にログインしてください。
SSH接続
ログインに成功すると以下のような管理画面に飛ぶと思います。
ラズパイの登録がうまくいっていれば、赤枠のようにDevices
へ登録されているはずです。
先ほど登録した「ssh」をクリックし、「Connectボタン」を押すと、赤枠にURLとポート番号が発行されますのでコピーしておきましょう!
発行されたURLとポート番号を使ってSSH接続を行います。
# リモートでSSHができるか確認
$ssh {ラズパイのユーザー名}@{発行されたURL + PORT番号}
password:
# 接続成功したら以下のようになります。
user@raspberrypi:~ $ remoteit version
1.8.8
コネクション切断が起きたら当然SSH接続も終了しますね。
# コネクション切断時
user@raspberrypi:~ $ Connection to proxy71.rt3.io closed by remote host.
Connection to proxy71.rt3.io closed.
Webアプリへアクセス
今回は社内ミーティングルームの利用状況がわかるサンプルアプリを作りました。
(「照度センサー」を使い、明るさで人の有無を判定します。)
先ほどのSSH接続と同様、管理画面 > RaspberryPi > 接続先(今回は「Next.js」) > Connectボタン という流れでコネクションを確立すると URLが発行されますのでこれをコピーしブラウザからアクセスします!
コピーしたURLを貼り付けると、作成したアプリが表示されました。
「ラズパイは社内LAN」、「PCは外部ネットワーク」でアクセスしていますが、ミーティングルームのリアルタイム空室状況が確認できました!
(サンプルアプリを作ってたせいで、投稿ギリギリになってしまいました...)
最後に
QiitaEngineerFesta2022のテーマとして「remote.it」の記事を書きましたが、めちゃめちゃ便利なサービスですね!
会社だけでなく、個人で使う場合もたくさんの使い道がありそうだなと感じました!