Tailscale 内网穿透总结

一、Tailscale 是什么?

Tailscale 是一个基于 WireGuard® 的零配置组网工具,能够在 NAT 和防火墙后面自动建立点对点加密网格网络(Mesh Network)。无需手动配置端口映射、公网 IP 或密钥交换。

核心特点:

  • 🔐 基于 WireGuard:使用工业级加密协议,端到端加密,私钥永不离开设备
  • 🌐 全自动 NAT 穿透:基于 STUN/ICE 标准的高级打洞技术,无需手动开端口
  • 🔄 Mesh 组网:所有节点直接点对点通信,不经过中心服务器转发数据
  • 🔑 零配置:无需管理证书、密钥、防火墙规则
  • 🆔 SSO 身份认证:集成 Google、Microsoft、GitHub 等 OAuth2/OIDC/SAML 身份提供商
  • 🛡️ 零信任网络:ACL 访问控制、设备态势检查

img

与其他工具的对比

对比项FRPZeroTierngrokTailscale
原理反向代理虚拟以太网云端隧道WireGuard VPN Mesh
需要公网服务器✅❌❌❌
需要注册账号❌✅✅✅
底层协议TCP/UDP/HTTP自研协议自研协议WireGuard
NAT 穿透需配置自动自动自动(STUN/ICE/DERP)
加密可选 TLS端到端自动 HTTPSWireGuard 端到端
免费额度完全免费25 台设备有限免费最多 6 用户 / 100 台设备
适合场景端口转发设备组网临时分享安全组网/企业VPN

二、工作原理

整体架构

1
2
3
4
5
6
7
控制平面(Control Plane)        数据平面(Data Plane)
     ↓                               ↓
[协调服务器]              [节点A] ←──WireGuard隧道──→ [节点B]
 (密钥交换)                ↑      P2P 直连 / DERP 中继      ↑
   ↑                      │                                 │
[SSO 身份提供商]        NAT/防火墙                      NAT/防火墙
(Google/GitHub等)

核心流程

  1. 节点注册:每个设备生成 WireGuard 密钥对,将公钥上传到协调服务器
  2. 身份认证:通过 SSO(Google/Microsoft/GitHub 等)验证身份
  3. 密钥分发:协调服务器将同网络的公钥列表分发给各节点
  4. NAT 穿透:使用 STUN/ICE 技术自动打洞,建立 P2P 直连
  5. DERP 中继:如果 P2P 失败(UDP 被封),自动通过全球 DERP 服务器中继

⚠️ 关键安全设计:私钥永不离开设备,即使 Tailscale 服务器也无法解密你的流量。

NAT 穿透技术

Tailscale 使用多种技术确保在各种网络环境下都能连通:

技术说明
STUN探测 NAT 类型和外部 IP/端口
ICE综合多种候选连接方式,选择最优路径
端口预测针对对称 NAT 的特殊处理
DERP 中继当 UDP 完全被封时,通过 HTTPS TCP 中继流量

三、主要用途

场景说明
🏠 家庭实验室远程访问家中的 NAS、Home Assistant、开发服务器
🔌 SSH 远程连接安全 SSH 到任何内网机器,无需公网 IP
🖥️ 远程桌面RDP/VNC 访问内网电脑
🏢 企业 VPN替代传统 VPN,零信任架构
☸️ Kubernetes 网络跨集群、跨云的 K8s 工作负载互联
🐙 CI/CD 连接安全连接 GitHub Actions 等运行器到内部资源
📱 IoT 设备管理远程管理分布式的物联网设备
🔒 零信任访问细粒度 ACL 控制,按用户/设备/端口限制访问
🌉 子网路由将整个物理网段暴露给 Tailscale 网络
🤖 AI 安全Aperture 功能统一 AI Agent 治理

四、部署方法

步骤(约 2 分钟完成)

1️⃣ 注册账号

访问 login.tailscale.com/start,使用 Google / Microsoft / GitHub / Apple 等账号登录。

2️⃣ 安装 Tailscale 客户端

Linux(一键安装):

1
2
3
4
5
6
7
8
# Debian/Ubuntu
curl -fsSL https://tailscale.com/install.sh | sh

# 安装后启动
sudo tailscaled --state=/var/lib/tailscale/tailscaled.state &

# 或作为系统服务
sudo systemctl enable --now tailscaled

其他平台:

1
2
3
4
5
6
7
8
# macOS
brew install tailscale

# Windows
# 从 https://tailscale.com/download 下载安装

# iOS / Android
# 在 App Store / Google Play 搜索 "Tailscale"

3️⃣ 登录并加入网络

1
2
3
4
5
# Linux 登录(会生成一个链接,浏览器打开认证)
sudo tailscale up

# 查看本机 Tailscale IP
tailscale ip

4️⃣ 在其他设备重复安装和登录

所有设备登录同一个账号后,自动组网。

5️⃣ 验证连通性

1
2
3
4
5
6
7
8
9
# 查看网络中的所有设备
tailscale status

# ping 另一台设备(使用 Tailscale IP 或 MagicDNS 名称)
ping 100.x.x.x
ping my-server

# SSH 到远程设备
ssh user@my-server

五、常用命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 登录 / 连接网络
sudo tailscale up

# 断开连接(保留登录状态)
sudo tailscale down

# 查看网络状态和设备列表
tailscale status

# 查看本机 Tailscale IP(IPv4)
tailscale ip -4

# 查看本机 Tailscale IP(IPv6)
tailscale ip -6

# Ping 另一台设备(测试连通性)
tailscale ping <设备名或IP>

# 启用子网路由(暴露整个局域网)
sudo tailscale up --advertise-routes=192.168.1.0/24

# 启用 exit node(将所有流量通过某台设备出去)
sudo tailscale up --advertise-exit-node

# 使用 exit node(在客户端执行)
sudo tailscale up --exit-node=<设备名>

# 注销 / 移除设备
sudo tailscale logout

# 查看当前配置
tailscale debug prefs

六、进阶功能

🌉 子网路由(Subnet Routers)

将整个局域网暴露给 Tailscale 网络,无需在每台设备安装客户端:

1
2
# 在局域网网关设备上执行
sudo tailscale up --advertise-routes=192.168.1.0/24

然后在管理后台 admin console 批准该路由。

🚪 Exit Node(出口节点)

将所有互联网流量通过某台设备转发(类似全局 VPN):

1
2
3
4
5
# 在服务端(如家里服务器)启用
sudo tailscale up --advertise-exit-node

# 在客户端使用
sudo tailscale up --exit-node=home-server

🔐 Tailscale SSH

无需配置密钥,直接通过 Tailscale 身份认证 SSH:

1
2
# 在目标机器启用
sudo tailscale up --ssh

然后从任意已认证设备直接 ssh user@设备名 即可。

🏷️ MagicDNS

自动为每台设备分配域名,无需记 IP:

1
2
3
4
# 直接用设备名访问
ping my-laptop
ssh user@home-server
http://nas:8080

🔒 ACL 访问控制

在管理后台配置精细的访问策略:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "acls": [
    // 允许所有设备互相 ping
    {"action": "accept", "src": ["*"], "dst": ["*:*"]},
    // 仅允许 dev 组 SSH 到生产服务器
    {"action": "accept", "src": ["group:dev"], "dst": ["tag:prod:22"]},
    // 拒绝其他访问
    {"action": "deny", "src": ["*"], "dst": ["tag:prod:*"]}
  ]
}

🐙 Taildrop(文件传输)

在设备间安全传输文件:

1
2
3
4
5
# 发送文件
tailscale file cp myfile.txt <设备名>:

# 接收文件(Linux)
tailscale file get .

🐳 Docker 集成

1
2
3
4
5
6
7
# 使用 Tailscale 官方 Docker 镜像
docker run -d --name tailscale \
  -v /var/lib/tailscale:/var/lib/tailscale \
  -e TS_AUTHKEY=tskey-auth-xxx \
  -e TS_STATE_DIR=/var/lib/tailscale \
  --device /dev/net/tun \
  tailscale/tailscale

七、免费额度与定价

计划价格主要限制
Personal免费最多 6 用户、100 台设备、3 个 ACL 组、50 个标签资源
Standard$8/用户/月无限用户、SCIM 部署、10 ACL 组
Premium$18/用户/月300 ACL 组、SSH 高级功能、流量日志、区域路由
Enterprise定制SLA、专业服务、定制方案

免费版对于个人用户非常慷慨:支持无限设备数、6 个用户,几乎所有功能都可使用。


八、五种内网穿透工具选择建议

需求推荐
快速临时分享 localhostngrok(最简单,一行命令)
长期稳定的端口转发FRP(完全自控,自托管)
多设备虚拟组网ZeroTier 或 Tailscale
企业级安全组网Tailscale(SSO/ACL/零信任)
完全离线/内网环境FRP 或 ZeroTier + 自建 Controller
不想维护任何服务器ngrok 或 Tailscale
追求极致安全合规Tailscale(WireGuard + 零信任)

九、相关链接