関連ガイド
Tailscale の仕組み:端末同士はどうやって直接つながるのか
更新日
Tailscale がやっていることは一言で言えます。あなたの端末それぞれに固定のプライベートアドレスを割り当て、中央のサーバーを経由せずに、端末同士で直接 WireGuard の暗号化トンネルを張ることです。そのために、ネットワークの仕組みを 2 つに分けています。コントロールプレーンは本人確認、鍵の配布、「ほかの端末が今どこにいるか」を各端末に伝えることだけを担当し、データプレーンは端末同士のピアツーピアの暗号化接続で、あなたの通信はコントロールサーバーを通りません。難しいのは、自宅や会社の端末がルーターの内側にいてグローバルアドレスを持たないことで、Tailscale は NAT 越えでそれらを直接つなぎ、どうしてもつながらなければ中継で補います。以下、この順に説明します。
従来の VPN と Tailscale の違い:スター型とメッシュ型
従来の VPN はスター型です。すべての端末が 1 台の VPN サーバーにつながり、端末同士で通信するときも、通信はいったんサーバーに行ってから折り返します。サーバーはボトルネックであり、単一障害点でもあります。サーバーが遅ければ全員が遅くなり、サーバーが落ちれば全員が切れます。
Tailscale はメッシュ型です。2 台の端末ごとに直接のトンネルがあります。スマホから自宅の NAS にアクセスすると、通信はスマホから NAS へ直接、2 台の間の最短の道を通ります。すべての通信を 1 台で背負うマシンはありません。
メッシュ型の代償は管理の複雑さです。10 台の端末を互いにつなぐとトンネルは 45 本になり、どれも鍵を交換し、相手の現在のアドレスを知っている必要があります。手作業での管理は現実的ではなく、Tailscale の仕事はすべて、これを自動化することです。
コントロールプレーン:鍵とアドレス帳を配るだけで、通信には触れない
Tailscale を入れた端末は自分で鍵ペアを作ります。秘密鍵はずっと端末の中に残り、公開鍵をコントロールサーバー(Tailscale は coordination server と呼んでいます)に渡します。アカウントでログインすると、コントロールサーバーは「この端末が誰のものか」を知ります。
コントロールサーバーは 1 つの表を持っています。各端末の公開鍵、割り当てたプライベートアドレス、今その端末にたどり着けるネットワークアドレス、そして誰が誰に接続してよいかというアクセスルールです。あなたがアクセスしてよい行だけをあなたの端末に送り、どこかの端末がオンラインになる、オフラインになる、ネットワークが変わるたびに表を更新して、関係する端末に配ります。
コントロールサーバーはあなたの通信を中継せず、秘密鍵も持っていないので、端末同士の通信を復号できません。連絡先と入館証を配るだけの受付のようなもので、相手がどこにいるか、入ってよいかは教えてくれますが、中で何を話したかはその場にいないので知りません。
ログインには VPN 専用のパスワードではなく、すでにお持ちのアカウント(シングルサインオン)を使います。端末の鍵は定期的に期限が切れて再ログインでの確認が必要になり、なくした端末は管理画面で削除すればアクセス権を失います。
データプレーン:端末同士の WireGuard トンネル
実際にデータを運ぶのは WireGuard です。各端末はほかの端末の公開鍵を受け取ると、その端末と暗号化トンネルを張れます。トンネルの両端は互いの公開鍵を確認し合うので、途中の誰も中身を読むことも書き換えることもできません。
Tailscale は WireGuard の暗号化部分には手を加えていません。やっているのは WireGuard 自体が扱わない部分、つまり鍵の配り方、アドレスの割り当て方、ネットワークが変わった端末同士がどうやって互いを見つけ直すかです。WireGuard の仕組みは「WireGuard とは?仕組みと歴史をくわしく解説」をご覧ください。
このネットワークでは各端末に固定のプライベートアドレス(100 で始まる範囲)があり、実際につないでいるのが自宅の回線でも会社のネットワークでもモバイル回線でも変わりません。だから自宅の NAS にはいつも同じアドレスでアクセスできます。MagicDNS を使えば、端末名でそのままアクセスすることもできます。
NAT 越え:2 台ともルーターの内側にいるとき、どう直接つなぐか
自宅のパソコンにはグローバルアドレスがなく、外に出るときはルーターでアドレス変換(NAT)を受けます。ルーターが通すのは「内側から始めた」接続だけで、外から叩いてくるものはすべて弾きます。2 台がそれぞれのルーターの内側にいると、どちらも相手のドアを先に開けられません。これがピアツーピア接続の難しさです。
Tailscale のやり方は 3 段階です。まず、各端末がインターネット上のサーバーに「私はどのアドレスとポートから出てきているように見えるか」と尋ね、ルーターの外から自分がどう見えるかを知ります(この種のサービスを STUN と呼びます)。次に、2 台がコントロールサーバーを通してこの外部アドレスを交換します。最後に、両方が同時に相手の外部アドレスへパケットを送ります。それぞれのルーターは「内側から先に送った」と判断して戻り道を開けるので、相手のパケットがちょうどその穴から入り、接続が成立します。これがいわゆる「ホールパンチング(穴あけ)」です。
穴あけには UDP を使います。たいていの家庭用ルーターなら成功しますが、アドレス変換がとても厳しいネットワーク(新しい宛先ごとに外部ポートを変える)や、UDP 自体を遮断しているネットワークでは成功しません。
DERP 中継:穴があかないときに誰が引き継ぐか
穴あけは必ず成功するとは限らないので、Tailscale は DERP という中継サーバー群を用意しています。2 台がすぐにつながらないときは両方が同じ DERP につながり、DERP が暗号化済みのパケットを相手に渡します。DERP は HTTPS(TCP 443)を使うので、ほぼどんなネットワークでも通ります。
中継が転送するのは WireGuard ですでに暗号化されたパケットです。DERP は鍵を持たず、見えるのは「誰から誰へ、どれくらいの大きさか」だけで、中身は見えません。
接続は必ず中継から始まります。2 台はオンラインになるとまず DERP を通して話し始めるので、すぐに通信できます。同時に裏で穴あけを試し、直接つながったら気づかないうちに切り替えます。切り替えの間も接続は途切れません。つながった直後の数秒は遅延が少し大きく、その後下がるのは正常です。
中継のままだと、速度と遅延はその中継がどれだけ遠いか、どれだけ混んでいるかで決まり、たいてい直接接続より遅くなります。Tailscale のクライアントでは、今の接続が直接(direct)か中継(relay)かを確認できます。
出口ノードとサブネットルーター:端末同士の接続だけではない
- 出口ノード(exit node):ある端末を出口に指定すると、ほかの端末のインターネット通信はすべていったん暗号化されてその端末に送られ、そこのネットワークから外に出ます。効果は従来の VPN と同じで、外からは出口ノードのアドレスが見えます。出口ノードは自宅のパソコンでも、事業者が用意したサーバーでもかまいません。
- サブネットルーター(subnet router):Tailscale を入れた 1 台の端末が、その LAN 全体の代理をします。プリンター、カメラ、古い NAS など Tailscale を入れられない機器にも、これを通してアクセスできます。
- アクセス制御(ACL):初期設定では自分の端末同士はすべて互いにアクセスできます。チームで使うときは、誰が・どの端末が・どのポートにアクセスできるかをルールで決められます。ルールはコントロールサーバーが配り、各端末が自分で適用します。
- MagicDNS:各端末に名前を付けるので、100 で始まるアドレスを覚えなくてもアクセスできます。
WireGuard や従来の VPN とはどういう関係か
- WireGuard との関係:WireGuard は 1 本のトンネルのプロトコルで、両端がどう暗号化して通信するかだけを扱い、それぞれの鍵や相手のアドレスは自分で手作業で設定します。Tailscale はその上に作られたシステム全体で、ログイン、鍵の配布、アドレスの割り当て、NAT 越え、中継を代わりにやってくれます。
- 従来の VPN サービスとの関係:従来の VPN は「すべての通信を 1 台のサーバーへ」で、出口を変えることが主目的です。Tailscale の主目的は「端末同士をつなぐこと」で、出口の変更(出口ノード)はおまけの機能です。
- ポート公開型のリモートアクセスツール(frp、Peanut Shell など)との関係:これらは LAN 内のポートをインターネットに公開するもので、アドレスを知っていれば誰でもアクセスでき、安全性はそのサービス自身に頼ります。Tailscale はポートを一切公開せず、あなたのアカウントでログインした端末しか入れません。
- ZeroTier との関係:自動でネットワークを組むという考え方は近いですが、ZeroTier は独自のプロトコルでレイヤー 2 のネットワークを再現し、Tailscale は WireGuard を使ってレイヤー 3 で動きます。
Headscale と自前のコントロールサーバー
Tailscale のクライアントはオープンソースで、コントロールサーバーは Tailscale 社が運営するサービスです。Headscale はコミュニティが作ったオープンソースのコントロールサーバーで、同じプロトコルを実装しており、公式クライアントの接続先をそちらに切り替えられます。そうすれば、端末の一覧、鍵の台帳、アクセスルールを自分の手元に置けます。
クライアントにある「Use custom server」「Use an alternate server」(カスタム/別のコントロールサーバーを使う)という項目は、このためのものです。アドレスを入れると、クライアントは Tailscale 社のサーバーではなく、指定したサーバーにつながります。
自前で運用する場合、アカウントのログイン方法、つなげる端末の数、使える出口ノードはすべてそのコントロールサーバーの運営者が決め、Tailscale 公式の無料枠や有料プランとは関係ありません。
中国のネットワークで使うときに知っておきたいこと
- 穴あけは UDP 頼みです。中国の回線は UDP を絞っていることが多く、通信事業者の大規模 NAT(多段のアドレス変換)も穴あけを難しくするため、中継を通る確率が中国国外より高くなります。
- 中継を通るときの速度は、中継がどこにあるか次第です。中継が遠ければ遅延が大きくなります。中国で Tailscale の使い心地に大きな差が出る主な理由はこれです。
- WireGuard のパケット形式は決まっていて偽装されていないので、検査の厳しいネットワークでは識別されて速度を絞られることがあります。Tailscale はネットワークを組むためのツールで、ブロックを回避するために設計されたものではありません。
- スマホでつけっぱなしにしても問題ありません。トンネルに通信がないときはほとんど電力を使わず、Wi‑Fi とモバイル回線を切り替えても接続は自動で戻ります。
LeoTun のプライベートでの使い方
LeoTun の「プライベート」セクションでは、Tailscale の公式クライアントを当社が運用するコントロールサーバーにつないで使います。サイトのアカウントで一度ログインすれば端末はつながったままになり、各地域に出口ノードを用意しているので、クライアントの「Exit Node」(出口ノード)メニューで地域を選ぶだけで出口が変わり、設定を読み込み直す必要はありません。同じアカウントのスマホ、パソコン、NAS は互いに直接アクセスできます。
ログイン先は当サイトのコントロールサーバーなので、端末の台数は当サイトのアカウントのプランで決まり、Tailscale 公式のアカウントや枠とは関係ありません。端末で Tailscale 公式アカウントにログインしたことがある場合は、先にログアウトしてから当サイトのアカウントでログインしてください。導入とログインの手順は画像付きで「プライベートネットワーク(Tailscale)とは」にあり、入口はプライベートページです。
ネットワークが UDP を制限していて、プライベートが遅い・不安定なときは、同じアカウントでほかの接続方法に切り替えられます。「接続方法ごとの向いている場面」をご覧ください。
よくある質問
Tailscale のサーバーから自分の通信は見えますか?
中身は見えません。コントロールサーバーが持っているのは公開鍵、端末の一覧、アクセスルールだけで、秘密鍵は端末から出ません。中継サーバーが転送するのは暗号化済みのパケットで、鍵は持っていません。見えるのはメタデータ、つまりどの端末がオンラインで、誰と接続したかです。
Tailscale と WireGuard はどういう関係ですか?
WireGuard は土台となる暗号化トンネルのプロトコルで、Tailscale はその上にアカウントのログイン、鍵の配布、アドレスの割り当て、NAT 越え、中継を加えたものです。WireGuard がエンジンなら、Tailscale はそのエンジンを積んで、すぐ走れる完成車です。
直接接続ではなく中継(relay)と表示されるのはなぜですか?
2 台の間で穴あけが成功しなかったということです。よくある原因は、どちらかのネットワークが UDP を遮断しているか、アドレス変換が厳しすぎることです。中継でも普通に使えますが、速度は中継の場所次第です。ネットワークを変える(スマホのテザリングなど)と直接つながることがよくあります。
DERP とは何ですか?
Tailscale の中継サーバーです。2 台が直接つながらないときに暗号化済みのパケットを転送し、端末がオンラインになった直後もまずこれを通して連絡を取ります。HTTPS を使うので、ウェブの通信しか通さないネットワークでも通ります。
出口ノードと普通の VPN の違いは何ですか?
効果は同じで、どちらもインターネット通信をすべて別の場所から出します。違いは、出口ノードがネットワーク内の 1 台の端末にすぎないことで、メニューからいつでも別の端末に変えたりオフにしたりでき、変えるときに設定し直す必要もなく、端末同士のアクセスにも影響しません。
Headscale とは何ですか?
Tailscale のコントロールサーバーをオープンソースで実装したものです。公式クライアントのコントロールサーバーのアドレスをそれに変えれば、自分で管理するネットワークができます。データプレーンは引き続き WireGuard で、クライアントも公式のままです。
Tailscale でネット規制を回避できますか?
Tailscale 自体はネットワークを組むためのツールです。ネットワーク内に中国国外にある端末があり、それを出口ノードに設定したときだけ、通信が国外から出ていきます。通信は偽装されておらず、UDP を制限するネットワークではうまく動かないこともあります。安定した国際回線が必要なら、「接続方法ごとの向いている場面」にあるほかの方法をご覧ください。