Tailscale VPN を使ってみたので感想

最近某所で話題になっていた Tailscale VPN というのが気になったので、試しに使ってみました。

結論から言うと、めちゃくちゃおすすめです(大塚明夫ボイス)。
特に今まで VPN 環境を作って外出先から自宅の端末にアクセスしたかったけど難しくてできなかった、といった方にはうってつけです。

元々私はネットワーク方面に関してあまり詳しくないので、一部誤った認識の記述があるかもしれません。あらかじめご了承ください。

Sponsored Link

Tailscale VPN とは何か

VPN には、

  • アメリカなど海外にある VPN サーバーに接続し、それ経由でインターネットに接続することで通信を秘匿したり海外 IP に変えないとアクセスできないサイトにアクセスする
  • VPN 環境を自分で構築し、外出先や職場などから自宅にある PC やスマホにアクセスする

という 2 種類のニュアンスがあるように感じています。
どちらも VPN という技術を使っている事には変わりありませんが、目的が明らかに異なります。
このうち、Tailscale は後者にあたるサービスです。

前者のようなサービスとは利用目的が異なります。
また、P2P 型のため、VPN サーバーでもありません(後述)。

前者は NordVPN などが有名で、ほとんどが有料ですが、ぶっちゃけ金を積めさえすれば簡単に構築できると思います(言い方…)。プロキシの高機能版みたいな用途です。

一方、後者に関しては一筋縄ではいきません。
自宅に高性能なゲートウェイルーターをお持ちの方ならルーターの VPN 機能をオンにすればいけるかもしれませんが、そもそも VPN 機能のついていないルーターでは使えませんし、設定手順も(少なくとも、技術に精通していないユーザーにとっては)煩雑で難しいでしょう。

あとは自宅にある PC やラズパイに OpenVPN サーバーを立て、ルーターのポート転送設定をいじればできるかもしれません。…が、いずれも技術に精通していなければできません。
また、V6プラス(MAP-E)といった IPv4 アドレスを複数のユーザーで共有しているようなネットワーク環境では、自宅に VPN サーバーを作ることは特殊な手順を踏まない限り不可能です。

というわけで、外出先から自宅の PC にアクセスしたい場合、一番手軽な手順としてこれまでは Chrome リモートデスクトップを使って画面ごと操作するという手法が取られてくることが多かったように思います。
実際、リモートデスクトップしたいだけならそれでもいいのですが、外出先から自宅の PC で立ってる開発用 Web サーバーにアクセスしたい、みたいな用途には使えません。

… そういった煩雑な手順を極力排除し、クライアントをインストールしてログインするだけで使えるようになるのがこの Tailscale の魅力です。

私の家はV6プラス環境で自宅内に VPN サーバーを立てることが不可能だったため、借りている VPS に OpenVPN サーバーを建て、家の端末に OpenVPN クライアントと接続設定ファイルをインストールして常時 VPS と接続しておくことで、外出先から家の端末にアクセスすることができています。
ただ、構築時に書いた記事 を見ていただければ分かる通りサーバーの導入方法が非常に煩雑で、導入当時はかなり苦戦した記憶があります。

また、Tailscale は WireGuard というオープンソースの VPN ソフトを使っていて、また P2P 型の VPN になっています。
つまり、 VPN サーバーが存在せず、通信が Tailscale のサーバーを通ることもありません[1]NAT超えができない特殊なネットワーク用に一応プロキシはあるらしいですが、極力使わないように構築されているみたいです

Tailscale は基本的に接続用の鍵の管理と認証を行うサーバーと、2端末間の接続を橋渡しするサーバーを提供するのみで、実際の通信は端末同士で直接行われています。P2P 型のため VPN サーバーの帯域等に左右されず、通信速度を高速化できているのだと思います。謎の技術…

Tailscale を使う

100台まで無料のVPNサービス「tailscale」、リンクだけでマシンのシェアも可能!?【イニシャルB】
 とにかく手軽にVPN接続環境を整えたいのであれば、これほど優れたサービスはほかにない。ユーザーがやることは3つだけで、オフィス-社員宅間や拠点間接続など、WireguardベースのフルメッシュVPNを即座に構築できる。

Tailscale の詳細は上記の記事に譲りますが、使い方は本当に簡単です。

法人向けのフリーミアムモデルだからか、個人利用は完全に無料です。機能制限も今のところありません。個人で 100 台以上接続することはまずないでしょうから、問題ないでしょう。

1. アカウントを取得する

最初にアカウントを取得します。

アカウントは Google アカウント、または Microsoft アカウントで認証できます。
メールアドレスでの認証はないようですが、Google アカウントはほとんど全員持っているでしょうから、いつも使っている Google アカウントで認証するで良いでしょう。

2. クライアントをインストールし、認証する

Tailscale
Tailscale is a zero config VPN for building secure networks. Install on any device in minutes. Remote access from any network or physical location.

こちらから Tailscale のクライアントをダウンロードし、インストールします。
macOS 版は Mac App Store から、iOS 版は App Store から、Android 版は Google Play からインストールできます。
まだできて間もないサービスですが、ほとんど全ての OS にクライアントをインストールできるようになっています。素晴らしいです。

インストールは言うまでもないくらいなので割愛します。
インストールが終わると、Windows 版であればタスクトレイに格納されます。

いろいろ確認しましたが、設定は後述する認証以外は不要です。
Windows 上で Tailscale の仮想ネットワークアダプターは「プライベートネットワーク」と認識されるので、そのあたりも問題ありません。

スタートアップに自動的に登録されるため、ログオンすれば自動で Tailscale に接続されます。

OpenVPN for Windows は確か「パブリック ネットワーク」扱いされてしまうので、ファイアウォールの設定が面倒だった記憶が…

Windows 版

Windows 版の場合は、タスクトレイの Tailscale アイコンを右クリック → [Run unattended] にチェックを入れます。なんかダイヤログ出ますが OK します。
こうすることで、ログオフされていても VPN が動くようにしてくれるらしいです(?)。

その後、[Log in…] をクリックでログインページに飛び、Google アカウントで認証すれば認証完了です。

macOS 版

macOS 版の場合は、上のアイコン並んでるところの Tailscale アイコンを右クリック → [Start on Login] にチェックを入れます。インストール時にデフォルトでそうなっているかもしれません。
こうすることでログオン時に自動で起動されます。
Windows 版とは異なり、ログオフしても動くようなオプションはないようです。

その後、[Log in…] をクリックでログインページに飛び、Google アカウントで認証すれば認証完了です。

Linux 版

Tailscale
Tailscale is a zero config VPN for building secure networks. Install on any device in minutes. Remote access from any network or physical location.

様々なディストリビューションに対応しており、インストールも公式のコマンドをそのままコピペするだけで OK です。Ubuntu 20.04 LTS と Ubuntu 18.04 LTS で動くのを確認しました。

Linux 版の場合は必ずしも GUI 環境が入っているとは限らないからか、sudo tailscale up した後にコンソールにログイン用の URL が表示されて待機状態になるので、その URL を何かしらのブラウザで開いて Google アカウントで認証すれば OK です。

サービスとしてインストールされるため、何もしなくてもシステム起動時に自動で接続されるものと思われます。

だいたいこういうのは何かしら設定ファイルをいじったりが必要になるものですが、Tailscale ではそれが全く不要で、UX の素晴らしさに感動します。

Android 版

Google Play からアプリを入れて、Google アカウントで認証するだけです。
Active スイッチをオンにすると接続され、オフにすると切断されます。

注意点として、端末名は Android 側の設定が利用されます。スペースはハイフンになり日本語は削除されるので、「〇〇のGalaxy S20」みたいな端末名にしているとちょっと不格好な端末名になってしまうかもしれません。

3. Magic DNS を有効にする

Tailscale

こちらにアクセスし、[Nameservers] に 1.1.1.1 を追加します。
設定内容はよくわかっていませんが、とにかく Magic DNS を使うには追加しておく必要があるみたいです。

その後、[Enable Magic DNS] のグレーアウトが外れるので、有効にします。
こうすることで、Tailscale に接続されているデバイスに http://macbookair/ のように Tailscale に登録されているホスト名でアクセスすることが可能になります

hello.ipn.dev

Tailscale の管理パネルには hello-ipn-dev という謎の端末が追加されていますが、これは Tailscale 側が接続確認用に用意しているサーバーです。
Tailscale に接続した状態で hello.ipn.dev にアクセスすると、「You’re connected over Tailscale!」という画面が出ます。同じく接続した状態なら ping 100.101.102.103 でレスポンスが返ってきます。

接続できない場合はうまく Tailscale に接続できていないかもしれません。ただし、私の環境だと他の端末には接続できるのに hello.ipn.dev には接続できないってことがあったので、ちょっと不安定なのかも。接続できない場合は一度 Tailscale を再起動するとよいでしょう。

以上でインストールと設定は完了です。
これだけの簡単な手順でクライアントをインストールして認証を済ませた全ての端末が同じローカルネットワークに接続されているのですから、驚くほかありません。
VPS にもインストールしてみましたが、相互に通信できることを確認しました。

使ってみた感想

今まで外出先から自宅の端末に接続するには非常に高いハードルがありましたが、そのハードルを大幅に下げてくれていて素晴らしいサービスだと思います。様々な端末を持っていますが、1時間ちょっとで全て Tailscale に接続し同じローカルネットワーク下に入れることができました。
ただ、NordVPN のように「海外 IP からアクセスするプロキシ的なサービス」ではないので、そのあたり勘違いされて敬遠されやすいのかなとも。

前述の通り「謎の技術」で、私も詳しくはどういった仕組みなのか理解できていないのですが、これほどの簡易さなら一般の方にも自信を持っておすすめできそうです。
祖父母の PC を管理していますが、Chrome リモートデスクトップだと毎回祖父母側にリモート接続を許可してもらわなければならず煩雑なので、こんど帰省するときに入れておこうかと考え中。

Tailscale は WireGuard という OSS の VPN ソフトをベースに作られていて、WireGuard の認証周りを Tailscale のサービスとアカウントで管理し、WireGuard を導入しやすいようにラップすることで、接続や導入をしやすくしているサービスだと理解しています。プライベートネットワークを超えて通信する NAT 超えのには UDP ホールパンチング という技術が使われているようです。
…が、そんな技術的な詳細は大多数の人にはどうでもよくて、ただ VPN 接続ができればそれでいい。Tailscale はそのあたりを熟知した上で、技術的な詳細を隠蔽し、ライトユーザーが本当に必要としている機能を、簡単な手順で提供しているサービスです。

少なくとも私の環境では OpenVPN と共用できているので、ゆっくり移行していこうと思います。

注意点

ローカル IP アドレス

注意点として、Tailscale のローカル IP アドレスは 100.64.0.0/10 の範囲 (100.64.0.0 ~100.127.255.255) からランダムに割り当てられるので、上記の画像のように覚えにくいものになります。また、デバイス固有の情報?から割り当てられるようで、残念ながら自分でローカル IP アドレスを設定することはできません(その代わり、管理パネルからデバイスを削除するまではずっと固定 IP になるようです)。

その代わり、Magic DNS 機能を有効にしておけば http://macbookair/ のようなホスト名での名前解決ができるようになるので、実際はこちらを使っておくのが楽だと思います。Magic DNS 機能を有効にしておけば、IP アドレスが覚えられない問題もどうにかなるでしょう。

6ヶ月で再認証が必要になる(らしい)

Key Expiry
As a security feature, users need to periodically reauthenticate on each of their devices. The default expiration period depends on your domain setting. By defa...

Tailscale のドキュメントには接続した端末は6ヶ月で再認証が必要になる(?)っぽい事が書かれています。
ただし、「信頼できるサーバー、リレーノード、到達が困難なリモートIoTデバイスなど、一部のデバイスでキーの有効期限を無効にすることができます」とあるように、認証鍵の有効期限を無効にすることもできます。

[Machines] の各端末の … ボタン → [Disable key expiry] をクリックすると、その端末の認証鍵の有効期限を無効にすることができます。私は忘れた頃に切れてもめんどくさそうだなーと思ったので、全ての端末で認証鍵の有効期限を無効にしました。

設定はない

以前も説明した通り、基本的に設定はありません。

設定不要で使えるのは手軽に使いたい大多数のユーザーにとっては全く問題にならないのですが、OpenVPN のようにとにかくゴリゴリ設定をカスタムして最適化したい上級ユーザーにとっては物足りないサービスだと思います。
そういう方は自前で WireGuard 環境を作ったほうが幸せになれそうです。

速度が OpenVPN と比べて遅い(?)

あまり本格的に調べているわけではないので本当かどうかはわからないのですが、自宅の Linux マシンと VPS 間の通信速度を iperf コマンドで計測したところ、意外にも OpenVPN の方が速いという結果になりました。

ただ、VPS 自体の帯域が 100Mbps なのですが、OpenVPN 経由の場合はそれを大幅に超える 180Mbps も出ていたりします( Tailscale 経由の方は 109Mbps 程度)。
OpenVPN の方は設定でデータの圧縮 (comp-lzo) を有効にしているので、もし Tailscale でデータの圧縮が有効になっていないのであれば、それが原因で OpenVPN の方が速くなっている可能性もありそうです。OpenVPN の圧縮を無効化した状態で試してみたいところですが、環境が壊れそうで無理…🥺

まとめ

「どうせ面倒くさいんでしょー」と敬遠していましたが、実際に使ってみたらとにかく導入が簡単だったので、気になる方はまずは試してみると良いと思います。無料だし。
家の PC 1,2 台にインストールするだけなら30分もかからずもできます。
昔苦労してなんとか VPN 環境を作った身としては感動ものです。

テレワーク諸々でこういうリモートで何か作業したいケースが増えつつあるように思いますが、Tailscale はそういったニーズにぴったりのサービスで、技術に精通していない方にもおすすめできます。Google アカウントと基本的な PC 操作ができる人ならあっという間に作れます。

今までは実際の手順が複雑なためあまり積極的に「VPN を使うなどしてください」といった呼びかけができませんでしたが、これからは「Tailscale を使ってください」と言えるので、ソフトを公開する側としても楽です。

確かに細かなチューニング等はできず、上級ユーザーにとっては物足りないかもしれません。
しかし、(これは何かしら作っていても思うことですが)大多数のユーザーにとって細かい設定は不要で、とにかく目的を達成できればそれでいいのです。

そもそも「外出先から自宅の PC にアクセスしよう」という発想が出る時点でそこそこ上級者である程度ネットワークやポート諸々の概念を理解している人だろうし、ファイアウォールの設定なりも必要になったりでそういうニーズを持っているユーザーはだいたい家の開発サーバーに繋ぎたいとかの開発者になるんだとは思います。
それでも全ての開発者がネットワーク関係に精通している訳でもなく、開発者だからといって難しい手順を踏まさせられる道理はありません。楽にできるなら楽にやりたいよね。

ある種割り切っているからこそ、ここまで簡単に VPN をセットアップできるようになっているのだと思いました。

References

References
1 NAT超えができない特殊なネットワーク用に一応プロキシはあるらしいですが、極力使わないように構築されているみたいです

コメント

  1. ちょうどリモートデスクトップ環境を構築したかったので参考になります。
    ところで、リモートデスクトップのあぷりとかって何使ってますかね?

    • 私は普通に Microsoft 純正の RDP を使ってます。Windows 版と Mac 版両方あります。
      他では Chrome リモートデスクトップが有名ですが、あちらはそもそも同じローカルネットワークになくてもいけてしまうので…