概要
研究で使うRaspberry Pi,フィールドに置くことが多いんだけど,測定中にネットワーク越しに接続したい。
3台までならRealVNC(https://www.realvnc.com/en/)がお手軽でとても良いのだけれど,それを超えると結構な額の継続出費になる。
TeamViewerはなんだか安定動作しないし,そもそも個人利用でない場合はこれも有償。
そこで色々と探していった結果,Cloudflared Zero Trust Tunnelにたどり着いた。ドメインとかレンタルサーバーとか考えると有償なんだけれども,上記のサービスに比べるとだいぶリーズナブルな気がする。
なお,素人による備忘録なので,下記手順が最も効率的かどうかは保証しない。
ふわっとした理解
ドメインを取得し,DNSをCloudflaredのサーバーに設定する。
その上で,接続したい端末にてCloudflared Tunnelをホスト名(上記ドメインのサブドメイン)とともに設定しておくと,Cloudflared側で名前解決をしてくれて,外部ネットワークから接続できるようになる。
ただし,実際には,外部ネットワークから端末に向けて接続をしているのではなくて,端末から外部ネットワークに向けて接続しているので,ファイアウォール等を突破できる。このあたりの仕組みはTeamViewerと同じ。
ドメイン取得
ともかくドメインの取得。サーバーも必要。
素人の私は,業界最大手という名に負けてXServerでレンタルサーバーもドメインも合わせて契約。分けるのも面倒だし。10日間の無料期間があるので(時期によって違うかもしれない),その間に動作確認可能。無料期間が終了したらスタンダードプランで1000円/月程度。
ちなみに,jtagu.net
というドメインを取得してみた。
目的としては,koguma.jtagu.net
というアドレスで,Raspberry Piに接続したい。
Cloudflare アカウント取得/DNS設定
ここからサインアップ。
「ドメインを追加」で上記のドメインを選ぶと,DNSのアドレスが出てくるので,それをXServerのドメイン管理ページの「ネームサーバー設定」に打ち込む。
この設定が反映されるまで,数時間かかる。
Zero Trust 設定
Cloudflareのサイトのタブに「Zero Trust」というのがあるので,そこからアカウントを設定する。
ちなみにZero Trustに入るともはや日本語サイトは消え失せる。
とりあえずは無料の「Free」で良いと思われる。ただし,0円でも支払方法の登録(=クレジットカードの登録)が必要。
下の図はRaspberry Piを1台登録した後のスクショなので,もしかして,もしかしなくてもFreeで50台まで登録できるのだろうか…?ちなみにStandardプランだと$7/seat/month,となっている。(この価格ならRealVNCの方が良いと思う)
Tunnel 設定
Raspberry Pi本体で,下記手順を行う。
基本このままだけど,一応手順を書いておく。
Cloudflared をインストール
https://github.com/cloudflare/cloudflared/releasesを確認して,wget
,apt install
wget https://github.com/cloudflare/cloudflared/releases/download/2023.3.1/cloudflared-linux-armhf.deb
sudo apt install ./cloudflared-linux-armhf.deb
ログイン認証
以下のコマンドでCloudflareにログインし,登録してあるドメインを選択する。
cloudflared tunnel login
トンネル作成
以下のコマンドでトンネルkumatunnel
が作成される
cloudflared tunnel create kumatunnel
これを行うと,~/.cloudflared/hinna-hinna-uma-uma.json
の様なファイルが生成される。これがトンネルの認証情報で,hinna-hinna-uma-uma
の部分がトンネルのID。
そうしたら,~/.cloudflared/config.yml
という設定ファイルを作成する。
tunnel: kumatunnel
credentials-file: /home/hoge/.cloudflared/hinna-hinna-uma-uma.json
ingress:
- hostname: koguma.jtagu.net
service: ssh://localhost:22
- service: http_status:404
で,tunnelとDNSを紐づけて,走らせる。
cloudflared tunnel route dns kumatunnel koguma.jtagu.net
cloudflared tunnel run kumatunnel
ブラウザからSSHできる様にする
これもまんまココのやり方を踏襲。
Access groups 設定
上記のサイトでは省略されているけど,先にアクセス可能なグループを定義しておかないといけない。
Cloudflare Zero Trust の Access -> Access groups
から, Add a Group
を押して,適当なグループを作成する。
とりあえず,メールアドレス定義で,自分だけ入ったグループを作成した。
Applications 設定
完全にここの通りなので省略
できた!
とりあえずできた!
あとは,Tunnelをサービス登録しておくことと,セキュリティ周りのアレコレを確認しておくこととかかな。
費用はレンタルサーバー・ドメインの分だけ!
SSHが出来るということはRDPもできるということなので,まあそれは今後考えましょう。