Tailscaleはなぜポート開放なしでつながるのか――NAT越え・直接接続・中継の仕組み

自宅PCへ外出先から接続しようとすると、最初に思い浮かぶのはルーターのポート開放でした。しかし、回線がCGNAT(通信事業者側で複数の利用者が共有するNAT)の内側にあれば、自宅ルーターより外側のNATは自分では変更できません。NATは、ネットワークアドレス変換の略です。自宅側だけ設定しても、受信経路は完成しません。

それでもTailscaleは、固定の受信ポートを自宅ルーターへ設定せずに端末同士を接続できます。この記事では、その理由を「端末情報の調整」「DERPによる接続開始」「NAT越えによる直接接続」「失敗時の中継」という順に整理します。

接続方式は、Tailscale 1.98.10と2026年8月9日時点の公式資料を基準にします。

「Tailscaleがポート開放なしでつながるまでを、NATから順に整理する」では、NATの前提から接続経路の確認までを一つのスレッドにまとめました。ここでは、なぜその順序が必要なのかまで掘り下げます。

まず全体像

Tailscaleが中継から直接接続へ切り替える流れ 端末Aと端末Bが調整サーバーから相手の公開情報を受け取り、まずDERP経由で接続する。その後、両端末が外向きにUDPを送り合い、NAT越えに成功すれば直接接続へ切り替える。失敗時はPeer RelayまたはDERPを使い続ける 端末A NATの内側から送信 端末B NATの内側から送信 コントロールプレーン 端末・鍵・経路・ポリシーを配布 1. DERPで接続開始 暗号化通信を中継 2. UDPで直接経路を探索 成功:direct 失敗:Peer RelayまたはDERPを継続
まず届く中継経路を作り、その通信と並行してより速い直接経路を探します。図は横へスクロールできます。

NATの外側からは、LAN内の受信先を決められない

家庭のIPv4ネットワークでは、ルーターが複数のLAN内端末を一つのグローバルIPアドレスへ対応付けます。LAN内の端末が外向きに通信すると、ルーターは送信元IPとポートを書き換え、戻り先を対応表へ記録します。

返答はその記録を使って元の端末へ届きます。一方、外部から突然届いた通信には対応する記録がありません。ルーターはLAN内のどこへ転送すべきか決められません。

従来のポート開放は、受信した特定のポートをLAN内の端末へ渡す規則を手動で追加する方法です。ただし、通信事業者側にもNATがあると、自宅ルーターまでの受信経路を利用者は設定できません。

Tailscaleは、外部から一方的に入ってくる固定経路を前提にしません。両方の端末が外向きに通信を始め、その応答を通せるNATの状態を作ります。

調整サーバーと通信経路を分ける

NAT越えを試すには、各端末が相手の公開鍵、到達候補となるIPアドレスとポート、許可された経路を知る必要があります。この情報を扱うのがTailscaleのコントロールプレーンです。

調整サーバーは、端末の発見、鍵の配布、NAT越えの調整、経路やポリシーの配布を担います。

実際の通信内容は、各端末上のデータプレーンがWireGuardという方式で暗号化します。直接接続できれば端末同士で運び、できなければDERPまたはPeer Relayで中継します。調整サーバーと中継サーバーは、どちらも中央に見えるサーバーですが役割が違います。

DERPで先につなぎ、UDPの直接経路を探す

Tailscaleの端末は、それぞれ近いDERPサーバーへ接続しています。端末Aが端末Bへ通信を始めると、最初の接続要求は端末Bが利用しているDERPを介して届きます。

この段階で、暗号化されたデータを運べる経路が先に成立します。同時に両端末は、直接接続に使える候補を交換します。

候補には、端末内のIPアドレスとポート、ポートマッピングで得た情報が含まれます。STUNという仕組みで調べた、外部から見えるIPアドレスとポートも候補です。

候補を得た両端末は、互いにUDPパケットを送ります。NATは、先に端末から外向きの通信があれば、その返答を内側へ通せる場合があります。通信状態を記録するステートフルファイアウォールも同様です。

両端から送ることで、端末同士のUDP経路を作るのがNAT越えの中心です。

直接経路が見つかると、TailscaleはDERPからdirectへ切り替えます。ネットワーク条件が変われば、後から中継へ戻ることもあります。

直接接続できないことも正常な設計に含まれる

UDPが遮断されるネットワークでは、直接経路を作れないことがあります。接続先ごとに外側のポート割り当てが変わるNATも、直接接続が難しくなる条件です。Tailscaleは直接接続を保証するのではなく、接続方法を三つ持っています。

接続方法 通信の通り方 主な位置付け
direct 端末同士がUDPで直接送る 通常は低遅延・高スループット
peer-relay 同じtailnet(Tailscaleで管理するネットワーク)内の中継端末を通る 直接接続できず、利用可能なPeer Relayがある場合
relay TailscaleのDERPを通る 他の経路が作れない場合のフォールバック

三つともWireGuardでエンドツーエンド暗号化されます。主な違いは、通信経路上で経由するサーバーや端末と、そこで変わる性能です。DERPでつながっているだけで、暗号化が外れた状態を意味するわけではありません。

まとめ

Tailscaleは、自宅ルーターへ固定の受信規則を作る代わりに、両端末から外向きに接続します。調整サーバーが相手の鍵と接続候補を配り、DERPで先に通信を成立させ、その後にUDPの直接経路を探します。

直接接続できればdirectへ切り替わり、できなければPeer RelayまたはDERPを使い続けます。

ポート開放なしでつながる理由は、NATが消えるからではありません。NATの状態を端末同士で作り、作れない場合にも暗号化された中継経路を残しているからです。

参考資料

接続方式と役割分担は、次の公式資料で確認できます。