为什么要使用TailScale
最近我买了一台小型主机到家里做linux服务器使用,部署我的一些自用应用。但是我的服务器只在局域网可以访问,在其他地方不能访问。所以我需要选择一种方案来让我可以访问到这台主机。
远程方案选择
想要在公司或外面随时访问家里的这台小主机,本质上需要解决一个核心问题:在没有固定公网 IP 的家庭网络环境下,实现安全、稳定的内网穿透与跨网互联。
| 方案类别 | 代表工具/方式 | 核心原理 | 资金成本 | 配置难度 | 传输速度 | 安全性 | 典型痛点/缺点 |
|---|---|---|---|---|---|---|---|
| 公网 IP + DDNS | 运营商宽带 + 路由器端口映射 | 宽带公网 IP 绑定动态域名,路由器映射服务端口 | 免费 | 中等 | 极快(取决于家庭宽带上行) | 极低(端口直面公网扫描与爆破) | 1. 公网 IPv4 极难申请,纯 IPv6 兼容性差; 2. 暴露端口风险极高,易被黑客扫描。 |
| 传统反向代理 | FRP、NPS、Ngrok | 租赁公网 VPS 搭建服务端,内网机器主动建立隧道 | 收费(需按月租用云服务器) | 较高 | 受限(受便宜 VPS 的 1~5Mbps 小带宽瓶颈限制) | 中等 | 1. 需持续付费租用 VPS; 2. 传输大文件或跑监控时带宽极慢; 3. 需自行维护服务器与证书。 |
| 云厂商隧道 | Cloudflare Tunnel | 安装 cloudflared,通过 Cloudflare 边缘节点代理入站 | 免费 | 中等 | 一般(国内访问延迟较高) | 较高 | 1. 跨境网络波动大,国内访问偶有断连或高延迟; 2. 偏向 Web/HTTP 服务,原生 SSH/TCP 体验较繁琐。 |
| Mesh VPN (虚拟局域网) | Tailscale、ZeroTier | 基于现代加密协议,多设备组成私有专属虚拟局域网 | 个人免费 | 极低(开箱即用) | 快(绝大部分直连打洞,走 P2P 带宽) | 极高(端口完全不对公网开放,端到端高强度加密) | 极少数严格 NAT 网络下打洞失败需依赖中继(可自建 DERP 优化)。 |
为什么最终选择了 Tailscale?
最终决定采用 Tailscale,主要基于以下几点核心原因:
1. 真正的“零配置”体验,开箱即用
只需使用同一账号登录(支持 GitHub、Google、Microsoft 等第三方认证),所有设备就会自动加入属于自己的私有网络(Tailnet),并分配固定的虚拟 IP,整个过程无需复杂配置。
2. NAT 穿透能力出色,支持点对点(P2P)直连
-
不消耗第三方服务器带宽:Tailscale 具备业内顶尖的 NAT 打洞穿透能力。在绝大多数网络环境下,外部设备与家里的小主机可以直接建立 P2P 点对点直连,流量不经第三方服务器中转。
-
跑满家庭上行带宽:无论是远程拉取代码、传输文件,还是查看大流量服务,速度体验都远非几兆带宽的便宜 VPS 可比。
3. 安全性高:无需暴露任何端口到公网
-
小主机不需要在路由器上做任何端口映射,也不需要公网 IP。
-
只有登录了我账号的授权设备才能互联,对公网完全不可见,从根本上隔绝了恶意扫描和端口暴力破解的风险。
-
所有数据流量均采用 WireGuard 的现代密码学体系进行端到端加密。
4. 强大的进阶能力满足后续折腾需求
-
MagicDNS:开启后可以直接用主机名访问(如
ssh my-home-server),无需记忆冗长的 IP 地址。 -
Subnet Router(子网路由):在小主机上配置一条命令作为子网网关后,在外面无需在路由器的其他设备上安装客户端,就能直接访问家庭局域网内的路由器后台、NAS 或智能家居设备。
-
全平台支持:覆盖 Linux、macOS、Windows、iOS、Android 以及 Docker/NAS 环境,移动端与 PC 端无缝切换。
结论:对于个人自建家庭服务器而言,Tailscale 在易用性、安全性与网络性能之间达到了极其出色的平衡,免去了云服务器的租金成本与暴露公网端口的安全风险,是目前搭建个人私有网络极具性价比和实用价值的选择。
TailScale还可以做什么?
它的核心价值是把你在不同地方的所有设备打通成一个专属的、安全的虚拟大局域网。
- 可以把小主机改成nas服务器,使用tailscale可以直接连接手机和nas服务器
- 把小主机改为路由中枢,操控家里内网的设备(打印机、摄像头等)
- 跨设备极速传文件(Taildrop),TailScale自带软件,用于互传大文件。
- 临时把服务分享给朋友,Funnel、Share等自带服务用于临时分享
怎么使用?
整个配置过程分为四步:注册账号、Linux 小主机安装、常用客户端连接
第一步:注册 Tailscale 账号
-
打开 Tailscale 官网,点击右上角的 Get Started。
-
推荐直接使用 GitHub、Google 或 Microsoft 账号一键授权登录(免去记密码的麻烦)。
-
登录后会自动进入控制台(Admin Console),你的专属私有虚拟网(Tailnet)就已经创建好了。
第二步:在 Linux 小主机上安装与登录
登录家里的小主机(通过本地 SSH 或屏幕直连),按以下步骤执行:
1. 一键脚本安装 Tailscale
Tailscale 官方提供了极简的跨发行版自动化安装脚本,适用于 Ubuntu、Debian、CentOS 等主流系统:
curl -fsSL https://tailscale.com/install.sh | sh
2. 启动并完成设备认证
sudo tailscale up
# 终端会打印出一个专属的认证链接,类似:
To authenticate, visit:
https://login.tailscale.com/a/xxxxxx
3. 完成绑定
- 复制该链接到浏览器中打开;
- 登录同一个账号,点击 Connect 授权;
- 授权成功后,终端会提示
Success.,表示小主机已正式加入你的虚拟网络。 - 可以在终端输入
tailscale ip -4查看小主机分配到的 100.x.x.x 私有静态 IP。
第三步:在其他常用设备上连接测试
为了能在外面远程访问这台小主机,我们需要在随身携带的设备上也装上客户端:
电脑端(Mac / Windows)
- 访问 Tailscale 官网下载对应系统的安装包(或 Mac App Store 下载);
- 打开客户端,点击登录,使用同一个账号授权;
- 连上后,打开电脑终端直接测试远程连接(将 IP 替换为你小主机的 Tailscale IP)
服务器无法回传/接收认证状态,Auth Key 解决
小主机有时候访问服务器会超时卡顿,可以使用Auth Key(密钥)直接静默登录:
- 打开浏览器进入 Tailscale Keys 管理页面。
- 点击 Generate auth key... (生成授权密钥)。
- 选项保持默认即可(建议勾选 Reusable 可重复使用,方便以后用),点击 Generate key。
- 复制生成的密钥(类似
tskey-auth-kXXXXX-XXXXXX)。 - 回到 Debian 服务器终端,执行以下命令(替换为你复制的 key):
sudo tailscale up --auth-key=tskey-auth-xxxxxx --reset
执行完后,服务器会直接认证成功并上线,不再需要点任何链接!
常用命令
| 功能分类 | 操作说明 | 命令示例 | 备注 |
|---|---|---|---|
| 状态查询 | 查看当前节点与所有设备在线状态 | tailscale status | 列出 Tailnet 内所有机器的 IP 与系统 |
| 状态查询 | 查看本机的 Tailscale IPv4 地址 | tailscale ip -4 | 输出一个 100.x.x.x 的私有固定 IP |
| 网络测试 | 测试与其他节点的延迟与连接方式 | tailscale ping <目标机器名或IP> | 会显示是 direct(P2P直连)还是 relay/DERP(中继) |
| 网络测试 | 检查当前设备的网络与打洞能力 | tailscale netcheck | 查看 NAT 类型、映射端口及 DERP 延迟情况 |
| 服务控制 | 启动并连接 Tailnet | sudo tailscale up | 首次运行会生成网页认证登录链接 |
| 服务控制 | 断开 Tailscale 连接 | sudo tailscale down | 临时脱离虚拟网,不影响本机其他上网 |
| 高级路由 | 通告局域网网段(开启子网路由) | sudo tailscale up --advertise-routes=192.168.1.0/24 | 需先在系统开启 IPv4 转发,并在网页端审批通过 |
| 高级路由 | 将当前设备声明为出口节点(Exit Node) | sudo tailscale up --advertise-exit-node | 允许外部设备借用该主机的网络流量作为出口上网 |
| 高级路由 | 允许本机使用其他节点通告的子网/路由 | sudo tailscale up --accept-routes | Linux 端若想访问其他机器分享的局域网需带上此参数 |
| 文件传输 | 跨设备极速发送文件(Taildrop) | tailscale file cp <文件名> <目标机器名>: | 类似跨系统的 AirDrop,无需第三方工具 |
| 文件传输 | 接收并保存其他设备发来的文件 | tailscale file get <保存目录> | 拉取其他机器通过 Taildrop 推送过来的文件 |
| 账号权限 | 登出当前绑定的账号 | tailscale logout | 清除本机授权信息,重新绑定时需再次登录 |
| 版本更新 | 检查并升级 Tailscale 客户端 | sudo tailscale update | 自动检查官方新版本并完成在线升级 |