Tailscale 是什么:一篇看懂这套 P2P 内网穿透神器(折腾系列·序章)

J
Joy
2026年06月16日 · 1 分钟阅读

异地连家里的 NAS、回公司内网、给设备搭私有组网——Tailscale 把这些事做到了「登录即组网、自动打洞、像在同一局域网」。这篇是折腾系列的序章,先把 Tailscale 的原理、它和自建版 Headscale 的关系讲清楚,后面几篇再动手折腾。

系列:Tailscale 折腾 1 / 4
  1. 1 Tailscale 是什么:一篇看懂这套 P2P 内网穿透神器(折腾系列·序章) 当前
  2. 2 给 Headscale 配个 Web 界面:headscale-ui 安装折腾记
  3. 3 自建 DERP 中继:让 Headscale 打洞失败也能稳连国内 20ms
  4. 4 把设备接进自建 Headscale:从 tailscale up 登录到 headscale-ui 管理

这是我「Tailscale 折腾系列」的第一篇。后面会一篇篇动手搭自建控制面、配 Web 界面、自建国内中继——但在敲命令之前,先用一篇把原理讲透。搞懂它怎么工作,后面折腾时遇到问题才知道是哪一环出了岔子,而不是照着命令瞎抄。

先说痛点:我们到底想解决什么

场景很常见:人在外面,想连家里的 NAS、回公司内网、用一台云服务器中转流量。传统方案各有各的难受:

  • 端口转发 / DDNS:要有公网 IP,还把服务直接暴露在公网上,不安全。
  • frp / 反向代理:能穿透,但每加一个服务就要配一条规则,运维琐碎。
  • 传统 VPN(OpenVPN/IPsec):中心化网关,配置重,所有流量绕一圈,慢。

它们的共同问题是:要么依赖公网 IP,要么流量被迫绕中心节点,要么配置繁琐

Tailscale 的思路完全不同:让你所有设备登录同一个账号就自动组成一张虚拟局域网,设备之间点对点直连,像插在同一台交换机上一样——不需要公网 IP,不用挨个配端口。

核心原理:控制面与数据面分离

Tailscale 基于 WireGuard(现代、快、内核级的 VPN 协议)。它真正聪明的地方,是把网络拆成了两个面

  • 控制面(Control Plane):协调中心。负责设备认证、分发各设备的公钥、下发访问策略(ACL)。它只协调、不碰你的数据
  • 数据面(Data Plane):设备之间用 WireGuard 直接点对点加密通信,数据不经过任何中心服务器。
flowchart TD
    C["控制面 / Control Plane
认证 · 分发公钥 · 下发 ACL"] A["设备 A
手机"] B["设备 B
家里 NAS"] D["设备 C
公司电脑"] C -. "只协调,不碰数据" .-> A C -. "只协调,不碰数据" .-> B C -. "只协调,不碰数据" .-> D A == "WireGuard P2P 直连" === B A == "WireGuard P2P 直连" === D B == "WireGuard P2P 直连" === D style C fill:#dbe9ff,stroke:#2563eb,stroke-width:2px

控制面帮设备们「互相认识」,之后它们就甩开控制面自己直连了。这也是为什么 Tailscale 又快又安全——流量从不经过中间服务器

那打洞失败怎么办?DERP 兜底

P2P 直连需要 NAT 穿透(打洞),但有些网络环境(对称型 NAT、运营商大内网)打不通。这时流量会退而走 DERP 中继——一个公网上的加密转发节点。

关键:DERP 只在直连失败时兜底,直连成功它就不参与。官方 DERP 节点遍布全球,但对国内用户来说延迟偏高,这也是后面我会自建一台国内 DERP 的原因。

Tailscale 官方 vs 自建 Headscale

用 Tailscale,那个「控制面」默认是 Tailscale 公司托管的。对很多人够用,但有几个理由让我想自己掌控:

Tailscale 官方自建 Headscale
控制面Tailscale 公司托管自己服务器上跑
数据隐私协调元数据在对方手里全在自己手里
设备数免费版有上限自己说了算
折腾乐趣开箱即用拉满 😎

Headscale 就是 Tailscale 控制面的开源自建实现。客户端还是用官方的 Tailscale App,只是把「登录服务器」指向你自己的 Headscale。本系列后面全部基于 自建 Headscale 展开。

几个会反复出现的概念

后面几篇会频繁用到这些词,先混个脸熟:

  • Tailnet:你的整张虚拟局域网。
  • 控制面 / 数据面:协调 vs 实际通信,见上。
  • WireGuard:底层加密隧道协议,P2P 直连靠它。
  • DERP:直连失败时的加密中继兜底。
  • MagicDNS:给每台设备自动分配好记的域名,不用背 IP。
  • ACL:访问控制策略,谁能访问谁。
  • Subnet Router:让某台设备把它所在的整个内网桥接进 Tailnet。
  • Exit Node:把某台设备当出口,所有流量从它出去(类似全局代理)。

这个系列接下来折腾啥

序章到此,原理铺垫完了。接下来是动手环节,建议按顺序读:

  1. 下一篇 →《给 Headscale 配个 Web 界面:headscale-ui 安装折腾记 Headscale 原生只有命令行,先给它配个 Web 界面,后面加节点、批设备、配路由都能点鼠标,省得一直 SSH。

  2. 再下一篇 →《自建 DERP 中继:让 Headscale 打洞失败也能稳连国内 20ms 把兜底中继也搬到国内,延迟从境外的 100ms+ 压到 20ms 级,含改源码、自签证书、防白嫖三处踩坑。

  3. 收尾 →《把设备接进自建 Headscale:从 tailscale up 登录到 headscale-ui 管理 日常最常做的一环:客户端 tailscale up --login-server 登录、批准入网、在 Web 界面里管设备,配模拟截图走一遍。

整个系列的目标:一套完全自己掌控、国内体验拉满的私有组网。跟着折腾完,你也能拥有一张「走到哪都像在自家局域网」的网络。下一篇见 👇

分享

评论

相关文章

3 分钟阅读
自建 DERP 中继:让 Headscale 打洞失败也能稳连国内 20ms

Tailscale/Headscale 靠 WireGuard P2P 直连,但很多 NAT 环境打洞会失败、流量被迫走官方境外 DERP,延迟动辄 100ms+。这篇记录我在自建 Headscale 上加一台国内自建 DERP 的全过程,含改源码、自签证书、防白嫖三处踩坑。

文章 折腾
2 分钟阅读
给 Headscale 配个 Web 界面:headscale-ui 安装折腾记

Headscale 原生只有 CLI,每次加节点、批用户、看路由都得 SSH 敲命令。headscale-ui 是个纯静态 Web 前端,调 Headscale API 把这些操作搬到浏览器里。这篇记录它的安装、反代配置和登录踩坑。

文章 折腾