ラズパイでも無料で使用できる超絶簡単なVPNサービスTailscale

Raspberry Pi からでも利用できるクラウドVPNのご紹介です。
「Tailscale」というサービスで、個人利用なら無料プランで利用できます。
巷では「Tailscaleは超絶に簡単なVPN」と言われていて、実際に利用してみると本当にそう感じます。

従来のVPNは中央にVPNゲートウェイがある概念です。有名なWireGuardは少しそれよりも効率が良いルーティングをしてくれるので人気があります。
Tailscaleは更に進化させた概念でした。認証サーバーを持たないという点が特徴的です。
公式サイトに解説記事がいくつもあります。興味がある方は訪れてみてください。

今回は産業用Raspberry Pi CM5を搭載した「PL-R5m」で試してみました。
OSはRaspberry Pi OS bookwormで、Wi-Fiではなく有線LANケーブルで接続しています。Pi 5でも同じように設定ができます。
Pi 5やCM5であれば、ギガビットイーサネットで性能も申し分なく、省電力で静音ですから、専用のVPNサーバー化にするのも好都合に思えます。

記事では設定の動きをみながら順番にご紹介していますが、とにかく自宅のNASに外から繋ぎたいなら、サインアップ後にTailscaleをインストールし、記事終わりの方にある最初からサブネットも含めて設定するで起動してください。

Tailscaleに登録(サインアップ)

先ずは登録から。
アイデンティティプロバイダであるGmail、Microsoftアカウント、Office365などの認証システムで登録とログインをします。
Tailscaleには認証システムがありませんから、Gmailなどのアカウントで登録することになります。

登録だけですから、Raspberry Pi のデスクトップからでもメインマシンでも良いので、以下URLにアクセスしてWebブラウザで進めます。

https://login.tailscale.com/start

もう説明は要らないくらい、このような登録サービスも増えました。所持しているアカウントで登録をしてください。

Gmailのアカウントで登録したので、TailscaleのログインにGmailのアカウントを選ぶだけです。

個人利用(Personal Use)なら無料ですから、最初の設問には「Personal Use」を選びました。あとは適当で構いません。
最初のデバイスの登録に続きます。Raspberry PiなのでLinuxを選びます。

OSを選ぶとインストールスクリプトのコードが出ます。これをRaspberry Pi CM5側で実行します。
登録&ログインが済めば、2台目の登録画面になりますが、コンソール画面の表示が選べます。
コンソール画面に移動したら、一旦はそのままにしてRaspberry Pi 側で設定を続けます。

外から接続するために、後ほどiPhoneも2台目のデバイスとして登録をします。
外部からのVPN接続を確認するため、少なくても2台分のデバイス登録が必要です。

クライアントアプリは、スマホで使うOSも含むマルチプラットフォームで動作します。(Windows、macOS、Linux、iOS、Android)Raspberry PiでもOKですし、iPhoneでもOKです。

Tailscaleのインストール (Raspberry Pi OS)

Tailscaleで接続するには、クライアントソフトをインストールする必要があります。
Raspberry Pi CM5側で以下を実行します。

  • [I] 公式サイトには、Raspberry Pi OSではbullseyeとしてインストール方法が記載されていました。しかし、bookwormがないため、一般的なLinuxのインストールスクリプトで試しました。実際にインストールされたリポジトリはDebian bookwormになっていました。
curl -fsSL https://tailscale.com/install.sh | sh

インストールが終わると、起動させるコマンドが表示されて終了です。

Installation complete! Log in to start using Tailscale by running:

sudo tailscale up

早速、起動していきます。

Tailscaleを起動

管理者権限で実行します。

sudo tailscale up

実行すると、ターミナル画面に認証する画面へのURLが表示されます。
Webブラウザでアクセスしてログインをすることになります。

To authenticate, visit:

    https://login.tailscale.com/a/1774610d018f66

Success.

ログイン画面

Webブラウザで操作していくことになります。Raspberry PiのWebブラウザである必要はありません。
ターミナルに表示されたURLにアクセスすると、ログインを求められ、Googleアカウントでログインが成功すると、ターミナル側にはSuccessと表示されます。

このあとはコンソール画面(先程のWebブラウザ開いた管理画面)でいくつか設定をしていくことになります。

コンソール画面で確認

ログイン後のコンソール画面(管理画面)にあるマシンタブに、CM5が表示されています。
画像ではiPhoneアプリのクライアントアプリもApp Storeからインストールして認証したた2つ表示されています。

IPアドレスは自動で振られていました。今回の事例では意識せず使えます。

ちなみに、コンソール画面のメニューから請求(billing)項目を確認してみると、ちゃんと個人プランになっていました。

  • [I] アカウント登録時にPersonal Useを選んだことと、gmailアカウントだったためです。企業のメールアドレスだと別プランになっているかもしれません。その場合は試用(オプトアウト)を選べると公式サイトにありました。

無料プランでは、3ユーザー、100デバイスまで利用することができることが分かります。個人利用では十分ですね。


確認ができたら、画面はそのままにしておいて構いません。あとでまた操作します。

サブネットルーターの設定

このままでは単に同じtailscaleネットワークにそれぞれ入るだけです。
VPNで繋ぐCM5のネットワーク内のデバイスへアクセスするなら、サブネットルーターの設定をして繋がります。

Raspberry Pi CM5のあるネットワークには、既にNASが稼働しています。

本来、クライアントアプリをインストールすれば同じなのですけど、デバイスにはプリンターといったクライアントアプリがインストールできないデバイスもあります。CM5にインストールしたクライアントアプリに、サブネットルーターの機能を有効にすれば、Tailscaleクライアントアプリが入っていないデバイスにもアクセスができるようになります。

では、tailscaleコマンドを使って自宅のローカルネットワークをCM5からサブネットルーターとして設定します。

  • [I] 指定しているIPアドレスの部分は自宅のIPアドレスに読み替えてください。一般的なルーターの初期設定のIPアドレス範囲は、ルーターが192.168.0.1の場合なら192.168.0.0/24とし、仮に192.168.1.1がルーターなら、192.16.8.1.0/24です。

ルーターや個別設定により異なるので、ip aコマンドなどでIPアドレスとサブネットマスクを調べてください。
この記事では、192.168.0.1がルーター、サブネットマスクは255.255.255.0なので、次のように指定します。

自宅内のローカルネットワークをルーティングするには、オプションを付けて実行するだけです。

tailscale set --advertise-routes=192.168.0.0/24

コマンド実行にはsudoが必要です。
sudoなしで実行できるように、次のコマンドで既存のユーザーを登録します。これは一度実行するだけです。
毎回sudoを付けても良いですし、これは任意でどうぞ。

sudo tailscale set --operator=$USER

確認してみる

サブネットルーターの設定をしたため、一度、先程の管理画面に戻って確認します。
即時反映されています。
マシン欄のRaspberry Pi CM5行の三点リーダーメニューからroute settingsを開きます。

先程指定したIPアドレス範囲がありますので、チェックを入れて有効化します。

保存して一覧へ戻ると、subnetというタグが付きました。
ただ、「!マーク」が付いていますね。

もう一度同じ画面で確認してみると、おっと、なにやらメッセージが出ています。

上にある「Unable to relay traffic」が出ている場合、ルーティングの許可(ルール)が設定されていないために表示されます。
このままではVPNで接続できても、自宅内にあるNASにアクセスできません。

route(ルート)設定

注意が表示され接続できなかったのは、CM5にルーティングの許可を与えていなかったからです。
Raspberry Pi OSだと、次の/etc/sysctl.d/へ許可を与えるconfファイルを作成し有効にします。

  • [I] OSによっては異なるディレクトリです。

ルールの作成:

echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

これで先程のsubnetタグの「!マーク」が消え、VPNで接続すれば自宅内のNASへもアクセスできるようになります。

iPhoneから試してみる

iPhoneでVPN接続をして自宅内にあるNASを覗いてみることにします。

iPhoneもTailscaleのネットワークへ参加させないとなりませんから、クライアントアプリをインストールします。
アプリから認証するのは先程と同じで、Gmailのアカウントでログインするだけです。

Tailscaleのコンソール画面にiPhoneも追加されたことが分かります。
この時点で、iPhoneアプリとコンソール画面のどちらも余計な設定の必要はありませんでした。

VPNを張るだけで接続できる

iPhoneの場合、「設定 –> VPNとデバイス管理 –> VPN –> VPN状況と辿り、接続をONにして該当のVPNを選びます。
もしくはTailscaleアプリからVPN接続を有効にします。

iPhoneのVPN設定からONにする。

Tailscale APPからもVPNをONにできる。

これで、Tailscaleで自宅のRaspberry Pi CM5にVPNが張れました。
Wi-Fiをオフにするか、自宅内のWi-Fi環境が出て(外出)いつも通りNASへ接続してみます。

iPhoneの標準アプリや、私が好んで使っているFileBrowserGOからNASへアクセスします。
NASは自宅内でiPhoneから既に接続しているため、接続先は登録していますので、NASのIPアドレスを選べば、問題無くファイルが表示されました。

ご覧のように、上部バーに4G、VPNとあるように外部から自宅内のファイルへアクセスできました。

iPhone側はTailscaleのクライアントアプリをインストールしただけです。
ノートPCでも同じように、OS別のクライアントアプリをダウンロードして、Tailscaleにデバイスとして登録するだけで済みます。

最初からサブネットも含めて設定する

今回は動きを確かめてみたかったので、順番に設定をしています。少し長く感じたかもしれません。
この程度のVPN接続であれば、Tailscaleのインストール後、一度に設定をすることができます。

記事内ではtailscale setコマンドで設定しました。起動するtailscale upコマンドで設定しつつ起動することができます。

インストールまでは同じです。
その後、起動するコマンドにオプションで設定を追加して起動させればOKです。
ついでにsshも有効にしておきました。

sudo tailscale up --advertise-routes=192.168.0.0/24 --ssh 

Raspberry Pi側にルーティングの設定の許可をしないとなりませんから、次の3行は実行します。

echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

コマンドのオプションは、tailscaleと実行したり、tailescale setと実行すると表示されます。
オプションはたくさんあります。詳しくは公式のページを参考にしてください。

簡単としか言い様がないVPNサービス

結果として、TailscaleをインストールしたCM5でコマンドをいくつか実行をして、コンソール画面でチェックを入れるだけでした。
同じRaspberry Pi を使ったVPNサーバの構築と設定よりも格段に簡単です。

何よりも、ルーターのポート転送の設定が要りません。しかも、Raspberry Pi のIPアドレスも固定化していませんから、設定の容易さが目立ちます。
本当にこれだけで繋がったというわけです。

Tailscaleの特徴:

  • ルーターの設定が要らない
  • IPアドレスの固定化も要らない
  • Tailscaleのインストールと数行のコマンド実行のみ
  • Webブラウザのコンソール画面が即時反映して分かりやすい
  • 個人利用なら無料プランから使える(3ユーザー、100デバイス)
  • Raspberry Piシリーズでも使えるプラットフォームの多さ

これまでRaspberry Piで設定したVPNは何だったのだろう。そう思ってしまうくらい呆気なく繋がるサービスでした。
商用利用でも料金は低めで直ぐに導入できます。
ルーターのポート開放もしなくて済むため、初心者にも敷居が低く構築しやすいです。個人なら無料プランもあるため気楽に使えます。

Tailscale+Raspberry Pi でのVPN接続は、実用度がとても高く感じました。記事を参考にお試しください。

Tailscale公式:https://tailscale.com


記事寄稿:ラズパイダ

非エンジニアでも楽しく扱えるRaspberry Pi 情報サイト raspida.com を運営。ラズベリーパイに長年触れた経験をもとに、ラズベリーパイを知る人にも、これから始めたいと興味を持つ人にも参考になる情報・トピックを数多く発信。PiLinkのサイトへは産業用ラズベリーパイについて技術ブログ記事を寄稿。