メインコンテンツへスキップ
見出し画像

Tailscale 入門 - PC・サーバーを簡単に安全につなぐ

    「Tailscale」の使い始め方をまとめました。

    1. Tailscale

    1-1. Tailscaleとは

    「Tailscale」は、PC、サーバー、スマートフォンなどを、インターネット越しに安全につなぐためのネットワークサービスです。
    各端末にTailscaleをインストールして同じアカウントで認証すると、それらの端末だけで構成されたプライベートネットワーク「tailnet」を作成できます。

    たとえば、自宅のMac、Ubuntuマシン、クラウドVMを次のようにつなげられます。

    Mac
     │
     ├── Ubuntu
     ├── クラウドVM
     └── スマートフォン
           ↓
       Tailscale

    通常、インターネット越しにPCやサーバーへアクセスするには、グローバルIPアドレス、ポート開放、VPNサーバーなどを意識する必要があります。
    Tailscaleでは、各端末をtailnetに参加させるだけで、端末同士を安全に通信できるようになります。通常は端末同士を直接接続し、直接接続できない場合はリレーを経由します。

    主な用途は次のとおりです。

    ・外出先から自宅PCへSSHする
    ・MacからUbuntuマシンへ接続する
    ・クラウドVMを公開せずに管理する
    ・自宅LAN上の機器へ外部からアクセスする

    1-2. Tailscaleはなぜ安全で無料なのか

    Tailscaleは「WireGuard」を使い、端末間の通信をエンドツーエンド暗号化します。秘密鍵は各端末に保持されるため、Tailscale自身も通信内容を読むことはできません。通常は端末同士を直接接続し、直接接続できない場合はDERPリレーサーバーを経由しますが、その場合も通信内容は暗号化されたままです。

    一方、無料で利用できるのは、個人向けの無料プランを入口として提供し、企業・組織向けの有料プランで収益化しているためです。Tailscaleは、個人向けには無料プランを提供し、企業・組織向けの機能や管理機能を有料提供するビジネスモデルになっています。

    1-3. Tailscale IP

    Tailscaleに接続した端末には、それぞれ専用の「Tailscale IPアドレス」が割り当てられます。IPv4では通常、「100.x.x.x」という100.64.0.0/10のアドレス範囲が利用されます。

    たとえば、

    Mac
    100.80.10.20
    
    Ubuntu
    100.91.30.40

    なら、MacからUbuntuへ次のように接続できます。

    ssh user@100.91.30.40

    Tailscaleはネットワークを接続する仕組みなので、SSHやWebサーバーなど、利用したいサービス自体は接続先で動作している必要があります。

    1-4. MagicDNS

    「MagicDNS」を利用すると、IPアドレスではなく端末名でアクセスできます。

    Ubuntuマシンの名前が、「ubuntu-server」なら、

    ssh user@ubuntu-server

    のように接続できます。

    開発環境では、IPアドレスを覚えるより端末名を使う方が管理しやすくなります。

    2. セットアップ

    Tailscaleを利用する端末それぞれにアプリをインストールし、同じネットワーク(tailnet)に参加させます。ここでは、自分のアカウントで2台の端末を接続します。

    2-1. アカウントの作成

    Tailscaleの公式サイトから「Get Started」を選択し、ログインします。
    最初にログインすると、自分専用のtailnetが作成されます。

    2-2. 1台目のインストール

    まず、1台目にTailscaleをインストールします。OSに合わせて、以下の手順を実行してください。

    ・macOS・Windowsの場合
    Tailscaleのダウンロードページから、使用するOSのインストーラーをダウンロードしてインストールします。

    インストール後にTailscaleを起動し、画面の案内に従ってログインします。macOSでVPN構成の追加などを求められた場合は許可してください。

    画像

    ・Ubuntuの場合
    ターミナルで次のコマンドを実行してインストールします。

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

    続いて、次のコマンドで接続と認証を開始します。

    sudo tailscale up

    表示された認証用URLをブラウザで開き、ログインします。

    新規アカウントで自分用のネットワークを作成した場合、この時点では基本的に1台目だけが登録されています。

    2-3. 2台目のインストール

    2台目にも、2-1の手順に従ってTailscaleをインストールします。1台目と異なるOSでも構いません。

    ログイン時は、1台目と同じアカウントを使用します。ネットワークの選択画面が表示された場合は、1台目と同じtailnetを選びます。

    登録が完了すると、同じtailnetに2台の端末が表示されます。1台目で2台目のIPアドレスやホスト名を手動登録する必要はありません。端末承認が有効なネットワークでは、管理者による承認が必要です。

    2-4. 接続の確認

    両方の端末でTailscaleを接続状態にします。macOS・Windowsでは、アプリの端末一覧で相手の端末を確認できます。

    Ubuntuなど、tailscale コマンドを利用できる環境では、次のコマンドで端末一覧と接続状態を確認できます。

    tailscale status

    自分のTailscale IPアドレスは、次のコマンドで確認できます。

    tailscale ip

    端末同士の通信を確認するには、次のコマンドを実行します。<端末名> は、相手の端末名に置き換えてください。

    tailscale ping <端末名>

    3. 主な機能

    3-1. Tailscale SSH

    ailscale経由では、Tailscale IPアドレスまたはMagicDNSの端末名を使ってSSH接続できます。

    ssh user@ubuntu-server

    通常のSSHに加えて「Tailscale SSH」を使うと、SSHの認証やアクセス許可をTailscale側で管理できます。
    接続先の端末で次を実行します。

    sudo tailscale set --ssh

    インターネットへ22番ポートを公開せずに接続できます。ただし、この設定だけでは通常のSSH接続は無効になりません。 Tailscale内だけに限定するには、ほかの経路からのSSH接続を別途遮断します。

    3-2. Subnet Router

    Tailscaleを直接インストールできない機器へアクセスしたい場合は、「Subnet Router」を利用できます。

    たとえば自宅LANが、「192.168.1.0/24」だった場合、

    外出先Mac
       │
       │ Tailscale
       ↓
    Ubuntu
       │
       └── NAS
           192.168.1.10

    のように、Ubuntuを経由してLAN内のNASへアクセスできます。
    NAS、プリンター、ネットワークカメラなどへの外部アクセスに利用できます。

    LinuxをSubnet Routerとして利用する場合は、IP Forwardingを有効にして対象のサブネットを広告します。広告したルートは、Tailscale管理画面などで承認する必要があります。

    3-3. Exit Node

    「Exit Node」を使うと、Tailscale内の特定端末をインターネットへの出口として利用できます。

    ノートPC
       │
       │ Tailscale
       ↓
    自宅PC
       │
       ↓
    インターネット

    LinuxマシンをExit Nodeとして利用する場合は、IP Forwardingを有効にしたうえで、

    sudo tailscale set --advertise-exit-node

    を実行します。

    その後、Tailscale管理画面でExit Nodeとして承認します。

    3-4. アクセス制御

    Tailscaleでは「Access Controls」から、「誰がどの端末へアクセスできるか」を設定できます。

    以前から「ACL」が利用されてきましたが、現在は新しいアクセス制御方式「Grants」が推奨されています。

    Grantsでは、

    誰が
     ↓
    どの端末へ
     ↓
    何を許可するか

    を定義できます。

    個人で数台使うだけならデフォルト設定でも利用できますが、会社やチームでは最小権限になるよう設定するのが基本です。

    4. 他人のtailnetへの参加

    Tailscaleでは、他人や組織が管理するtailnetに招待されて参加することもできます。

    「招待」では、そのtailnetのユーザーとして参加し、Access Controlsで許可された端末やサービスへアクセスできます。
    一方、「Device Sharing」では、tailnetには参加せず、共有された特定の端末だけにアクセスできます。

    ・招待:tailnetのメンバーとして参加
    ・Device Sharing:特定の端末だけを共有



     
     

    npaka

     
     
    プログラマー。iPhone / Android / Unity / ROS / AI / AR / VR / RasPi / ロボット / ガジェット。年2冊ペースで技術書を執筆。アニソン / カラオケ / ギター / 猫 twitter : @npaka123

    あなたへのおすすめ