LoginSignup
2
0

More than 3 years have passed since last update.

トンネリングツール「Tunnelto」をRaspberry Piで使う

Posted at

はじめに

Raspberry Piを使っているとローカルに立てたサーバーやポートをネットワーク外から参照したいと思うことがあるのですが、これまではngrokなどを活用してweb上から参照したりしていました。
Tunnlleto(作者のリポジトリ)はオープンソースソフトウェア(MIT)として開発されているRust製のトンネリングツールです。

(技術的な仕様の違いとして、インストールしたPC自体にサーバを立ててる?)

TCPやhttpでの通信をしているポートを指定して外部に公開できます。

環境

$ cargo -V
cargo 1.50.0 (f04e7fab7 2021-02-04)

構築

まずはcargoを入れましょう。
rustupのインストールと同時に入ります。(公式)
大変時間がかかるのでしばらく待ちましょう。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

入れた後に~/.bachrc

export PATH=$PATH:$HOME/.cargo/bin
source "$HOME/.cargo/env"

を雑に追記しました。(sourceで変数の保持をするのって本来の用途からするとどうなんだろう...ここ相談乗って欲しい)

次に、

$ cargo install tunnelto

してTunneltoをインストールします。

$ tunnelto --help

でオプションの確認ができればインストールできています。

ちなみにLinux向けにアーカイブファイルがリリースされているのですが、バイナリ版だと動いてくれなかったので(armだから?)、cargoを使ってインストールしました。

issueにもRaspi4にUbuntuを入れて運用しているユーザーからもrustupして入れてねと情報が寄せられていました。

使用する

ssnetstatで外部にトンネリングしたいポートを探して、tunnelto --port 4000すると、

$ tunnelto --port 4000

                              %%%%
                              %%%%
             ,,,,,,,,,,,,,,
   %%     ,,,%%%%%%%%%%%%%,,,
  #%%     ,,%%%%%,,,,,#%%%%,,
            ,,,,,,#%%,,,,,,,   ((
              .%%%#%%%%#%
                 %%%%#
                  %(%
                 (%%%(
        ((     (%%%#%%%%#
            ,,,,,,,,,,,,,,,          %%%
          ,,%%%%%%,,,#%%%%%,,
 %%       ,,,%%%%%%%%%%%%%,,,
 %%%        ,,,,,,,,,,,,,,,


⣷ Success! Remote tunnel created on: https://{yourHost}.tunnelto.dev
=> Forwarding to localhost:4000

Local Inspect Dashboard: http://localhost:XXXXX

と出力され、下部にリクエストとレスポンスが記載されていきます。
{yourHost}を含んだURLが外部トンネリング可能なリンクとなります。

Ctrl+Cで停止します。

通信の保持について

多くの場合Raspberry Piにはsshでアクセスしていることと思いますが、 Tonneltoを動かした状態でexit(セッションを終了)すると同時にプロセスが落ちます。
そこで私の場合はtmuxで立ち上げてデタッチ後exitしてTunneltoをssh終了後も動かし続けました。

ただしこれは私の理解の浅いところで、しばらくするとセッションが切れてしまうので、Tonneltoとtmuxの仕様の両方の面をもっと勉強してみる必要があります。

通常起動後にバックグラウンドプロセスに送ってみることも試しましたが、こちらはexit後すぐにトンネリングが切れてしまいました。

公式サイトへの登録で先行サービスのngrokのようにwebサービス上でのステータスが確認しやすくなるのかは追って確認していきます。

なお、サブドメインを立てる値段は$2/monthらしいので競合より安いみたいですね。

その他

  • mac版はbrewでも入るそうで、一層かんたんに導入できますね。

  • 私の場合はDockerでポート3000に立てたGrafanaを外部公開する目的でTunneltoを使いました。

  • ngrokではサーバーの立ち上げ後curl localhost:80/api/tunnelsでpublicに公開されているURLを取得してこれるのですが、Tunneltoにはこの機能はまだありません。
    ポートの公開開始時にSuccess! Remote tunnel created on: ~~が表示されるのにコンソール上のプログレス表示を伴うので、nohupなどで出力すると肝心のURLが標準出力として吐き出されないという困った点があります(これもあって前述のtmuxなどを使った)
    これについても何か対応したいとのコメントがissueにありました。

リンク

agrinman/tunnelto(Github)
Tunnel to dev(サービス版公式サイト)

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0