看得懂的图文指南

把你的设备连成一张私有网络
随时随地远程办公

Tailscale 基于 WireGuard,让你的笔记本、台式机、服务器、云主机像在同一个局域网里一样互通——不用开公网端口、不用记 IP、加密直连。这份指南把常用玩法拆成「场景 → 最佳实践 → 配置」,新手也能照着做。

🎯用场景 解决什么问题 最佳实践 推荐怎么做 ⚙️配置方法 照着敲命令
00

先搞懂几个核心概念#

不用全记住,遇到再回来查。理解这几个词,后面全通。

概念一句话解释
Tailnet你的私有网络。同一个账号登录的所有设备都在这张网里,互相能通。
节点 Node网里的每台设备,自动分到一个 100.x.y.z 的私有 IP(永不变)。
MagicDNS给每台机一个好记的名字,直接用 ssh laptop 而不是记 IP。
直连 vs 中继Tailscale 优先让两台机点对点直连(打洞);打不通才走中继(DERP),慢一些但保证通。
ACL访问控制策略,一份 JSON 决定"谁能连谁的哪个端口"。安全的核心。
Exit Node出口节点。让你的全部上网流量从某台指定机器出去(类似 VPN 落地)。
Subnet Router子网路由。一台机器把它所在的整个局域网"引进" tailnet,别的设备不用装 Tailscale 也能访问。
💡装好后第一步永远是 tailscale up 登录;之后 tailscale status 看谁在线、tailscale ping <机器> 看走的是直连还是中继。
🍎
macOS

App Store 版(GUI)或 brew install tailscale(CLI)。

🐧
Linux

curl -fsSL https://tailscale.com/install.sh | sh

📱
iOS / Android

应用商店搜 Tailscale,同账号登录即入网。

🪟
Windows

官网下载安装包,托盘登录。

01

从任何地方 SSH 回自己的机器#

🎯 用场景

出门在外(咖啡馆、公司、出差),想连回家里或云端的服务器跑命令、看日志。传统做法要在路由器开 22 端口转发,暴露在公网天天被爆破。

✅ 最佳实践
  • Tailscale SSH:认证走 tailnet 身份,不用管公钥分发,还能强制重新认证。
  • 服务器 不在公网开 22 端口,SSH 只监听 Tailscale 接口。
  • 用 MagicDNS 名字连,不背 IP。
⚙️ 配置方法

要被连的服务器上开启 Tailscale SSH:

服务器端
# 开启 Tailscale SSH(接管 SSH 认证)
tailscale up --ssh
客户端(任何地方)
# 直接用机器名连,无需公网 IP、无需端口
ssh user@myserver
# 或带 tailnet 全名
ssh user@myserver.your-tailnet.ts.net
🔒配合 第 06 节的 ACL ssh 规则,能精确控制"谁能以哪个用户 SSH 到哪台机",并对 root 登录要求二次确认(check)。
02

远程桌面 / 屏幕共享(一块屏控制多台机)#

🎯 用场景

家里有多台电脑但只有一块显示器;或者出门想图形化操作家里那台机。想像坐在它面前一样点鼠标、开 App。

✅ 最佳实践
  • 屏幕共享(VNC)走 tailnet:在家自动直连局域网(~2ms),出门走加密隧道,全程不开公网端口。
  • 用 MagicDNS 名字发起连接,做成一条命令一键弹出。
  • 被控机若不接显示器(无头),插个几十块的 HDMI 假负载或用虚拟显示器,避免分辨率变低。
⚙️ 配置方法

被控的 Mac:系统设置 → 通用 → 共享 → 打开「屏幕共享」。发起端直接连:

macOS 发起屏幕共享
# 用 MagicDNS 名字(在家走局域网直连,最快)
open vnc://mymac
# 出门时用它的 Tailscale IP
open vnc://100.x.x.x
做成智能一键命令 (~/.zshrc)
# 在家走局域网,不在家自动回退 Tailscale
vnc-desk() {
  if ping -c1 -t1 mymac.local >/dev/null 2>&1; then
    open "vnc://mymac.local"
  else
    open "vnc://100.x.x.x"   # 目标机的 Tailscale IP
  fi
}
🖥️Windows 用 RDP(3389)、Linux 用 xrdp / VNC,道理一样——服务端口只对 tailnet 开放即可。
03

访问整个家庭 / 公司内网#

🎯 用场景

家里有 NAS、打印机、智能家居、路由器管理页、IoT 设备——它们装不了 Tailscale。出门却想访问它们。

✅ 最佳实践
  • 选一台常开的机器(家用小主机 / NAS / 软路由)当 Subnet Router,把整个网段引进 tailnet。
  • 只广播真正需要的网段,别把无关子网也放进来。
  • 路由要在管理后台手动批准后才生效。
⚙️ 配置方法
① 作为子网路由的那台机(Linux 示例)
# 开启 IP 转发
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

# 广播你的局域网网段(按实际改)
tailscale up --advertise-routes=10.0.0.0/24
② 管理后台批准
# 打开 https://login.tailscale.com/admin/machines
# 找到这台机 → ... → Edit route settings → 勾选批准该子网
③ 其它设备接受路由
tailscale up --accept-routes
# 之后就能直接访问内网里没装 Tailscale 的设备,比如 NAS 后台
open http://10.0.0.20
04

出门让全部流量走指定出口#

🎯 用场景

连了不安全的公共 WiFi,想给全部流量加密;或需要一个固定的出口 IP(某些服务只认你家/公司 IP);或人在境外想从家里出口访问国内网络。

✅ 最佳实践
  • 用一台带宽好、常开的机器(家里主机或云服务器)当 Exit Node
  • 手机/笔记本一键切换出口,离开时随手关掉恢复本地上网。
  • 需要同时访问本地打印机等,加 --exit-node-allow-lan-access
⚙️ 配置方法
① 出口机上广播(并开转发,同上一节)
tailscale up --advertise-exit-node
# 然后到管理后台同样「批准」这个出口节点
② 客户端使用出口
# 全部流量走指定出口机
tailscale up --exit-node=100.x.x.x --exit-node-allow-lan-access
# 取消,恢复本地直连上网
tailscale up --exit-node=
📍GUI 客户端(手机 / Mac 菜单栏)里也有下拉菜单直接选 Exit Node,比命令更方便。
05

把内网 Web 服务安全地暴露出来#

🎯 用场景

自建了 Jellyfin、NAS 面板、监控大盘、个人 dashboard,想在手机 / 别的设备上访问,又不想开端口、不想折腾反向代理和证书。

✅ 最佳实践
  • 只给自己看 → 用 tailscale serve:仅 tailnet 内可访问,自动 HTTPS。
  • 要公网分享 → 用 tailscale funnel:临时把服务开到公网,用完关掉。
  • 敏感服务永远优先 serve;funnel 只给确实要外部访问的东西。
⚙️ 配置方法
仅 tailnet 内(推荐)
# 把本机 3000 端口的服务,以 https 发布到 tailnet
tailscale serve --bg 3000
# 查看/关闭
tailscale serve status
tailscale serve --https=443 off
开到公网(需在 ACL 里启用 funnel)
tailscale funnel 3000
# 会给你一个 https://机器名.your-tailnet.ts.net 的公网地址
06

安全加固 —— 别裸奔(最重要)#

社区讨论度最高的话题。Tailscale 默认配置很宽松(全网互通),一台设备沦陷就等于整张网沦陷。下面每一项都值得做。

① ACL 改成"默认拒绝",按需放行

✅ 最佳实践

给设备打 tag(tag:server / tag:laptop),按 tag 授权而不是按人。笔记本丢了只吊销一个 tag。

管理后台 → Access Controls(JSON 示例)
{
  "tagOwners": {
    "tag:server": ["autogroup:admin"],
    "tag:laptop": ["autogroup:admin"]
  },
  "acls": [
    // 笔记本只能连服务器的 SSH/RDP/VNC 端口
    { "action":"accept", "src":["tag:laptop"],
      "dst":["tag:server:22,3389,5900"] },
    // 每个人都能访问「自己的」设备
    { "action":"accept", "src":["autogroup:member"],
      "dst":["autogroup:self:*"] }
  ],
  "ssh": [
    // SSH 到服务器,非 root 直接放行,root 需二次确认
    { "action":"check", "src":["autogroup:member"],
      "dst":["tag:server"], "users":["autogroup:nonroot","root"] }
  ]
}
🛠️开源工具 Adversis/tailsnitch 能扫描你的 tailnet 和 ACL,找出过度授权、暴露的节点。定期跑一次。

② 其余关键开关

项目为什么怎么做
新设备手动批准防止陌生设备偷偷入网后台 Settings → Device approval 打开
Tailnet Lock即便协调服务器被攻破,没有你签名的新节点也进不来tailscale lock init 后签名各节点
密钥过期定期强制重新认证,降低长期密钥泄露风险后台按设备设置;服务器用一次性 auth key
SSH 只绑 tailnet公网彻底看不到 22 端口第 01 节 + 防火墙只放行 tailscale0
Tailnet Lock
tailscale lock init        # 初始化(会给出信任密钥)
tailscale lock status      # 看哪些节点待签名
tailscale lock sign <node-key>
⚠️关于"Tailscale 比开端口还可怕"的争论:核心不是 Tailscale 不安全,而是默认全通 + 从不收紧。把上面这几项做了,它的攻击面远小于往公网转发端口。
07

想完全自主可控:Headscale#

🎯 用场景

不想把设备拓扑托管给 Tailscale 官方,或要完全离线/内网自主运行控制面。

✅ 最佳实践
  • 用开源 juanfont/headscale(⭐41k+)自建协调服务器,客户端仍用官方 Tailscale App。
  • 配 Web 面板 headscale-ui / headplane 管理。
  • 代价:协调服务器的可用性要自己保障(挂了新设备连不上,已直连的不受影响)。
⚙️ 配置方法(最简)
服务器
# Docker 起 headscale,详见官方文档
docker run -d --name headscale -v ./config:/etc/headscale \
  -p 8080:8080 headscale/headscale:latest headscale serve
# 创建用户 + 生成注册密钥
headscale users create myuser
headscale preauthkeys create --user myuser --reusable
客户端指向你的 headscale
tailscale up --login-server=https://headscale.example.com \
  --authkey=<上一步的key>
08

一套"远程办公"参考架构#

把上面的能力拼起来,这是社区里很常见、也很好用的一套配置(占位示例,按自己情况替换)。

🖥️
常驻工作机 × N

台式机/主机常开,挂 tailnet。出门用屏幕共享随时进(第 02 节)。

💻
移动笔记本

在路上的主力,打 tag:laptop,只被授权连服务器必要端口。

🗄️
家庭 Linux 服务器

兼任 Subnet Router,把家里整个内网引进来(第 03 节)。

☁️
云主机 × 若干

其中一台当 Exit Node,出差时全流量走它出口(第 04 节)。

🧭落地顺序建议:① 收紧 ACL + 打 tag(性价比最高)→ ② SSH 切到 Tailscale SSH,砍掉公网端口 → ③ 一台服务器配成 Subnet Router④ 一台云主机当 Exit Node
09

排障速查#

登录时浏览器不弹出授权页(macOS 独立版常见)

官网独立版靠网络扩展跑后端。macOS 大版本更新后,扩展经常被打回禁用状态,后端不运行 → 生成不了授权 URL → 浏览器自然不弹。

  • 检查扩展状态:systemextensionsctl list | grep tailscale —— 正常应是 [activated enabled],若显示 [activated disabled] 就是它。
  • 系统设置 → 通用 → 登录项与扩展 → 网络扩展,把 Tailscale 重新打开(需管理员授权)。
  • 兜底:终端手动拿链接自己复制到浏览器打开 —— /Applications/Tailscale.app/Contents/MacOS/tailscale login

怀疑走了慢速中继?看走的是直连还是 relay

诊断连接路径
tailscale ping myserver
# "via 10.x/直连IP ... direct" = 点对点直连(快)
# "via DERP(xxx)"            = 走中继(慢,通常是 NAT 打不穿)

tailscale netcheck
# 看 UDP 是否可用、NAT 类型;MappingVariesByDestIP: false = 打洞友好
🏠同一局域网的两台机,即使用 Tailscale IP 也会自动走 LAN 直连(~1-2ms),不经任何中继——所以在家用完全不慢。
10

常见问题#

Tailscale 会不会很卡 / 走中继延迟高?

优先级是 局域网直连 > 公网 P2P 直连 > 中继。绝大多数情况能直连,延迟就是真实网络距离。只有两端 NAT 都打不穿才落中继,而且你还能自建更近的中继降低延迟。

在家两台机走 Tailscale,会绕一圈公网吗?

不会。同网段自动 LAN 直连,tailscale ping 会显示 direct 且走的是 10.x 内网地址。

和传统 VPN 有啥区别?

传统 VPN 是"所有人连到一个中心网关"(星型,中心是瓶颈);Tailscale 是点对点网状,设备之间直连,没有中心瓶颈,单点故障也不影响已建立的连接。

免费额度够个人用吗?

个人版够绝大多数家庭/个人场景(设备数、用户数上限都很宽)。介意依赖官方就上 Headscale 自托管(第 07 节)。