不在同一个WiFi,也能像在局域网
用 Tailscale 把 Windows、Mac、Linux、NAS 和手机组成一个加密私有网络,远程访问服务无需折腾公网 IP 和端口映射。

家里的 NAS 在宽带后面,公司电脑在另一张网,云服务器散落在不同机房,手机又常年使用移动网络。这些设备物理上离得很远,但装上 Tailscale 后,可以像接在同一台路由器上一样互相访问。
不需要固定公网 IP,也不用在路由器上开一排端口。 Windows 、 macOS 、 Linux 、 iOS 、 Android 和常见 NAS 平台都能加入同一个私有网络。
这套方案特别适合家庭 NAS 、异地办公、个人服务器和 Homelab 。它解决的是“设备之间如何安全连通”,不会自动替你部署服务,也不能让未运行服务的端口凭空出现。
Tailscale 是什么
Tailscale 基于 WireGuard 构建。每台设备安装客户端并登录同一个账号后,会加入一个叫 tailnet 的私有网络,获得独立的 Tailscale IP 和设备名。
设备会优先尝试点对点直连,流量端到端加密。受 NAT 或防火墙限制无法直连时,可以经过 Tailscale 的 DERP 中继转发,中继看不到明文内容。 MagicDNS 默认开启后,可以直接用设备名访问,不必背 100.x.x.x 地址。
它和传统 VPN 的使用感受不太一样。传统方案常要自己准备服务器、证书、端口和路由;Tailscale 把身份登录、设备发现、密钥轮换、 NAT 穿透和访问策略放到一套管理界面里。个人计划目前允许 6 个免费用户,具体功能与额度以官方价格页为准。

它解决哪些问题
1. 在外面访问家里的 NAS
手机连着 5G,笔记本在酒店 WiFi,也可以通过 Tailscale IP 或 MagicDNS 名称访问 NAS 的管理页面、 SMB 、 SSH 、照片服务和自建应用。家里宽带没有公网 IPv4,也不影响基本使用。
2. 管理云服务器,不再公开 SSH 端口
服务器加入 tailnet 后,可以让 SSH 、数据库或管理面板只监听内网接口,通过 Tailscale 访问。公网暴露面更小,也省去到处同步 SSH 公钥的麻烦。
3. 跨平台组一张私人局域网
Windows 台式机、 MacBook 、 Linux 主机、 iPhone 、 Android 手机、树莓派和 NAS 可以直接互访。设备所在国家、运营商和路由器都可以不同。
4. 访问不能安装客户端的设备
打印机、摄像头、路由器后台和部分 IoT 设备无法安装 Tailscale 。这时可以在家里放一台 Linux 主机做 Subnet Router,把 192.168.1.0/24 之类的真实局域网网段发布到 tailnet 。
5. 让远程设备从指定地点上网
把家里或云端的一台设备设为 Exit Node,出差时可以让手机或电脑的互联网流量从那台设备出去。 Exit Node 和 Subnet Router 用途不同:前者转发互联网流量,后者负责访问某个内网网段。
详细教程:先把两台设备连起来
第一步:注册 tailnet
打开:
https://login.tailscale.com/start
使用支持的身份提供商登录。官方快速入门说明里提到,公共邮箱注册通常进入 Personal 计划。管理后台地址是:
https://login.tailscale.com/admin
第二步:安装第一台设备
Windows 、 macOS 、 iOS 、 Android 可以从官方下载页或对应应用商店安装:
https://tailscale.com/download
Linux 可以执行:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
命令会给出登录链接。用刚才的同一账号确认后,这台机器就会出现在 Admin Console 的 Machines 页面。
查看状态:
tailscale status
查看本机 Tailscale IPv4:
tailscale ip -4
第三步:安装第二台设备
在另一台电脑或手机上安装 Tailscale,并登录同一个 tailnet 。两台设备都在线后,可以先测试:
tailscale ping 设备名
也可以测试 Tailscale IP:
tailscale ping 100.x.x.x
普通系统 ping 不通时,不代表业务端口一定不通。系统防火墙可能屏蔽 ICMP 。更可靠的验证方式是直接访问你需要的服务,例如:
ssh 用户名@设备名
curl http://设备名:8080
Windows 远程桌面可以填写 Tailscale IP;NAS 网页可打开:
https://nas设备名:管理端口
第四步:打开 MagicDNS
Admin Console 中进入 DNS 页面,确认 MagicDNS 已开启。之后设备之间可用名称通信:
ssh admin@home-server
比记 IP 方便,也能避免设备地址变化后逐个修改脚本。
Linux 服务器启用 Tailscale SSH
服务端执行:
sudo tailscale up --ssh
客户端仍使用普通 SSH 命令:
ssh root@服务器设备名
Tailscale SSH 会用 tailnet 身份和节点密钥完成认证,可以减少 SSH Key 的分发工作。它只接管来自 Tailscale 网络、指向该设备 Tailscale IP 的 22 端口,不会修改 /etc/ssh/sshd_config 和 ~/.ssh/authorized_keys,原有 SSH 方式仍可保留。
启用 --ssh 只是打开服务入口。谁能登录、能登录哪台机器、能用哪个系统账号,还要在 Access Controls 中配置 SSH Policy 。
给不能安装客户端的设备开一扇门
假设家里局域网是 192.168.1.0/24,选择一台一直在线的 Linux 设备做 Subnet Router 。
开启 IP 转发:
sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1
发布路由:
sudo tailscale up --advertise-routes=192.168.1.0/24
然后到 Admin Console 的 Machines 页面批准这条 Subnet Route 。 Linux 客户端默认可能不会接受其他节点发布的路由,可执行:
sudo tailscale set --accept-routes=true
配置完成后,外面的电脑就能访问家中的打印机、摄像头或路由器后台。更稳妥的做法是再写访问策略,只开放需要的设备和端口,不把整个网段交给所有成员。
Exit Node:把家里变成自己的出口
在准备充当出口的 Linux 设备上开启 IP 转发,然后执行:
sudo tailscale up --advertise-exit-node
到管理后台批准 Exit Node 。客户端选择它:
tailscale set --exit-node=出口设备名
关闭:
tailscale set --exit-node=
使用 Exit Node 后,客户端的互联网流量会经过出口设备。速度受两端带宽、线路和是否直连影响。它不提供匿名性,出口网络、目标网站及设备本身仍可能留下访问记录。
接入公网服务器后,别停在 allow-all
把所有设备接入同一张 tailnet 很方便,也带来横向移动风险。某台公网服务器被攻破后,如果策略允许它访问所有设备,攻击者可能继续探测个人电脑、 NAS 和其他服务器。
比较实用的隔离思路是:
- 个人管理设备可以访问公网服务器。
- 公网服务器不能主动连接个人设备。
- 公网服务器之间默认不能横向访问。
- 只为确有需要的端口增加例外。

Tailscale 当前建议新策略优先使用 Grants 。下面是一个简化示例,展示 personal 与 public-server 两组设备的单向访问关系。标签更适合服务器、网关这类非人设备;个人笔记本也可以继续保留用户身份,并把规则里的来源改成你的登录邮箱或用户组。
{
"tagOwners": {
"tag:personal": ["autogroup:admin"],
"tag:public-server": ["autogroup:admin"]
},
"grants": [
{
"src": ["tag:personal"],
"dst": ["tag:personal"],
"ip": ["*"]
},
{
"src": ["tag:personal"],
"dst": ["tag:public-server"],
"ip": ["tcp:22", "tcp:80", "tcp:443"]
}
],
"ssh": [
{
"action": "check",
"src": ["tag:personal"],
"dst": ["tag:personal", "tag:public-server"],
"users": ["autogroup:nonroot", "root"],
"checkPeriod": "12h"
}
]
}
这里故意没有写 public-server → personal,也没有写 public-server → public-server。 Grants 采用默认拒绝模式,缺少允许规则的方向就无法建立新连接。

配置时有一个很容易踩的坑:网络 Grants 和 Tailscale SSH 是两层权限。
Grants 决定 TCP/UDP 流量能不能到达目标;ssh 段决定 Tailscale SSH 是否允许当前身份登录。网络连通后 SSH 仍被拒绝,通常要同时检查这两层。修改策略前先备份,在编辑器里运行验证,并从两个方向做真实连接测试。
策略文件会影响整个 tailnet 。上面的端口和账号只是示例,复制前应按自己的服务调整。生产服务器还要保留系统防火墙、及时更新和最小权限账号,Tailscale 不能替代主机安全。
常用排查命令
查看设备列表和连接状态:
tailscale status
测试到某设备的 Tailscale 路径:
tailscale ping 设备名
查看当前设备诊断信息:
tailscale netcheck
确认目标端口:
nc -vz 设备名 22
nc -vz 设备名 443
遇到“设备在线但访问不了”,按这个顺序排查:目标服务是否启动、是否监听正确网卡、系统防火墙是否放行、 Grants 是否允许、 Tailscale SSH Policy 是否允许。
使用边界
Tailscale 能解决设备之间的安全连通、身份认证和访问控制,不能修复服务本身的漏洞。数据库使用弱密码、 NAS 长期不更新、服务器运行高权限程序,这些风险仍然存在。
它也无法保证所有网络都能点对点直连。严苛 NAT 、校园网、酒店网络或企业防火墙可能迫使流量走 DERP 中继,延迟和吞吐会受到影响。
多人使用时,不要共享一个登录账号。应邀请独立用户,再按用户、组和设备标签分配权限。临时服务器和自动化程序可以使用受限、可撤销的 Auth Key 或 OAuth Client,避免长期保存管理员凭据。
对个人用户来说,Tailscale 最实用的起点很简单:先连接一台电脑和一部手机,再加入 NAS 或云服务器。确认基本访问稳定后,再增加 Subnet Router 、 Exit Node 和细粒度策略。这样既能快速用起来,也不会一开始就把整张网络配置得过于复杂。