前回の記事の続き?です。
前回、大学時代に使っていたDellのPCをLinuxに変更しました。
その時の記事はこちら↓
ここから、VPNで接続したいよねって思いVPNを調査したところTailscaleという超簡単なVPNを見つけたので記録に残した。
本記事は僕が行った手順で記述しているが、言語化が不得意なためAIに力を借りたよ。
調査内容も、全て目を通しているので一応正しいと思っています。(僕が間違えてたらすいません。)
VPNの2種類を整理する
SurfsharkやNordVPNのような「IP秘匿サービス」を思い浮かべるかもしれないが、今回使いたいのはそれとは目的が違うVPN。
| 種類 | 目的 | イメージ |
|---|---|---|
| 商用VPN(Surfshark等) | IPアドレスの秘匿、地域制限の回避 | 変装して街を歩く |
| Tailscale | 自分のデバイス同士をプライベートにつなぐ | 自分の部屋同士を秘密の通路でつなぐ |
Tailscaleは後者。自宅にいなくても、カフェから自宅サーバーにまるで隣にあるかのようにアクセスできるようにするのが目的。
Tailscaleの仕組み
- WireGuardベースのメッシュ型VPN
- 中央サーバーを経由せず、デバイス同士がP2Pで直接通信するため高速
- インストールすると各デバイスに
100.x.y.zという専用のIPアドレスが付与される - この専用IP宛ての通信だけが暗号化トンネルを通る。普段のネット通信には影響しない
つまり、PCからサーバーの Tailscale IP にアクセスすれば暗号化された安全な経路を通り、通常のWebブラウジングはいつも通り。全通信を迂回させる商用VPNとはここが違う。
導入手順
サーバー側(Ubuntu)
curl -fsSL <https://tailscale.com/install.sh> | sh
sudo tailscale up
tailscale status
tailscale up を実行するとログイン用のURLが表示されるので、ブラウザで開いて認証する。
クライアント側(Mac / Windows / スマホ)
公式サイトまたはApp Storeからアプリをインストールして、同じアカウントでログインするだけ。
これで、サーバーとクライアントが同じ Tailscale ネットワーク(tailnet)に入る。
おすすめの追加設定
MagicDNS
管理画面(login.tailscale.com/admin/dns)でMagicDNSを有効にすると、IPの代わりにホスト名でアクセスできるようになる。
Tailscale Funnel(一時的なWeb公開)
開発中のアプリを一時的に外部に見せたい場合:
sudo tailscale funnel 3000
Tailscaleを入れていない人でもブラウザでアクセスできるURLが発行される。
止めたい時は:
sudo tailscale funnel --reset
ただしFunnelはHTTPS(443)のみで帯域制限もあるため、数人に見せる程度の用途向き。本格的な公開にはCloudflare TunnelやVPSへの移管を検討する。
SSH接続をTailscale経由に切り替える
Tailscaleを導入したら、SSHの接続先をローカルIPからTailscale IPに変更する。
ssh <ユーザー名>@<サーバーのTailscale IP>
これで、自宅の外からでもサーバーにSSH接続できるようになる。
ルーターのポート開放は不要で、Tailscaleの暗号化トンネルを通るのでセキュリティも高い。
VSCode Remote-SSHとの組み合わせ
Tailscale + VSCode Remote-SSH の組み合わせは非常に快適。
- VSCodeに「Remote – SSH」拡張をインストール
Ctrl+Shift+P(MacならCmd+Shift+P)→ 「Remote-SSH: Connect to Host」<ユーザー名>@<サーバーのTailscale IP>を入力- 鍵認証でログイン
接続すると、VSCodeの拡張機能は自動的にローカル用とサーバー用に分かれる。
- ローカル側:テーマ、キーバインドなどUI系
- サーバー側:Python、Docker、GitLensなど開発系
つまり、手元のPCには「VSCodeとブラウザ」だけあれば開発できる状態になる。
Python、Node.js、Dockerなどのランタイムは全部サーバー側に置けばいい。
