UbuntuでTailscaleを導入・設定する方法:ポート開放不要でメッシュVPNを構築

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

自宅のホームラボサーバーへのリモートアクセスの悩み

自宅にUbuntuサーバーを立ち上げ、Plex、Nextcloud、Home Assistant、そして検証用のDockerコンテナなどを色々と導入したとします。ローカルネットワーク内ではすべて順調に動作していますが、一歩カフェなどの外出先に出た途端、サーバーへの接続が完全に途切れてしまいます。

従来は、ルーターでのポート開放(ポートフォワーディング)とDynamic DNSを組み合わせる方法が一般的でした。しかし、この方法には大きなリスクが潜んでいます。インターネットに向けてポートを開放した途端、世界中のボットネットからサーバーの認証ログにブルートフォース攻撃のスキャンが殺到します。さらに厄介なことに、現在多くのプロバイダーがCGNATを採用しています。グローバルIPアドレスが割り当てられないため、追加料金を払って固定IPを契約しない限り、ポート開放自体が不可能になってしまいます。

OpenVPNやWireGuardを手動で構築するのも一つの手ですが、証明書の発行やルーティングテーブルの設定、中継用VPSの維持管理など、膨大な手間と時間がかかります。

Tailscaleはどのようにこの問題を解決するのか?

Tailscaleは、目に見えない仮想のLANケーブルのようなものだと想像してみてください。このケーブルは、外出先のノートPCとリビングのデスク下に置かれたUbuntuサーバーを直接つなぎます。

すべてのトラフィックを中央のゲートウェイに集中させる従来のVPNとは異なり、TailscaleはメッシュVPNモデルで動作します。各デバイス同士が直接ハンドシェイクを行い、P2P(Peer-to-Peer)で通信します。

通信の暗号化にはWireGuardプロトコルを採用しており、極めて低遅延(実際のPing値にわずか1〜3ms上乗せされる程度)で動作します。Tailscaleの最大の強みは、自動NATトラバーサル技術にあります。サーバーとノートPCがそれぞれ異なるルーターの内側にあっても、ルーターの設定を一切変更することなく、自動的に直接通信経路を確立してくれます。

UbuntuにおけるTailscaleのインストールと設定手順

ステップ1:管理アカウントの作成

Tailscaleの公式サイトにアクセスし、GitHub、Google、またはMicrosoftアカウントを使用して無料登録を行います。個人のFreeプランでは最大3ユーザー、100台までのデバイスがサポートされており、個人ラボの用途には十分すぎるスペックです。

ステップ2:UbuntuにTailscaleをインストール

Tailscaleには、Ubuntuのディストリビューションバージョンを自動認識する公式インストールスクリプトが用意されています(20.04、22.04から24.04 LTSまで完全対応)。ターミナルを開き、以下のコマンドを実行します。

curl -fsSL https://tailscale.com/install.sh | sh

インストールが完了したら、サービスを起動し、システム起動時に自動起動するよう設定します。

sudo systemctl enable --now tailscaled
sudo systemctl status tailscaled

ステップ3:Tailnetネットワークへのデバイス認証

Ubuntuマシンをアカウントに紐付けるため、接続を有効化します。

sudo tailscale up

ターミナル上に固有の認証用リンクが表示されます。

To authenticate, visit:

	https://login.tailscale.com/a/9a8b7c6d5e

このリンクをコピーしてブラウザに貼り付け、ステップ1で作成したアカウントでログイン後、Connectをクリックして新しいノードを承認します。

ステップ4:サーバー上のTailscale IPアドレスを確認

専用ネットワーク(Tailnet)に参加すると、Ubuntuマシンには100.x.y.z(キャリアグレードNAT範囲)の一意な静的IPが割り当てられます。以下のコマンドでこのIPアドレスを取得できます。

tailscale ip -4

実行すると、100.85.24.120のようなアドレスが表示されます。また、ネットワーク内の他の全ノードのオンライン/オフライン状態を確認することも可能です。

tailscale status

ステップ5:クライアントの導入と接続テスト

続いて、クライアント端末(macOS、Windows、iOS、Android)にTailscaleアプリをインストールし、同じ管理者アカウントでログインします。これだけで、両方の端末が同一の仮想LAN内に配置されます。

外出先のノートPCでターミナルを開き、自宅のサーバーへ直接SSH接続を試してみましょう。

ssh [email protected]

同様に、サーバー上でPortainerダッシュボードがポート9000で稼働している場合、ブラウザにhttp://100.85.24.120:9000と入力するだけでスムーズにアクセスできます。

便利なTips:MagicDNSの有効化

毎回100.x.y.zのIPアドレスを覚えて入力するのは手間がかかります。そこで、Tailscale Admin Console > DNSからMagicDNSを有効にしましょう。この機能をオンにすると、マシンのホスト名を使って直接接続できるようになります。

ssh user@ubuntu-server
ping ubuntu-server

まとめ

ルーターのポート開放も不要で、ボットネットの脅威に怯えることもなく、高額な固定IPを契約する必要もありません。UbuntuにTailscaleを導入すれば、わずか5分足らずでホームラボ全体をカバーする強固で安全なトンネル環境を構築できます。

Share: