結論: Tailscale最高
タイのLazadaで5万円前後で購入したBMAX B8 proという小型PCをもはやメインでがっつり使っているのだが、
旅行先からもWSLにSSHで接続できてvscodeが開けて、MySQLに接続できて、PHPやPythonのプロジェクトをhttpで開けたら最高だよなと思っていたら、Tailscaleというサービスで実現できるとのこと。
しかも固定IPを用意せずに、安全に自分専用に自宅サーバー化できてしまう。
これでレンタルサーバーを借りずに、動画のエンコードもできる割と高スペックでかつ電気代もかからない最強サーバーが用意できた。
Tailscaleインストール
まずは外出先で使うラップトップの方に入れた。
WindowsやMacの場合はダウンロードページでインストールファイルをダウンロードできる。
アプリを開くと初期設定画面がでるので、画面に従って進めていく。
それぞれGoogleのアカウントでログインすると便利だよ。

すると二つ目のデバイスを追加してと言われるので、次は自宅サーバーであるWSLに入れていく。
ここではLinuxを選択。

Linuxの場合は下記のコードでインストールできるとのこと。
# インストールコマンド
curl -fsSL https://tailscale.com/install.sh | sh

インストール後下記コマンドを実行する。
# 実行
sudo tailscale up
# するとこのようなログインURLが出力される
https://login.tailscale.com/a/XXXXXXXX
すると無事追加され、二つのデバイスが繋がった。
念のため表示されたpingコマンドで仮想ipにアクセスできるか試してみる。

なぜかMacでネットに接続できなくなる
ところがMacbookAir M2でアプリインストール後にConnectしたところ、pingのテストに失敗。何度かアプリを再インストールしてもうんともすんともいわない。
そしてネットにも接続できなくなってしまっていた。
VPNに接続がうまくいっていない?
いろいろとMac tailscale can't connect internet等調べるも、結局Mac再起動で直った。なんだったんだ。。
WSLのwebサーバーにchromeからアクセス
WSLにてapacheやnginxを起動している場合は、これで自宅PCのWSLに割り当てられたtailscaleの仮想ipをChromeで開けば、webが開けるはず。
自作ドメインをWSLのwebサーバーで設定している場合は、同様に外で使うPCのhostsファイルにもipと自作ドメインを登録しておこう。
WSLのUbuntuにssh接続
外出先からvscodeで開発やソースコードの調査をしたいときがある。
WSLにsshでアクセスできるように以下のコマンドを実行。
$ apt install openssh-server
$ sudo service ssh start
これで外出用PCからsshでアクセスできるはず。
sshの設定(ポートや認証方法等)やコマンドは自由に設定してほしい。
ssh -l user WSLの仮想ip
# userのパスワードを入力
sshが繋がらなくなった?
ある日急にsshが繋がらなくなったのでデバッグモード(-v)でコマンド実行してみると、
expecting ssh2_msg_kex_ecdh_reply
の表示で止まってしまっていた。
これはどうやらWSL特有の問題?MTUという値を調整する必要があるみたい。
参考URL: https://github.com/tailscale/tailscale/issues/4833
早速試してみた。
まずはipコマンドで現在のMTUを確認してみる。
$ ip a
...
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1280 qdisc mq state UP group default qlen 100
...
19: tailscale0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN group default qlen 500
現在のmtuはeth0とtailscale0ともに1280。これが衝突してるのがよくないんだとか。
以下のコマンドでeth0のMTUを1500にしてあげたら直った。
$ sudo ip link set dev eth0 mtu 1500