固定IPがない自宅回線でも、Tailscaleを使えば外出先のスマホやタブレットから自宅サーバーへ接続できます。通常はルーターの受信ポートを手動で開放する必要もありません。
必要なのは、自宅サーバーと接続端末をTailscaleでつなぐことです。導入条件から接続手順、つながらないときの切り分け方まで順に説明します。
Tailscaleで自宅サーバーへ外部接続するための条件

自宅サーバーと外出先で使う端末は、同じTailscaleネットワーク(tailnet)へ参加させます。
Tailscaleが提供するのは端末同士をつなぐネットワークです。SSHやWeb管理画面、ファイル共有などの機能が追加されるわけではないため、利用したいサービスは自宅サーバー側で動作している必要があります。自宅サーバー用PCの構成や運用条件から整理したい場合は、ホームサーバー用PCの選び方も確認できます。
固定IPやポート開放なしで接続できる
Tailscaleでは各端末にTailscale用のIPアドレスが割り当てられるため、自宅回線の固定グローバルIPアドレスを接続先にする必要はありません。
Tailscale公式のファイアウォールに関する説明では、通常はルーターやファイアウォールの受信ポートを手動で開放しなくても利用できるとされています。端末同士を直接つなげない環境では、リレーを経由して接続します。
リレー接続になっても通信はできますが、直接接続より性能が低下する可能性があります。
自宅サーバーと接続端末の両方にTailscaleを導入する
通常の構成では、自宅サーバーだけでなく、外出先から操作するスマホやタブレットにもTailscaleを導入します。
- 自宅サーバーにTailscaleをインストールする
- 外出先で使うスマホやタブレットにTailscaleをインストールする
- 両方の端末を同じtailnetへ参加させる
- 自宅サーバーで利用したいサービスを動作させておく
Tailscale公式のインストール情報では、WindowsやLinux、iOS・iPadOS、Androidなどへの導入方法が案内されています。自宅サーバーへ直接Tailscaleを導入できない場合は、別のTailscale端末をSubnet Routerとして利用する方法もあります。
Tailscaleを使って自宅サーバーへ外部接続する手順

設定は自宅サーバー側から始めます。サーバーをtailnetへ参加させたあと、外出先で使う端末を追加し、Tailscale上の接続先を指定します。
自宅サーバーにTailscaleをインストールしてログインする
自宅サーバーへTailscaleをインストールし、認証してtailnetへ参加させます。OSによってインストール方法は異なります。
Linuxでは、Tailscale公式のLinux向け手順に従ってインストールし、tailscale upを実行して認証します。WindowsもTailscaleをインストールしてログインし、端末をtailnetへ追加します。
認証が終わったら、Tailscaleの管理画面にあるMachinesに自宅サーバーが表示されているかを見ます。
無人で長期間動かす自宅サーバーでは、端末キーの有効期限も運用に関わります。Tailscaleのキー期限に関する説明では、キーが期限切れになると、その端末との接続は停止します。運用方法に合わせてキー期限の設定を確認します。
スマホやタブレットにTailscaleをインストールして同じtailnetへ参加する
外出先で使うスマホやタブレットにもTailscaleアプリをインストールし、自宅サーバーと同じtailnetへ参加させます。iPhone・iPad、Androidともに、アプリで必要な設定と認証を行います。
必要なのは、自宅サーバーへアクセスできる同じtailnetへの参加です。「自宅サーバーと必ず同じアカウントでログインする」という条件ではなく、Tailscaleでは複数ユーザーをtailnetへ参加させることもできます。
TailscaleのIPアドレスや端末名を使って自宅サーバーへアクセスする
両方の端末がtailnetへ参加したら、自宅サーバーに割り当てられたTailscale IPアドレスを接続先に指定できます。
MagicDNSが利用できる環境なら、IPアドレスの代わりに端末名でも接続できます。自宅回線のグローバルIPアドレスを指定する必要はありません。
接続先を指定したら、SSHやWeb管理画面、ファイル共有など、自宅サーバーですでに動作している目的のサービスへアクセスします。
外出先から自宅サーバーへ接続できないときの確認ポイント


つながらないときは、Tailscale側と自宅サーバー側を分けて調べます。先に端末同士の通信状態を見れば、原因を絞り込みやすくなります。
Tailscaleで両方の端末が接続済みになっているか確認する
- 自宅サーバーがtailnetへ参加しているか見る
- 外出先の端末がtailnetへ参加しているか見る
- Tailscale上で端末間の通信が成立するか調べる
コマンドを利用できる環境では、tailscale pingでTailscale上の端末間通信を調べられます。ネットワーク状態はtailscale netcheckで確認できます。
ここで直接接続ではなくリレー接続と表示されても、それだけで異常とは判断できません。リレー経由で通信できていれば接続自体は成立しています。
接続先サービスとOSのファイアウォール設定を確認する
Tailscale上では通信できるのに目的のサービスへアクセスできないなら、自宅サーバー側へ切り分けます。
- SSHやWeb管理画面など、接続したいサービスが起動しているか
- 接続先のIPアドレスや端末名、サービスのポートが正しいか
- OSのファイアウォールで必要な通信が遮断されていないか
- Tailscaleのアクセス制御ポリシーで通信が許可されているか
Tailscale公式の接続トラブルシューティングでも、ローカルファイアウォールやTailscaleのアクセス制御が確認項目として挙げられています。
通常のpingが失敗しただけでは、Tailscale全体の接続失敗とは判断できません。Windowsなどではファイアウォールによってpingに使われる通信が遮断されることがあるため、Tailscale上の疎通と目的のサービスへの接続は分けて調べます。
まとめ
Tailscaleを使えば、固定IPがない自宅回線でも外出先から自宅サーバーへ接続できます。自宅サーバーとスマホやタブレットを同じtailnetへ参加させ、TailscaleのIPアドレスや端末名から目的のサービスへアクセスする仕組みです。
つながらない場合は、Tailscale上で端末同士が通信できるかを調べ、それから接続先サービス、ファイアウォール、アクセス制御へ範囲を絞ると原因を切り分けられます。

