Tailscale 是一个基于 WireGuard 的组网工具。
它可以把分布在不同网络中的电脑、服务器、手机和 NAS 连接起来,让这些设备像在同一个局域网中一样通信。
例如:
家里的 Windows 电脑
│
│ Tailscale 加密网络
│
云服务器上的 Linux
Windows 可能连接的是家庭宽带,Linux 服务器可能部署在 AWS、阿里云、腾讯云或者其他机房。
它们不在同一个物理网络里,但安装 Tailscale 后,会各自获得一个虚拟 IP 地址。两台设备可以直接使用这个地址通信。
Tailscale 的方便之处在于,大多数情况下不需要:
自己搭建 VPN 服务器;
配置端口转发;
购买固定公网 IP;
手动生成和分发 WireGuard 密钥;
修改家里的路由器配置。
只要两台设备可以正常访问互联网,就可以尝试建立连接。
Tailscale 安装到设备后,会创建一个虚拟网卡,并为设备分配一个专用地址,通常是下面这种格式:
100.x.x.x
当 Windows 访问 Linux 时,Tailscale 会优先尝试建立点对点连接。
也就是说,数据尽量直接在 Windows 和 Linux 之间传输,而不是全部经过一台中心 VPN 服务器。
如果两边的网络限制比较严格,无法直接连接,Tailscale 会自动使用中继服务器转发流量。经过中继时,通信内容仍然是加密的。
对普通用户来说,不需要手动判断应该直连还是中继,Tailscale 会自动处理。
假设现在有两台设备:
系统:Windows 11
位置:家里
设备名称:my-windows
系统:Ubuntu Linux
位置:云服务器
设备名称:ubuntu-server
我们的目标是:
在 Windows 和 Linux 上安装 Tailscale;
使用同一个账号登录;
让两台设备加入同一个虚拟网络;
在 Windows 上通过 Tailscale 地址连接 Linux;
测试成功后,关闭 Linux 对公网开放的 SSH 端口。
下面以 Ubuntu 和 Debian 系统为例。
先通过云服务器控制台或者原来的 SSH 方式登录 Linux,然后执行:
curl -fsSL https://tailscale.com/install.sh | sh
安装完成后,启动 Tailscale:
sudo tailscale up
终端会显示一个登录地址:
To authenticate, visit:
https://login.tailscale.com/a/xxxxxxxx
复制这个地址,在浏览器中打开,然后选择一个账号登录。
可以使用 Google、Microsoft、GitHub、Apple 或其他支持的身份账号。
登录成功后,Linux 服务器就加入了 Tailscale 网络。
查看当前连接状态:
tailscale status

查看服务器的 Tailscale IPv4 地址:
tailscale ip -4
假设返回:
100.86.20.15
这个地址就是 Linux 服务器在 Tailscale 网络中的地址。
它和服务器公网 IP 不一样,只能由同一个 Tailscale 网络中的授权设备访问。
如果服务器原本就能通过 SSH 登录,一般不需要额外安装。
可以执行下面的命令检查:
sudo systemctl status ssh
如果提示找不到服务,可以安装 OpenSSH Server:
sudo apt update
sudo apt install -y openssh-server
安装后启动 SSH:
sudo systemctl enable --now ssh
再次检查:
sudo systemctl status ssh
看到下面的状态,说明 SSH 正常运行:
Active: active (running)
如果 Linux 开启了 UFW 防火墙,可以添加一条规则,只允许通过 Tailscale 虚拟网卡访问 22 端口:
sudo ufw allow in on tailscale0 to any port 22 proto tcp
查看规则:
sudo ufw status
这里的 tailscale0 是 Tailscale 创建的虚拟网卡。
这条规则和直接执行下面的命令不一样:
sudo ufw allow 22
直接开放 22 端口,可能会允许公网访问。限制到 tailscale0 后,只有通过 Tailscale 网络进入的连接才能访问 SSH。
不过先不要急着关闭公网 SSH,等 Windows 连接测试成功后再处理。
进入 Tailscale 下载页面,下载 Windows 安装程序。

运行安装程序后,Windows 任务栏右下角会出现 Tailscale 图标。
如果没有看到,可以点击任务栏中的向上箭头,在隐藏图标里查找。

右键点击 Tailscale 图标,选择:
Log in
浏览器会打开登录页面。
这里需要使用刚才 Linux 登录时使用的同一个账号。
登录完成后,Windows 也会加入同一个 Tailscale 网络。
这时可以打开 Tailscale 管理后台,在设备列表中看到两台设备:
my-windows Windows
ubuntu-server Linux
每台设备都会有自己的 Tailscale IP。

在 Windows 中打开 PowerShell。
先测试 Linux 服务器的 Tailscale IP:
ping 100.86.20.15
有些系统或防火墙可能会拦截普通 Ping,因此普通 Ping 失败不一定代表网络无法使用。
还可以使用 Tailscale 自带的测试命令:
tailscale ping 100.86.20.15
如果连接正常,会看到类似结果:
pong from ubuntu-server
也可以查看当前网络中的设备:
tailscale status
输出中应该能看到 Linux 服务器及其地址。
假设 Linux 用户名是:
ubuntu
在 Windows PowerShell 中执行:
ssh ubuntu@100.86.20.15
第一次连接时,可能会出现提示:
Are you sure you want to continue connecting?
输入:
yes
然后输入 Linux 用户密码,或者使用已经配置好的 SSH 私钥。
登录成功后,会进入 Linux 终端:
ubuntu@ubuntu-server:~$
到这里,Windows 和 Linux 的基本组网就完成了。
即使两台设备使用不同运营商、位于不同城市,也可以通过 Tailscale 地址直接连接。
每次输入 100.x.x.x 地址还是有点麻烦。
Tailscale 提供了 MagicDNS 功能,可以直接使用设备名称访问服务器。
假设 Linux 服务器的设备名称是:
ubuntu-server
那么可以在 Windows 中直接执行:
ssh ubuntu@ubuntu-server
也可以测试:
ping ubuntu-server
或者:
tailscale ping ubuntu-server
如果设备名称无法解析,可以登录 Tailscale 管理后台,检查 DNS 页面中的 MagicDNS 是否已经启用。
设备名称也可以在管理后台修改。相比记住一串 IP,给服务器设置一个容易识别的名称会方便很多,例如:
home-server
web-server
docker-server
nas
Tailscale 不只能用来连接 SSH,也可以访问 Linux 上运行的网站、面板和开发服务。
我们可以临时启动一个简单的 HTTP 服务进行测试。
在 Linux 中创建一个目录:
mkdir -p ~/tailscale-test
cd ~/tailscale-test
创建一个简单网页:
echo 'Hello from Linux Server
' > index.html
启动 Python HTTP 服务:
python3 -m http.server 8080
然后在 Windows 浏览器中访问:
http://100.86.20.15:8080
如果 MagicDNS 可用,也可以直接访问:
http://ubuntu-server:8080
看到 Hello from Linux Server,说明 Windows 已经可以访问 Linux 上运行的 Web 服务。
实际使用中,这种方式可以访问很多服务,例如:
Docker 管理面板;
宝塔面板;
数据库管理工具;
Jellyfin;
Home Assistant;
自己开发的后台系统;
只供内部使用的 API;
NAS 管理页面。
这些服务不一定需要开放到公网,只要通过 Tailscale 访问即可。
当下面几项都测试正常后,可以考虑关闭云服务器安全组中的公网 22 端口:
Windows 和 Linux 都显示在线;
Windows 可以连接 Linux 的 Tailscale IP;
使用 SSH 登录没有问题;
Linux 重启后 Tailscale 可以自动上线;
云服务商提供网页终端或救援控制台。
云服务器安全组中经常会有类似规则:
协议:TCP
端口:22
来源:0.0.0.0/0
其中 0.0.0.0/0 表示允许所有公网 IP 尝试访问服务器的 22 端口。
确认 Tailscale 连接没有问题后,可以删除这条规则,或者至少把来源限制到自己的固定 IP。
关闭公网端口后,仍然可以通过 Tailscale 登录:
ssh ubuntu@ubuntu-server
这样可以减少服务器被扫描和暴力破解的情况。
需要注意的是,在关闭公网 SSH 之前,一定要保留备用登录方式。万一 Tailscale 配置出错,还可以通过云厂商提供的网页终端进入服务器修复。
在 Windows PowerShell 中执行:
tailscale ping ubuntu-server
结果中可能会显示连接类型。
如果看到类似:
via 192.168.x.x:41641
通常表示两台设备已经建立直接连接。
如果看到:
via DERP
说明当前连接经过了 Tailscale 中继服务器。
经过中继也可以正常使用,只是速度和延迟可能不如直连。
一般的 SSH、服务器管理和后台访问,即使走中继也不会有太大影响。如果需要传输大量文件,中继速度可能会比较明显。
Tailscale 在正常安装后会作为系统服务运行。
可以在 Linux 中检查:
sudo systemctl status tailscaled
如果服务没有启动,可以执行:
sudo systemctl enable --now tailscaled
然后查看状态:
tailscale status
如果设备认证已经过期,可能需要重新登录:
sudo tailscale up --force-reauth
对于长期运行的服务器,还可以在 Tailscale 管理后台中查看设备密钥的有效期。
是否关闭设备密钥过期,需要根据实际安全需求决定。家用服务器可以考虑,重要的生产服务器则要更加谨慎。
先在 Linux 中检查 SSH 服务:
sudo systemctl status ssh
检查 22 端口是否正在监听:
sudo ss -lntp | grep ':22'
再检查 UFW:
sudo ufw status
如果没有允许 Tailscale 网卡访问 SSH,可以添加:
sudo ufw allow in on tailscale0 to any port 22 proto tcp
还可以在 Windows 中测试 22 端口:
Test-NetConnection 100.86.20.15 -Port 22
如果看到:
TcpTestSucceeded : True
说明 Windows 可以连接到 Linux 的 22 端口。
如果端口可以连接,但 SSH 登录失败,就要检查 Linux 用户名、密码、密钥以及 /etc/ssh/sshd_config 配置。
Windows 连接 Linux 服务器只是 Tailscale 最基础的用法。
它还适合下面这些场景:
即使家里没有公网 IP,也可以从外面访问 NAS。
把不同云平台上的服务器放进同一个私有网络,不需要让管理端口全部暴露在公网。
Portainer、数据库、监控面板等服务可以只对 Tailscale 网络开放。
家里的电脑、办公室服务器和出差时使用的笔记本,可以加入同一个网络。
通过子网路由功能,还可以访问无法安装 Tailscale 的打印机、摄像头和其他局域网设备。
Tailscale 最吸引人的地方不是功能有多复杂,而是它把原本很麻烦的组网过程简化了。
以前想从 Windows 安全访问一台远程 Linux 服务器,可能要考虑:
公网 IP;
动态域名;
路由器端口映射;
VPN 服务器;
防火墙规则;
WireGuard 密钥配置。
使用 Tailscale 后,基本流程只剩下:
在 Linux 上安装并登录;
在 Windows 上安装并登录;
使用 Tailscale IP 或设备名称连接。
最终只需要一条命令:
ssh ubuntu@ubuntu-server
对于个人服务器、家庭实验室和小团队来说,这种方式足够简单,也比长期把 SSH、数据库和管理面板暴露在公网更稳妥。