Tailscaleがすごいのでいろいろ調べた、というメモ。
ここのところ出先から自宅リソースを使いたいことが割とあって、シン・テレワークシステムやChromeリモートデスクトップでWindowsに入ってそこから操作をしていたのだけれど、さすがに不便なので考え直そうかと。
せっかくなのでモダンにWireGuardで組もうとしていたのだけれど、調べたら「Tailscaleを知ってしまったらもう戻れない」みたいな声が多く、試しに入れてみたら、本当にゼロコンフィグのコストゼロでプライベート網が組めてしまい驚いた。めちゃくちゃすごい。
tailscale.com
Tailscaleとは?
クライアントをインストールするだけでVPN網が組めてしまうネットワークサービス。
Googleで分散システムを研究していたエンジニアたちが2019年にトロントで企業し、2020年にサービス開始。
個人利用はなんと無償。法人向けにも複数の契約プランがあるが、いずれもお安い。
サポートドキュメントもしっかり公開されており、わかりやすい。
tailscale.com
なお、基盤をTailscale社ではなく自分でホストするためのOSS、「headscale」もある。Tailscale社とは独立したOSSだが、Tailscaleとの互換性がある。
headscale.net
Tailscaleの基盤技術
WireGuardによるメッシュVPN
Tailscaleは中央集中型ではなく、ノード間をピアツーピアでメッシュ接続する。ベース技術であるWireGuardが軽量で低遅延なので、メッシュネットワークが負荷にならない。
すごいNATトラバーサル
ノードがルータ配下にいてプライベートIPしか持っていなくても、自動でNATを越えて通信経路を確立してくれる。ユーザ側でNATやポート、ファイアウォールの穴あけなどを一切考慮する必要がない。
具体的な動作としては、Tailscaleのコーディネーションサーバが仲介してUDPホールパンチングを行っている。コーディネーションサーバは接続時の認証や仲介を行っているのみで、実通信はノード同士で行われる。
DERPリレーによるフォールバック中継
DERP(Designated Encrypted Relay for Packets)サーバは、Tailscale独自のトラフィック中継サーバで、NATトラバーサルがどうしても成立せず、ノード同士の直接通信ができない場合のみ、トラフィックの中継を担う。
なお、通信自体はノード間でWireGuardにより暗号化されており、DERPサーバは通信を復号することはできない。
MagicDNSによる名前解決
Tailscaleのプライベート網内で内部DNSが動作しており、各ノードのコンピュータ名と網内IPアドレスを自動で登録してくれる。これにより、ユーザはノードのIPアドレスを気にせず、コンピュータ名でアクセスができる。
ネットワーク的な特徴
ピアツーピアのメッシュネットワークである
前述のとおり、ノード間の通信は直接行われる。中央ノードでトラフィックを管理する仕組みではない。よって、全通信のログを取ったりもできない。仕組み上、トラフィックを監査する系のセキュリティ機能には対応できない。
通常は、ノード同士の通信のみがVPNを通り、その他の通信(インターネット通信など)は、通常どおりの経路でVPNとは関係なく通信する。
出口ノードを作ることが可能
特定のノードを出口ノードとして指定して、全通信を特定のノードからインターネットへ出す設定が可能。例として、海外にいるときにVPN接続して全通信を自宅から出し、接続先Webサイトの地域制限を回避する用途などに使える。
高い耐障害性
たとえばTailscaleに障害が発生して、コーディネーションサーバが利用不可となった場合でも、すでにピアツーピアで接続されたノード同士は影響を受けない。DERPで通信中継している場合や、新規に接続しようとした場合には、NGとなる。
コーディネーションサーバは、世界中のリージョンに展開されており、各リージョンに最低3台以上いるらしいので、そうそう問題はなさそう。日本は東京に設備があり、近隣では香港とシンガポールにあるので、たとえ日本が全台Downしてもどちらかにつながり利用可能。
ノードをルータ的に動作させることもできる
ノードと同じLANサブネット内にいる、Tailscaleクライアントが入っていない端末を、ノード経由でルーティングして通信させることができる。設定はデフォルトではOFFなので有効化が必要。
セキュリティ的な特徴
Tailscaleが通信を見ることはできない
前述のとおり、ピアツーピア通信かつエンドツーエンドで暗号化されるという仕組み上、Tailscaleが通信を覗き見することはできない。なお、Tailscaleの管理画面ではノードの接続履歴と、フローログ(有償プランのみ)を取ることはできる。
ACLの設定は可能
このノード同士は通信させる・させないといったルールは、ACLを書くことで設定可能。ユーザまたはグループを作って指定もできるので、たとえば組織外のゲストにはこのノードのみアクセスさせる、といった設定ができる。
その他の特徴
クライアントの対応が幅広い
Windows、Linux、macOS、iOS、Androidと基本的なところはしっかり対応している他、QNAP、SynologyのNAS用クライアントもある。
Tailscale SSH
Tailscaleに鍵管理を任せることで、自分で鍵作成せずにSSHできるようになる仕組み。前述のACLでアクセス元やユーザを絞ることもできる。地味にすごい便利。
個人利用での用途
- 出先から自宅リソースにアクセスしたい
- 遠方の実家NWをメンテナンスしたい
- 海外から日本経由でインターネットに出たい
- パブリッククラウドと自宅環境でクラスタリングしたい
とかか。用途はレガシなーVPNと大きく変わるものではなさそう。
法人向けとして使えるか?
メルカリでリモートアクセスに採用されている模様。
tailscale.com
もし自分のお客に勧めるなら、とにかくコストを安くしたくて、かつ自分で運用管理ができるならおすすめか。小~中規模のエンジニア組織であればバチッっとはまりそう。
仮に日本のレガシーな企業に入れようとすると、以下を考える必要があると思う。
TailscaleはあくまでVPNソリューションであり、通信部分のセキュリティ対策(Webフィルタリング、CASBなど)は別で必要。その辺を考えると2025年現在はSASE/SSEを入れる方針になりがちだが、そうするならばTailscaleでなくSASE/SSEが持っているプライベートアクセスソリューションを使ったほうがシンプルになるので、悩ましいかも。メルカリの構成が知りたい。
あと、ACL管理を真面目にやる必要がでるため、運用どうするかねという気もする。