0
0
0

Tailscale 部署与实战技术文档

2026-10-30
2026-10-30
Tailscale 部署与实战技术文档
文章摘要
|

文档目的:记录我的笔记本电脑接入 Tailscale 完整实操,实现多设备虚拟局域网组网;包含连接验证、WinSCP/SFTP 访问、子网网关、出口节点、游戏 / 服务跨网互通。 环境说明:

  • 节点 A:Ubuntu 系统

  • 其他节点:Windows / 其他 Linux 设备,全部登录同一个 Tailscale 账号

  • 网络特性:优先 P2P 直连,无法直连时自动走 DERP 中继;每个设备分配100.x.x.x虚拟内网 IP,设备之间如同处于同一个局域网。

一、Tailscale 核心概念

  1. Tailnet 虚拟网络:同一个账号下所有设备组成虚拟局域网,每台设备获得固定的 100.x.x.x 内网 IP。

  2. P2P 直连:优先打洞实现设备之间点对点通信,不走中转服务器,带宽为双方物理带宽上限,延迟低,适合传文件、SSH、游戏联机。打洞失败自动降级 DERP 中继。

  3. MagicDNS:可以直接使用设备主机名访问,不用记忆 100 段 IP。

  4. 子网路由 (Subnet router):允许 Tailnet 内全部设备访问该主机所在物理局域网的其他设备(NAS、打印机、无 Tailscale 的设备)。

  5. Exit Node 出口节点:其他 Tailscale 设备可以把网络流量通过这台机器的互联网出口上网。

管理后台地址:https://login.tailscale.com/admin/machines 后台可以管理设备、审批子网路由、查看每个节点连接模式(direct = 直连 / DERP = 中继)。

二、Ubuntu安装与基础部署

2.1 安装后初始化绑定账号

安装

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

安装包完成之后执行,会输出网页登录链接

sudo tailscale up
  1. 复制终端输出的 URL,浏览器打开,登录你的 Tailscale 账号。

  2. 如果账号开启设备审批策略,进入管理后台,批准该设备加入网络。

2.2 查看本机 Tailscale 虚拟 IP

tailscale ip -4

示例输出:100.xxx.xxx.xxx,这就是该设备在虚拟局域网的内网地址。

2.3 查看整个 Tailnet 网络状态

tailscale status

输出解读:

  • direct:P2P 直连(最优,速度快延迟低)

  • DERP-xxx:打洞失败,使用中继服务器转发

此命令可以看到所有在线设备、对方 IP、连接模式。

2.4 测试节点连通性(Tailscale 自带 ping,可判断是直连还是中继)

# 格式 tailscale ping 对方设备的100.x.x.x地址
tailscale ping 100.x.x.x

普通系统 ping 也可以直接使用:

ping x.x.x.x

2.5 基础启停命令

# 断开虚拟网络
sudo tailscale down
# 重新连接
sudo tailscale up
# 退出账号,解绑本机设备
sudo tailscale logout
# 网络打洞质量诊断
tailscale netcheck

开机自启说明:安装完成后tailscaled systemd 服务默认开机自启,机器开机自动接入 Tailscale 网络,无需手动执行tailscale up。 查看服务状态:

systemctl status tailscaled

三、远程访问 Ubuntu(Windows 端)实操

场景:Windows 电脑同样安装 Tailscale,登录同一账号;Windows 与 Ubuntu 形成虚拟局域网。

3.1 Ubuntu 开启 OpenSSH 服务(用于 WinSCP、SSH 终端)

⚠️注意:Tailscale 内置 SSH (tailscale set --ssh) 仅支持命令行 ssh,不能被 WinSCP 调用;文件传输请使用系统 openssh‑server。

# 安装openssh服务端
sudo apt install openssh-server
# 设置开机自启并立即启动
sudo systemctl enable --now ssh
# 查看ssh状态
systemctl status ssh
# 防火墙放行ssh(开启ufw防火墙时需要)
sudo ufw allow ssh

3.2 WinSCP 连接 Ubuntu(文件图形化传输)

新建会话参数:

  • 协议:SFTP(推荐),也可选 SCP

  • 主机名:Ubuntu 的 Tailscale IP,例 100.x.x.x

  • 端口:22

  • 用户名:Ubuntu 系统用户名

  • 密码:Ubuntu 本机登录密码

连接成功之后,Windows 和 Ubuntu 之间可以拖拽双向传输文件。

3.3 WinSCP 内执行 SSH 命令两种方式

  1. 内置控制台 Ctrl+T(限制:不支持交互式命令,无法 sudo 输入密码、不能运行top/vim),适合简单一次性命令。

  2. 推荐方案:Commands → Open in PuTTY,一键唤起 PuTTY 终端,复用当前登录信息,完整交互式 SSH 环境,可以执行 sudo、vim 等全部运维命令。

3.4 Windows PowerShell 原生 SSH

Windows10/11 自带 OpenSSH 客户端,PowerShell 直接执行:

ssh 用户名@100.x.x.x

四、高级能力配置(按需开启)

⚠️重要:下面使用tailscale set,配置持久保存,不需要每次 up 带参数。执行完必须登录后台审批对应权限,功能才生效。

4.1 配置子网网关(访问物理局域网其他设备)

需求:把这台 Ubuntu 作为网关,Tailnet 所有设备访问 Ubuntu 物理局域网内 NAS、打印机、其他没有装 Tailscale 的设备。

  1. 先确认本机物理局域网网段:

ip a

例如网段为 192.168.110.0/24

  1. 开启子网广播:

sudo tailscale set --advertise-routes=192.168.110.0/24
  1. 登录 Tailscale 后台 Machines 页面,找到该设备,点击 Review routes,批准这条子网路由。

  2. 其他 Tailscale 设备就可以直接访问 192.168.110.* 的物理内网设备。

4.2 配置出口节点(其他设备流量走本机器网络)

让 Tailnet 其他设备,把互联网流量经过这台 Ubuntu 的网络出去。

sudo tailscale set --advertise-exit-node

需要后台审批;其他设备的 Tailscale 客户端设置中就可以选择该节点作为 Exit Node。

4.3 Tailscale 内置 SSH(仅命令行,不支持 WinSCP)

sudo tailscale set --ssh

其他设备可以执行:

tailscale ssh ......

五、典型业务场景实战

场景 1:跨地域服务访问(本地开发、测试环境)

  1. Ubuntu 上面部署 Web、数据库、API 等测试服务,绑定0.0.0.0监听本机全部网卡。

  2. Windows / 另一台电脑接入同一个 Tailscale 网络。

  3. 直接使用 Ubuntu 的100.x.x.x:端口访问服务,如同本地局域网,无需公网 IP、不需要配置路由器端口映射。

示例:Ubuntu 上 nginx 监听 80 端口,Windows 浏览器打开 http://100.x.x.x。

场景 2:游戏联机(跨设备虚拟局域网联机)

原理:Tailscale 构建虚拟局域网,游戏识别到100.x.x.x网段,把异地设备伪装成同一个局域网。

  1. 所有参与游戏的设备全部安装 Tailscale,登录同一个账号。

  2. 主机开启局域网游戏房间;其他玩家直接填入主机的 Tailscale 虚拟内网 IP 进行连接。

✨优势:P2P 直连模式,速度高延迟低,不需要公网 IP,不需要折腾路由器 UPnP、端口转发。 注意:部分游戏会限制网段,优先确认游戏支持自定义局域网 IP。

六、排错速查表

表格

现象

排查命令 / 操作

设备 ping 不通

1. 确认两台设备 tailscaled 服务运行;2. 执行tailscale status确认双方在线;3. 检查防火墙,Tailscale 流量默认放行,不要拦截100.0.0.0/8网段

显示 DERP 中继,没有直连

执行tailscale netcheck查看打洞报告;路由器限制 UPnP 会导致无法 P2P 直连

子网路由配置完无法访问物理局域网

确认后台已经审批 routes;确认 Ubuntu 本机 ip 转发开启sysctl net.ipv4.ip_forward

WinSCP 连不上,但是 ping IP 通

确认 openssh‑server 正常运行,防火墙放行 22 端口;不要混淆 Tailscale 内置 SSH

七、安全最佳实践

  1. 不要随意把设备分享给陌生人;后台可以做设备密钥轮换、设备注销。

  2. 子网网关、出口节点开启后,务必在后台审批,不要只在命令行执行参数。

  3. 远程 SSH 建议后续配置密钥登录,减少密码泄露风险。

  4. MagicDNS 启用之后,可以优先使用主机名代替 IP 访问,降低记忆成本。

小提示:MagicDNS 在后台开启,开启后直接用主机名例如 xxxxx 代替 100 段 IP 访问设备。

Tailscale 设备审批(Device Approval)开启操作

作用:新设备登录账号后,不会自动加入虚拟局域网;管理员必须在后台手动批准,设备才能和其他节点互通。未审批的设备只能连接管控服务器,无法访问任何 tailnet 内其他机器Tailscale。

注意区分两个功能:

  1. Device Approval(设备审批):同一个账号下,每一台新硬件设备都要审批。

  2. User Approval(用户审批):针对新账号用户加入你的组织网络,个人自用单账号一般不用开这个Tailscale。

操作步骤

  1. 打开管理后台:https://login.tailscale.com/admin

  2. 左侧菜单点 Settings(设置) → Device management(设备管理)Tailscale

  3. 找到 Device Approval,勾选:Manually approve new devices(手动批准新设备)

  4. 点页面下方 Save 保存设置,立刻生效,无需重启任何设备Tailscale。

批准待审批的设备

  1. 进入 Machines(设备列表)页面

  2. 待审批设备会带上 Needs approval 标签,出现在列表最上方

  3. 点这台设备右侧三个点 ... → Approve,批准完成,设备立即获得完整网络访问权限,不用重启客户端Tailscale。

⚠️开启之后的影响:

  • 已经存在的老设备不受影响,继续正常工作;只对开启之后新增的设备生效。

  • 新设备执行 sudo tailscale up,拿到登录链接登录账号之后,会提示:Contact your Tailscale admin to approve it,等待管理员后台审批,此时设备不能 ping、不能访问内网任何资源Tailscale。

👉 子网路由 / 出口节点的审批(这个≠设备审批,别搞混!)

你之前配置 --advertise‑routes 子网网关、--advertise‑exit‑node 出口节点: 设备本身已经加入网络,但广播出来的路由策略,仍然需要单独在机器页面点「Review routes」审批,就算开启了上面的设备审批,路由也要再单独点一次审批。

小技巧:使用预授权密钥(Auth Key)跳过设备审批

开启设备审批之后,如果有服务器自动化部署,可以生成预授权密钥,用这个密钥启动 tailscale,设备自动审批加入网络,不用后台手动点批准。 后台:Settings → Keys → Generate auth key,勾选 Pre‑approved 生成密钥。 Linux 使用示例:

sudo tailscale up --authkey=tskey‑xxxxxx

个人自用建议

  • 自己家里、个人测试,不建议开启设备审批,每次加手机、电脑都要网页点批准,麻烦。

  • 如果给多人、团队使用,防止陌生设备混入,再打开此安全开关。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

Tailscale 部署与实战技术文档
/archives/tailscale-bu-shu-yu-shi-zhan-ji-shu-wen-dang
作者
宅女之友
发布于
2026-10-30
许可协议
CC BY-NC-SA 4.0

评论