跳至正文
网络 — Tailscale 入门:原理、使用方法与适用场景

Tailscale 入门:原理、使用方法与适用场景

AI 参与说明(Agent:Codex):本文由 Codex 协助检索 Tailscale 官方资料、整理示例与校对。资料通过 Context7 及官方原始页面核对,整理日期为 2026-10-21。执行入口为 Codex Desktop;模型完整标识与 reasoning effort 未取得任务级运行记录。

Tailscale 可以把分散在家里、办公室和云上的设备连接成一个受访问策略控制的私有网络。人在外面时,仍然可以用设备名或 Tailscale IP 访问家里的开发机、NAS 或服务器,通常不必手动配置公网 IP 和路由器端口映射。

最容易上手的方式是:先让两台设备加入同一个 tailnet,连通一个已有的 SSH 或 Web 服务。需要访问没装客户端的局域网设备时,再配置 subnet router;需要把上网流量送到另一台设备出口时,再使用 exit node。

先认识几个术语

英文术语中文名称简要解释
TailscaleTailscale负责连接设备、协调连接并管理访问权限的网络产品
tailnetTailscale 私有网络由加入其中的设备、用户及访问策略组成的网络
WireGuardWireGuardTailscale 用来加密设备间通信的 VPN 协议
control plane控制平面处理设备认证、连接协调与访问策略等管理工作
data plane数据平面实际传输设备之间的数据包
NAT traversalNAT 穿透穿越路由器的地址转换,让不同网络的设备建立直连
DERPDERP 中继服务在设备无法直连时转发已经加密的数据包
MagicDNSMagicDNS让设备通过名称找到同一 tailnet 中的其他设备
subnet router子网路由器把 tailnet 与指定的局域网或私有子网连接起来
exit node出口节点为选用它的设备转发互联网流量

Tailscale 是什么

Tailscale 常被称为基于 WireGuard 的 mesh VPN。它在设备原有的网络之上建立连接,让不同地点的设备通过各自的 Tailscale 地址通信,同时把设备认证、连接发现和访问控制整合起来。

例如,笔记本连接手机热点,家里的 Linux 服务器位于家用路由器后面。两者加入同一个 tailnet 后,可以尝试直接连接;即使网络条件不允许直连,也可以通过 DERP 转发加密通信。你不需要先把服务器的 SSH 端口暴露到公网。Tailscale encryption

这里的“像在同一个私有网络里”主要指按 IP 或名称访问服务。Tailscale 不会替你安装 SSH 服务、启动数据库,或配置应用账号。设备能连上之后,访问哪个端口、应用是否允许登录,仍由相应配置决定。

control plane 与 data plane 怎样分工

The control plane coordinates devices and access policies. The data plane carries device traffic encrypted with WireGuard. Tailscale encryption

flowchart TD
    C["Tailscale control plane"]
    A["笔记本"]
    B["家中服务器"]
    D["DERP"]
    C -.->|认证与连接协调| A
    C -.->|认证与连接协调| B
    A <-->|WireGuard 直连| B
    A <-->|已加密数据包| D
    D <-->|已加密数据包| B

图中的直连路径和 DERP 路径是连接可能采用的不同路径。设备建立连接时可以先经过 DERP,再尝试通过 NAT traversal 建立直连;无法直连时继续使用中继。因此,第一次看到中继并不代表连接之后也一定经过中继。

DERP 只转发已经经过 WireGuard 加密的数据包,无法读取其中的明文。它与负责设备协调的 control plane 承担不同职责。中继会影响延迟和可用带宽,实际体验还取决于两端网络,不能保证“装好就能跑满宽带”。连接类型与路径验证

两台设备怎样开始使用

下面以一台笔记本和一台 Linux 服务器为例。两端需要能够访问 Tailscale 服务;服务器上的 SSH 或 Web 服务应已经可以正常使用。个人试用时,可以先在两端登录同一账号,让它们加入同一个 tailnet;团队使用应给成员各自的账号并分配权限。

安装客户端并登录

Windows、macOS、iOS 和 Android 可以从 官方下载页安装对应客户端,启动后按提示登录。macOS 若要使用下文的命令,还需要按 CLI 文档配置命令行入口。

Linux 可以使用官方安装脚本,再连接并认证:

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

按终端提示打开认证链接。完成后,在客户端或 Machines 管理页面确认两台设备都已出现,并处于在线状态。受管理的 tailnet 如果启用了设备审批,还需要完成相应审批。Linux 安装示例

找到设备地址并验证连接

在 Linux 服务器执行:

bash
tailscale ip -4
tailscale status

第一条返回本机的 Tailscale IPv4 地址,例如 100.101.102.103;第二条用于查看设备及连接状态。示例地址仅用于说明,实际操作应替换成自己的设备地址。CLI 文档

然后在笔记本上执行:

bash
tailscale ping 100.101.102.103

返回 pong 表示 Tailscale 连接测试成功。输出还会显示经过 DERP 还是直连地址。此测试确认的是 Tailscale 连接,SSH 或 HTTP 能否使用还要继续验证实际服务。路径检查说明

访问 SSH 或 Web 服务

假设 Linux 服务器上已经运行普通 SSH 服务,且存在 ubuntu 用户:

bash
ssh ubuntu@100.101.102.103

把 ubuntu 替换成实际账号,继续使用原来的 SSH 密钥或其他认证方式。这是通过 Tailscale 网络连接现有 SSH 服务;Tailscale SSH是另一个需要额外启用并配置策略的功能。

如果已有 Web 服务在服务器的 Tailscale 地址或合适的网络接口上监听 8000 端口,可以在笔记本浏览器中打开:

text
http://100.101.102.103:8000

当服务只监听 127.0.0.1 时,远端设备不能直接通过 Tailscale IP 访问它。应让服务监听适当的接口,或另行配置代理;调整监听范围后也要核对主机防火墙和应用认证。

用 MagicDNS 代替记 IP

启用 MagicDNS 后,设备可以通过名称相互访问。例如把服务器命名为 home-server,就可以使用:

bash
tailscale ping home-server
ssh ubuntu@home-server

可以在管理控制台的 DNS 页面确认 MagicDNS 状态。它负责名称解析,不会改变应用端口、访问策略或认证方式。MagicDNS

设备互联 subnet router 与 exit node 怎样选

目标使用方式例子
访问已经安装 Tailscale 的设备直接使用设备的 Tailscale IP 或 MagicDNS 名称连接开发机的 SSH
访问没有安装 Tailscale 的内网设备配置 subnet router,发布指定子网的路由访问家里 192.168.50.20 上的 NAS
让互联网访问从指定设备所在网络出去配置并选用 exit node出差时通过家中的网络出口上网

By default, Tailscale does not route your public internet traffic through another device. An exit node must be configured and selected for that purpose. 因此,只为访问家中服务器而安装 Tailscale,不需要顺带设置 exit node。Exit nodes

用 subnet router 访问没装客户端的设备

假设 NAS 的地址是 192.168.50.20,它不能安装 Tailscale;同一局域网中有一台能访问 NAS 的 Linux 小主机,可以把这台主机配置成 subnet router。远端笔记本由此获得访问 192.168.50.0/24 的路径。Subnet routers

在已加入 tailnet 的 Linux 小主机上,先启用 IP forwarding。以下适用于使用 /etc/sysctl.d/ 的常见 Linux 发行版;如果已有相关配置,应合并设置:

bash
printf '%s\n' \
  'net.ipv4.ip_forward = 1' \
  'net.ipv6.conf.all.forwarding = 1' \
  | sudo tee /etc/sysctl.d/99-tailscale-forwarding.conf

sudo sysctl -p /etc/sysctl.d/99-tailscale-forwarding.conf
sudo tailscale set --advertise-routes=192.168.50.0/24

把网段换成实际需要访问的子网。接着在 Machines 页面为该设备批准发布的 subnet routes;已有 autoApprovers 授权时可以自动批准。发布路由、批准路由和授权访问是不同环节:访问策略还必须允许发起方连接目标子网及服务端口。

在远端 Linux 客户端上,显式接受路由:

bash
sudo tailscale set --accept-routes

Windows、macOS、iOS 和 Android 的常见客户端默认接受 subnet routes,仍应检查实际客户端配置。完成后,从远端访问 NAS 原来的局域网地址,例如 http://192.168.50.20:5000,其中协议与端口应以实际服务为准。配置与客户端路由说明

subnet router 需要持续在线,并能访问目标设备。WireGuard 加密覆盖到 subnet router 的连接;从它到 NAS 的这段网络是否加密,取决于 HTTPS、SSH 等应用协议。远端所在局域网与家中子网使用相同地址段时,还可能发生路由冲突,不能只凭“已经批准路由”判断整个路径可用。

用 exit node 指定上网出口

exit node 转发选用它的设备的互联网流量。选择之前,先确认这台设备有稳定的网络、足够的带宽,并且你信任它的运营者。

在准备作为 exit node 的 Linux 设备上,先按上一节启用 IP forwarding,再执行:

bash
sudo tailscale set --advertise-exit-node

管理员在 Machines 页面允许该设备作为 exit node 后,客户端才可以选用它;配置了相应 autoApprovers 时可自动批准。图形客户端可以在 Exit Nodes 中选择设备,Linux 客户端可以使用:

bash
sudo tailscale set --exit-node=home-server

这里的 home-server 应替换成实际 exit node 的名称或 Tailscale IP。如果还需要访问客户端当前所在的局域网,显式允许 LAN access:

bash
sudo tailscale set --exit-node-allow-lan-access=true

停止使用该出口:

bash
sudo tailscale set --exit-node=

如果 tailnet 已改成限制较严的访问策略,还要授权相应用户访问 autogroup:internet;仅允许访问 exit node 本身不等于允许通过它上网。exit node 到互联网目标之间仍应使用 HTTPS 等协议。它改变的是流量出口,不提供匿名保证,也不保证网络访问速度。Exit nodes · CLI 配置选项

哪些场景适合使用

场景可以怎样使用需要考虑的条件
远程开发从笔记本 SSH 到开发机,访问远程 IDE 或测试服务目标服务已运行,账号和策略允许连接
NAS 与家庭自托管访问文件服务、相册、家庭管理面板优先在目标设备装客户端,无法安装时再用 subnet router
小团队运维按成员身份、设备标签和服务端口分配权限每人独立账号,及时撤销离职成员和丢失设备的访问
跨地点或多云设备连接用 Tailscale 地址连接服务器;按需要接入私有子网关注路由范围、带宽和网段冲突
固定互联网出口让指定客户端通过家中或办公室的 exit node 上网出口设备持续在线,上传带宽与延迟能满足需求

Tailscale 尤其适合“这些设备分散在不同网络,但只需要一部分受信任的人访问”的需求。对于面向所有访客的公开网站,通常仍需要公开的 HTTPS 入口;让访客加入 tailnet 会改变产品的访问方式。

如果需求依赖局域网广播发现,也应先核对协议和发现机制,不能把按 IP 可达等同于完整复制原来的局域网体验。对时延、吞吐或网络隔离有严格要求时,应该在实际网络中测量和核验。

连不上时怎样排查

按“设备在线 → Tailscale 路径 → 名称解析 → 应用端口 → 访问策略”的顺序检查,通常比反复重装客户端更容易缩小范围。

现象优先检查
管理页看不到目标设备或显示离线是否登录同一 tailnet、设备是否在线、认证或密钥是否到期、是否等待审批
tailscale ping 一直不通当前网络是否允许 Tailscale 工作;使用 tailscale status 和 tailscale netcheck 查看状态
IP 可以访问,名称不行MagicDNS、客户端 DNS 设置和设备名称
tailscale ping 成功,SSH 或 Web 不通服务是否启动、是否仅监听回环地址、实际端口、主机防火墙和 tailnet 访问策略
subnet router 在线,但 NAS 不通IP forwarding、路由批准、客户端接受路由、目标子网授权、NAS 服务及网段冲突
连接成功但速度慢tailscale ping 显示的路径、两端网络质量及出口设备上传带宽
选了 exit node 后上不了网出口设备联网与转发设置、管理员批准、autogroup:internet 授权及 DNS

tailscale netcheck 用来检查网络条件,不能代替对具体应用的验证。最终通过标准应是实际 SSH 登录成功、Web 页面能打开,或目标应用完成一次操作,而不只是管理页上出现设备。CLI 诊断命令

把连接权限限制到实际需要

设备加入 tailnet 后,还应检查当前访问策略。不要从“采用 zero trust 理念”推断所有新设备都会自动彼此隔离。Tailscale 支持通过 grants 和 ACLs 表达访问控制,当前官方推荐新配置使用 grants;授权范围应按成员、设备和资源的实际用途确定。Access control

个人使用可以先连通两台自己的设备,再收紧权限;团队则应在添加成员和服务时明确谁能访问哪个目标及端口。保留应用认证,及时更新系统,并在设备丢失或成员退出时撤销访问。这些措施与传输加密解决的是不同问题。

参考资料与关联阅读

博客助手

正在打开博客助手…