前提
随分と前にはなりますが、ngrokが有料化しましたね。
今回は、ngrok有料化に伴い、代替サービス・手段を模索してたらCloudFlaredに辿り着いたという話になります。
なぜngrokが必要だったか
ユースケースとして、Raspiで構成したロボットなどをインターネット越しで操作したいことが多々あります。
例えば、つい最近になるのですが、新ROBO剣というロボコンのプレ大会に参加しようとしたところ、別イベントが重なってしまったことがありました。
その際に、ロボットだけを持って行ってもらい、遠隔から操作を行うといったことをしたのですが、冒頭の通りngrokが一部有料化してしまい困ってしまいました。
その際は一旦1回線が一時的につながれば問題なかったので、ngrokの無料枠でことなきを得たのですが、ロボットが増えたり、固定のドメインが使えないなど多くの問題が露呈しました。
代替手段1 SSHポートフォワーディング
まず代替手段として考えたのがSSH Portfowardingです。
https://tech.fez-inc.jp/5d386d80756c4295822bef7a7b615907
この記事にあるように、ngrokの代替手段と検索した時にヒットしたためです。
この手段では、sshコマンドに用意されている、RemoteFowardingを使用して接続先のポートを、ネット上のサーバー(ここではLightSail上に用意したインスタンス)にマッピングする方法です。
この方法の利点としては、例えばLightSailなら月額3.5ドル 程度で実現が可能と、ngrokよりも安く使うことができることが挙げられます。
また、LightSailのIPをDNSに登録しておけば、固定ドメインでアクセスも可能になります。
ただし、すべての通信経路がLightSailを経由するため、LightSailのリソース状況に大きく左右されます。
代替手段2 CloudFlared
そんなSSHポートフォワーディングを試して、接続できたと喜んでいたのも束の間、見つけたのがCloudFlaredです。
CloudFlaredは、CDNやDNSで有名なCloudFlareが提供しているもので、少し前までCloudflare Argo Tunnelと呼ばれていたようです。
仕組みとしては、ngrokに近く、TunnelをCloudFlareとPC間で作成して、新たに発行されたドメインに紐づけてくれる(Proxyしてくれる)仕組みになります。
このサービスのすごいところが、基本的に無料で使えることと、ドメインを取得(正確にはCloudFlareでDNS管理している)場合に、サブドメインにこのProxyを使えるというところです。
つまり、無料でサブドメインに固定できる上に、ほぼ無制限(公式ドキュメントによると1000Tunnelまで)で使える、ProxyのスピードもLightSailに比較できないほど早い環境が作成できます。
つまり、コスパで考えるなら、
CloudFlared >>> SSHポートフォワーディング(LightSail) > ngrok
パフォーマンスで考えるなら
CloudFlared ≒ ngrok >> SSHポートフォワーディング(LightSail)
となり、どれをとってもCloudFlared一択となりました。
Proxyできる種類としても、SSHだけでなく、HTTP, UNIX, TCP, RDP, UNIX+TLS, SMB・・と非常に多岐に渡り、SSHできる時点で、なんでもフォワードできそうです!
今後このブログで、CloudFlaredを使って複数ルート登録する方法をお伝えできればと思っています〜。