この記事をシェア
はじめに:外出先から自宅PCにアクセスしたい
「外出先から自宅のPCにSSHしたい」「開発中のローカルサーバーをスマホで確認したい」——エンジニアなら誰しも一度は考えることだと思います。
しかし、従来の方法では以下のようなハードルがありました:
- ルーターでポートフォワーディングを設定する必要がある
- 動的IPの場合はDDNSサービスが必要
- セキュリティリスクが高い(ポートを外部に公開)
- VPNサーバーを自前で構築するのは面倒
- WSL2は特にネットワーク設定が複雑
今回紹介するTailscaleは、これらの問題をすべて解決してくれる画期的なサービスです。実際に私が今日セットアップした手順を、つまずきポイントも含めて詳しく解説します。
Tailscaleとは?
Tailscaleは、WireGuardベースのメッシュVPNサービスです。難しく聞こえますが、要するに「デバイス同士を簡単に繋げてくれるサービス」です。
従来のVPNとの違い
| 項目 | 従来のVPN | Tailscale |
|---|---|---|
| サーバー構築 | 必要(OpenVPN等) | 不要 |
| ポート開放 | 必要 | 不要 |
| 設定の複雑さ | 高い | 非常に低い |
| NAT越え | 設定が必要 | 自動 |
| 料金 | サーバー費用 | 個人利用は無料 |
Tailscaleで何ができる?
- デバイス間のファイル共有:外出先からスマホで自宅PCのファイルにアクセス
- リモートデスクトップ:RDPやVNCを安全に利用
- SSH接続:今回のメインテーマ。外からサーバー管理
- 開発サーバーへのアクセス:localhostで動くサイトをスマホで実機確認
- 自宅NASへのアクセス:クラウドストレージ不要に
すべての通信はWireGuardで暗号化されるため、セキュリティも万全です。
実践:スマホからWSL2にSSH接続する
それでは実際にセットアップしていきましょう。今回の構成は以下の通りです:
- 接続元:Androidスマホ(Galaxy S10)+ Termux
- 接続先:Windows 11 + WSL2(Ubuntu 24.04)
Step 1: Tailscaleアカウント作成
Tailscale公式サイトでアカウントを作成します。Google、Microsoft、GitHubアカウントでログイン可能です。
Step 2: WindowsにTailscaleをインストール
公式サイトからWindowsクライアントをダウンロードしてインストール。タスクトレイにアイコンが表示されます。
アイコンをクリックして「Log in」→ ブラウザでログインするとWindowsがTailscaleネットワークに参加します。
Step 3: スマホにTailscaleをインストール
Google PlayまたはApp StoreからTailscaleアプリをインストール。同じアカウントでログインします。
この時点で、スマホとWindowsが同じネットワーク(Tailnet)に接続されます。
Step 4: WSL2にTailscaleをインストール(重要!)
ここがポイントです。WSL2はWindowsとは別のネットワークスタックを持っているため、Windows側のTailscaleだけではWSL2に直接アクセスできません。
# WSL2のUbuntuで実行
curl -fsSL https://tailscale.com/install.sh | sh
# Tailscaleを起動
sudo tailscaled &
# 認証(URLが表示されるのでブラウザで開く)
sudo tailscale up
認証URLが表示されたら、ブラウザで開いてログインします。成功すると、WSL2にも専用のIPアドレス(100.x.x.x)が割り当てられます。
# IPアドレス確認
tailscale ip -4
# 例: 100.126.146.111
Step 5: SSHサーバーのインストールと起動
# SSHサーバーインストール
sudo apt-get install -y openssh-server
# 起動
sudo service ssh start
# 自動起動設定
sudo systemctl enable ssh
Step 6: iptablesの設定(超重要!)
ここで多くの人がハマります。Tailscaleはセキュリティのため、デフォルトで他のTailscaleデバイスからの接続をブロックするiptablesルールを設定します。
# 現在のルールを確認
sudo iptables -L ts-input -n
おそらく以下のようなDROPルールがあるはずです:
DROP 0 -- 100.64.0.0/10 0.0.0.0/0
これがTailscaleネットワーク(100.64.0.0/10)からの接続をブロックしています。SSHを許可するルールを追加します:
# SSH(22番ポート)を許可
sudo iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 22 -j ACCEPT
# 開発サーバー用に8080や18080も開けるなら
sudo iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 8080 -j ACCEPT
sudo iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 18080 -j ACCEPT
Step 7: スマホから接続!
TermuxなどのターミナルアプリからSSH接続します:
ssh ユーザー名@100.126.146.111
パスワードを入力して、接続成功!外出先からでも自宅のWSL2にアクセスできるようになりました。
# rootになる
sudo su -
設定の永続化
WSL2を再起動するとiptablesルールやサービスが消えてしまいます。永続化の設定をしておきましょう。
Tailscaledの自動起動
sudo systemctl enable tailscaled
SSHの自動起動
sudo systemctl enable ssh
iptablesルールの永続化
/etc/rc.localを作成して、起動時にルールを適用します:
sudo tee /etc/rc.local << 'EOF'
#!/bin/bash
sleep 5
iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 22 -j ACCEPT
iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 8080 -j ACCEPT
iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 18080 -j ACCEPT
exit 0
EOF
sudo chmod +x /etc/rc.local
トラブルシューティング
Q: 「接続拒否」と表示される
原因1:SSHサーバーが起動していない
# 確認
sudo service ssh status
# 起動
sudo service ssh start
原因2:iptablesでブロックされている
# ルール確認
sudo iptables -L ts-input -n
# 許可ルール追加
sudo iptables -I ts-input 1 -s 100.64.0.0/10 -p tcp --dport 22 -j ACCEPT
Q: Tailscale管理画面でWSL2が「offline」のまま
原因:tailscaledが起動していない
# 手動起動
sudo tailscaled &
# 再認証
sudo tailscale up
新しい認証URLが表示されるので、ブラウザで開いてログインし直します。
Q: 認証URLが何度も表示される
原因:tailscaledがすぐ終了している
# プロセス確認
pgrep -a tailscaled
# バックグラウンドで安定起動
sudo nohup tailscaled > /dev/null 2>&1 &
sleep 3
sudo tailscale up
Q: 再起動したら接続できなくなった
原因:iptablesルールがリセットされた
上記の「設定の永続化」セクションを参照して、/etc/rc.localを設定してください。
Q: WindowsのTailscaleだけではダメなの?
WSL2はWindowsとは独立したネットワークを持つため、Windows側のTailscaleでは対応できません。ポートフォワーディングで回避する方法もありますが、WSL2に直接Tailscaleをインストールする方が簡単で確実です。
セキュリティについて
Tailscaleは以下のセキュリティ機能を提供しています:
- WireGuard暗号化:すべての通信が暗号化される
- ゼロトラスト:デバイスごとに認証が必要
- ACL:アクセス制御リストで細かい権限設定が可能
- MagicDNS:IPアドレスの代わりにホスト名でアクセス可能
とはいえ、SSH接続するなら以下も推奨します:
- SSHの鍵認証を設定(パスワード認証を無効化)
- Tailscaleの2要素認証を有効化
まとめ
Tailscaleを使えば、従来は面倒だった「外出先から自宅PCへのアクセス」が驚くほど簡単に実現できます。
今回のポイント:
- WSL2には別途Tailscaleのインストールが必要
- iptablesルールの追加を忘れずに
- 設定の永続化で再起動後も安心
個人利用なら無料で使えるので、ぜひ試してみてください。一度セットアップすれば、外出先でも自宅のWSL2環境をフル活用できるようになります。
