ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Tailscaleで楽々在宅ワーク

(2024-03-06 初稿 -2034-03-12 追記)

職場から自宅のサーバ、在宅ワークだと自宅から職場、出張先から職場のサーバ等、常用ではないにしても、アクセスしてファイルを取り寄せたり、送り場合が多々ある。

このようなファイヤーウォールやルータを超えた作業が必要な場合、これまではTeamViewerを利用していた。

TeamViewerは無料でも利用できて大きな不満はなかったが、強いてあげれば以下の2点が不満だった。

  • CUIで済む作業なのに、VNCで画面全体を接続して作業する必要がある
  • 無料のアカウントだと、2〜3時間で1度切断される

sshやscpならば、ターミナルからちょこっと作業するだけで済むのに、画面全体を使って作業することに、少し無駄が多いと感じてしまう。

Tensorflow等、時間が掛かる作業を実施しているときに、突然、サービスを切断される。もちろん、作業は中断せずにバックグラウンドで実行されており、再接続すれば、これまでどおり作業を継続できるのだけど、突然の切断はやはりドキッとすることには間違いない。

そんなことを感じながら、Webで作業していたら、作日(2024年3月5日)、Tailcaleという VPN サービスがあり、無料でも利用できることを知ったので試してみた。

実は、利用し始めて2日目と、まだまだ日が浅いので、筆者の行ったインストールとssh等の簡単な設定を行う。

インストール

インストール方法は、以下の本家のサイトに詳細な記述があるので、そちらを参照して欲しい。

以下は、筆者が主に使っているDebianRaspberry PiAndroidWindows 11のインストール方法について記述する。

Debianでのインストール

Debian 12(Bookworm)での設定は以下を参照のこと。

ちなみに、他のディストリビューションでも、以下のサイトに記述があるので問題なくインストール可能と思われる。

念のために、行った設定を以下に記述する。

gpgのダウンロードとaptの設定

$ curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
$ curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list

Tailscaleのインストール

$ sudo apt-get update
$ sudo apt-get install tailscale

PCの接続とブラウザでの認証

$ sudo tailscale up

ipv4のアドレス確認(しばらくすると、ブラウザ上でも確認できる)

$ tailscale ip -4

Raspberry Piでのインストール

Raspberry Piのインストールも、ほぼdebianと同じで、以下を参照のこと。

しかい、なぜか2024-03-06時点では、Bookwormの記述がなかったので、Webを検索して以下のサイトを見つけたので、記述のとおり行った。

# Add Tailscale's GPG key
$ sudo mkdir -p --mode=0755 /usr/share/keyrings
$ curl -fsSL https://pkgs.tailscale.com/stable/raspbian/bookworm.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
# Add the tailscale repository
$ curl -fsSL https://pkgs.tailscale.com/stable/raspbian/bookworm.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
# Install Tailscale
$ sudo apt-get update && sudo apt-get install tailscale
# Start Tailscale!
$ sudo tailscale up

Androidでのインストール

筆者は、長期の出張などではノートPCを持参することが多いが、短期の出張ではより軽量なAndroidタブレットを持参することが多い。

以下、サイトの記述から引用。

Download · Tailscale

  1. Install Tailscale on Android
  2. Download and the Tailscale app from the Play Store
  3. Accept the prompts to install a VPN configuration
  4. Sign up with your team’s email address

Windows 11でのインストール

Windowsのインストールは、Androidと同様に簡単で、以下のページのとおり実施する。

  1. Tailscaleをダウンロード
  2. ダウンロードしたTailscaleをインストール
  3. Googleアカウント等でログインして、認証

Tips

ここでは、Tailscaleを利用する上で、筆者が行っているTipsを紹介する。

WakeOnLanの活用

筆者のTailscaleの利用方法は、自宅ではRaspberry Piのみを常時起動させており(踏み台サーバと言うらしい)、Raspberry PiからWakeOnLanを利用して、デスクトップPCを起動させ、起動後は、デスクっトプPCとssh接続をして利用している。

起動に時間が掛かるが、消費電力や発熱からの火事等を考えると致し方ない待ち時間だと考えている。

WakeOnLanについては、過去に以下の記事を書いたので参照願う。

と書いたものの、ちょっと情報が古すぎたので、以下のサイトを参考に

筆者は、以下のスクリプトを常時起動させているRaspberry Piにインストールして、目的のPCをWakeOnLanで起動後、利用するようにしている。

$cat ~/bin/wol
#!/usr/bin/sh
# wol ver0.01 2004/02/03-
# Written by H.Yamada
case $1 in
    kawa | KAWA | Kawa ) echo "Wakeup kawa"
     wakeonlan -i 192.168.xxx.255 xx:xx:xx:xx:xx:xx ;;
    niji | NIJI | Niji ) echo "Wakeup niji"
     wakeonlan -i 192.168.xxx.255 xx:xx:xx:xx:xx:xx ;;
    * ) echo "error:  $1 is unknown machine"
    echo "Usage: wol machinename"
    exit 1 ;;
esac
exit 0

もちろん、PC名やMacアドレスは、ご自分の環境に合わせてね。

sshの設定

sshについても、以下のページに記述した。

ここでは、~/.ssh/configに以下の記述をすると、簡単にリモートPCに接続できること飲みを紹介する。

$ vi ~/.ssh/config
    host hoge                    # 覚えやすいホスト名のalias
    HostName remote.example.com
    User user                    # リモートホスト側のユーザー名
    ForwardX11 yes               # X11GUIを表示

Forward X11をyesにすることにより、リモートPCのGUIソフトウェアを手元のPCに表示・操作することができる

ssh接続でリモートPCのpcmanfm(ファイルマネージャ)を起動

(2024-03-12追記)

知らなかったのだが、Windows 11では、Linux同様にconfigファイルを使うことができる。

具体的には、C:\Users\hoge\.ssh\config ファイルを作成し、上記のサーバごとのリストを書き込めば良い。

(追記終了)

多段のsshの方法

前節で、~/.ssh/configの設定の記述をしたのは、多段のsshの設定を記述するためである。

前述のとおり、筆者はRaspberry Piを踏み台サーバにして、自宅内のPCに接続するため多段のsshを記述すると、直接目的PCを操作しているかのように自宅内のPCにアクセスできるようになる。

踏み台サーバをhoge、目的サーバをfugaとした場合、多段サーバのconfigは以下のとおり。

$ vi ~/.ssh/config
    host hoge                    # 覚えやすいホスト名のalias
    HostName remote.example.com
    User user                    # リモートホスト側のユーザー名
    ForwardX11 yes               # X11GUIを表示

    host fuga
    Hostname 100.122.41.103
    User user
    ProxyCommand ssh -W %h:%p hoge
    ForwardX11 yes               # X11GUIを表示

その他

Tailscaleには、筆者がまだまだ知らない機能がたくさんある。

TailscaleをインストールしたPCのサブネットを登録する

TailscaleをインストールしたPC(Raspberry Pi)のサブネットを登録すれば、各ネットワークに1台だけTailscaleをインストールして、他の多くのPCをインストールしなくて済みそう…

たぶん、多段sshも不要になると思われる。

TailscaleをインストールしたPCをデフォルト・ゲートウェイにする

公衆Wi-Fi等のセキュリティが甘い場所でWeb操作する場合に、一度自宅等にTailscaleで接続してから、安全なネットワークで操作すると安心である。

 

上記の他にもたくさん便利な機能がありそう…

筆者が試して、便利であれば、追記する。

 

関連ページ