把本地电脑变成云服务器|Tailscale内网穿透|Peer Relay国内中转|UDP打洞直连|Ubuntu远程开发机|Windows远程访问|SSH私有云实战
把本地电脑变成云服务器|Tailscale内网穿透|Peer Relay国内中转|UDP打洞直连|Ubuntu远程开发机|Windows远程访问|SSH私有云实战
最近做物联网中台、压测平台或大模型实验时,经常会遇到一个现实问题:本地电脑性能很强,但云服务器同等配置太贵。比如本地有一台高性能台式机,装上 Ubuntu 后完全可以承担编译、压测、后台服务、数据库、监控等工作。真正麻烦的是:人不在同一个局域网时,怎么稳定、安全地访问这台电脑。
这篇教程使用 Tailscale 把本地电脑变成一台“私有云服务器”。如果网络环境允许,Tailscale 会优先 UDP 打洞直连;如果直连失败,可以先走官方 DERP 中转;如果官方中转延迟太高,再用一台国内轻量云服务器做 Tailscale Peer Relay 中转。
本文所有 IP、主机名、用户名都是示例信息。请把它们替换成你自己的环境信息。
一、适用场景
适合:
- 本地电脑性能强,想当远程开发机、压测机、构建机或后台服务器使用。
- 家庭宽带、宿舍网、公司网没有公网 IPv4,或者路由器不方便做端口映射。
- 只需要自己或团队成员访问,不需要把服务直接暴露给公网。
- 希望 SSH、HTTP 后台、数据库、监控页面都通过私有网络访问。
不适合:
- 你要把网站开放给所有互联网用户访问。这种情况更适合公网云服务器、反向代理、Cloudflare Tunnel、Tailscale Funnel 等方案。
- 你不能在访问端安装 Tailscale 客户端。
二、整体架构
本教程准备三类机器:
| 角色 | 示例主机名 | 示例地址 | 作用 |
|---|---|---|---|
| 本地高性能电脑 | home-server |
100.64.10.10 |
真正运行服务的机器,比如 Ubuntu 台式机 |
| 访问端电脑 | work-laptop |
100.64.10.20 |
外出时使用的 Windows 笔记本 |
| 国内云服务器(非必须) | relay-vps |
公网 203.0.113.10,Tailscale 100.64.10.30 |
只负责中转,不承载业务 |
连接优先级可以理解成:
- UDP 打洞直连:速度最快,访问端和本地服务器直接通信。
- 自建 Peer Relay 中转:直连失败时,优先走你自己的国内云服务器中转。
- 官方 DERP 中转:前两者都不成功时,走 Tailscale 官方中转,国内访问可能延迟较高。
最终访问方式类似:
# 通过 Tailscale 主机名 SSH 登录本地服务器
ssh example-user@home-server
# 通过 Tailscale IP SSH 登录本地服务器
ssh example-user@100.64.10.10
# 访问本地服务器上监听 8080 端口的 Web 服务
curl http://home-server:8080
三、先简单理解 Tailscale
Tailscale 是一个基于 WireGuard 的组网工具。它会给每台登录同一个账号或组织的设备分配一个 100.x.x.x 段的私有地址,并把这些设备组成一个叫 tailnet 的私有网络。
你可以把它理解成:
- 不需要公网 IP,也不需要手动配置复杂 VPN。
- 每台设备都像在同一个内网里,可以用 Tailscale IP 或 MagicDNS 主机名互相访问。
- 数据端到端加密,中转节点只负责转发加密后的流量。
- 网络好时直连,网络差时自动中转。
四、准备工作
开始前准备:
- 一个 Tailscale 账号。
- 一台本地 Ubuntu 服务器,例如
home-server。 - 一台访问端 Windows 或 macOS 电脑,例如
work-laptop。 - 可选:一台国内云服务器,例如
relay-vps。如果直连效果已经很好,可以不配置这一步。 - 如果要使用 Peer Relay,建议所有参与设备的 Tailscale 版本为
1.86或更高。
先在所有机器上检查 Tailscale 版本:
# 查看当前机器的 Tailscale 客户端版本
tailscale version
五、在 Windows 访问端安装 Tailscale
Windows 可以直接下载安装包,也可以使用 winget 安装。
# 使用 winget 安装 Tailscale Windows 客户端
winget install --id Tailscale.Tailscale -e
# 启动 Tailscale 登录流程,把当前 Windows 电脑加入 tailnet
tailscale up
# 查看当前 Windows 电脑是否已经加入 tailnet,以及能看到哪些设备
tailscale status
# 查看当前 Windows 电脑分配到的 Tailscale IPv4 地址
tailscale ip -4
如果 PowerShell 找不到 tailscale 命令,可以使用默认安装路径执行:
# 使用 Tailscale CLI 的默认安装路径查看当前连接状态
& "C:\Program Files\Tailscale\tailscale.exe" status
登录完成后,在 Tailscale 管理后台可以把这台电脑的设备名改成更容易识别的名字,例如 work-laptop。
六、在本地 Ubuntu 服务器安装 Tailscale
以下命令在本地高性能电脑,也就是 home-server 上执行。
# 更新 Ubuntu 软件源,避免安装依赖时遇到旧索引
sudo apt update
# 安装 curl,确保可以下载 Tailscale 官方安装脚本
sudo apt install -y curl
# 使用 Tailscale 官方安装脚本安装客户端
curl -fsSL https://tailscale.com/install.sh | sh
# 设置 tailscaled 服务开机自启,并立即启动服务
sudo systemctl enable --now tailscaled
# 登录 Tailscale,把这台 Ubuntu 服务器加入 tailnet
sudo tailscale up
# 查看 tailscaled 服务是否正常运行
systemctl status tailscaled
# 查看这台 Ubuntu 服务器分配到的 Tailscale IPv4 地址
tailscale ip -4
# 查看当前 tailnet 中能看到的其他设备
tailscale status
建议在 Tailscale 管理后台把这台机器重命名为 home-server,后面就可以直接用主机名访问它。
注意这里需要配置主机名,后续教程才能用主机名去访问,否则你应该用IP地址去访问。
七、在 CentOS / RHEL 服务器安装 Tailscale
如果你的本地服务器或云服务器是 CentOS / RHEL,可以使用同一个官方安装脚本。
# 安装 curl,确保可以下载 Tailscale 官方安装脚本
sudo yum install -y curl
# 使用 Tailscale 官方安装脚本安装客户端
curl -fsSL https://tailscale.com/install.sh | sh
# 设置 tailscaled 服务开机自启,并立即启动服务
sudo systemctl enable --now tailscaled
# 登录 Tailscale,把当前 CentOS / RHEL 机器加入 tailnet
sudo tailscale up
# 查看 tailscaled 服务是否正常运行
systemctl status tailscaled
# 查看当前机器分配到的 Tailscale IPv4 地址
tailscale ip -4
八、基础访问验证

到这一步,如果一切顺利,两边网络都没有限制时,步骤已经完成,只需要验证一下是否通了。
在 work-laptop 上测试是否能访问 home-server。
# 测试 work-laptop 到 home-server 的 Tailscale 网络连通性
tailscale ping home-server
# 查看 work-laptop 当前能看到的所有 Tailscale 设备
tailscale status
# 使用 SSH 登录 home-server,example-user 替换成你的 Ubuntu 用户名
ssh example-user@home-server
# 如果主机名解析不稳定,可以直接使用 Tailscale IP 登录
ssh example-user@100.64.10.10
如果本地服务器上运行了一个 Web 服务,比如监听 8080 端口,可以继续测试:
# 在 home-server 上查看 8080 端口是否有服务监听
sudo ss -lntp | grep ':8080'
# 在 home-server 本机测试服务是否正常响应
curl http://127.0.0.1:8080
然后在 work-laptop 上访问:
# 在访问端通过 Tailscale 主机名访问 home-server 的 8080 端口
curl http://home-server:8080
# 在访问端通过 Tailscale IP 访问 home-server 的 8080 端口
curl http://100.64.10.10:8080
如果你的应用只监听 127.0.0.1,其他机器访问不到。可以把应用监听地址改成 0.0.0.0,或者更严格地绑定到 home-server 的 Tailscale IP。
九、判断当前是直连、官方中转还是自建中转
在访问端执行:
# 测试 work-laptop 到 home-server 的连接路径和延迟
tailscale ping home-server
可能看到类似结果:
pong from home-server (100.64.10.10) via 198.51.100.20:41641 in 28ms
pong from home-server (100.64.10.10) via DERP(hkg) in 210ms
pong from home-server (100.64.10.10) via peer-relay(203.0.113.10:40000:vni:2) in 42ms
含义:
via 198.51.100.20:41641:通常表示 UDP 打洞直连,体验最好。via DERP(...):表示走官方 DERP 中转,国内网络可能延迟较高。via peer-relay(...):表示走你配置的自建 Peer Relay 中转。
也可以用 tailscale status 过滤连接类型:
# 在 Linux 上查看当前是否存在 peer-relay 连接
tailscale status | grep peer-relay
# 在 Windows 上查看当前是否存在 peer-relay 连接
tailscale status | findstr peer-relay
十、UDP 打洞直连
默认情况下,Tailscale 会尽量让两台设备直连。直连成功时,速度通常接近两边网络中较慢的一端。
为了提高直连概率,可以检查这些点:
- 本地服务器、访问端、云服务器都能正常访问互联网。
- 防火墙没有完全禁止 UDP 出站。
- 路由器没有开启特别严格的企业级安全策略。
- 如果你能控制路由器,可以允许 UDP 出站和回包。
在 Linux 上可以检查 Tailscale 网络环境:
# 检查当前机器的 NAT、UDP、DERP 连通性等网络诊断信息
tailscale netcheck
如果直连已经稳定,tailscale ping home-server 延迟也能接受,就可以直接使用,不一定需要云服务器中转。
十一、官方 DERP 中转
当 UDP 打洞失败时,Tailscale 会自动使用官方 DERP 中转。它的优点是几乎不用配置,缺点是国内访问时可能绕路,延迟和带宽都不稳定。
判断方式:
# 查看 work-laptop 到 home-server 是否走官方 DERP 中转
tailscale ping home-server
如果输出中出现 DERP(...),说明当前不是直连。如果只是偶尔出现 DERP,随后变成直连或 peer-relay,通常是正常的。如果一直是 DERP 且延迟很高,可以继续配置自建 Peer Relay。
十二、自建 Peer Relay 中转
Peer Relay 的作用是:当直连失败时,让 tailnet 内的一台你自己的机器作为中转节点。这个中转节点只转发加密流量,不解密业务数据。
本教程用国内云服务器 relay-vps 做 Peer Relay。云服务器配置不需要很高,关键是网络质量要好,带宽要够用。
12.1 开放云服务器端口
在云厂商控制台的安全组里,给 relay-vps 放行:
| 协议 | 端口 | 作用 |
|---|---|---|
| UDP | 41641 |
Tailscale 默认 WireGuard 通信端口,有利于节点直连和连通性探测 |
| UDP | 40000 |
Peer Relay 转发端口,下面会配置 |
如果云服务器系统内还启用了 ufw,继续执行:
# 允许 Tailscale 默认 UDP 通信端口 41641 入站
sudo ufw allow 41641/udp
# 允许 Peer Relay 使用的 UDP 40000 端口入站
sudo ufw allow 40000/udp
# 查看 ufw 防火墙规则是否已生效
sudo ufw status
如果云服务器系统内使用的是 firewalld,执行:
# 永久放行 Tailscale 默认 UDP 通信端口 41641
sudo firewall-cmd --permanent --add-port=41641/udp
# 永久放行 Peer Relay 使用的 UDP 40000 端口
sudo firewall-cmd --permanent --add-port=40000/udp
# 重新加载 firewalld 规则,让新增端口立即生效
sudo firewall-cmd --reload
# 查看 firewalld 当前已放行的端口
sudo firewall-cmd --list-ports
12.2 在云服务器安装并登录 Tailscale
以下命令在 relay-vps 上执行。
# 更新 Ubuntu 软件源,避免安装依赖时遇到旧索引
sudo apt update
# 安装 curl,确保可以下载 Tailscale 官方安装脚本
sudo apt install -y curl
# 使用 Tailscale 官方安装脚本安装客户端
curl -fsSL https://tailscale.com/install.sh | sh
# 设置 tailscaled 服务开机自启,并立即启动服务
sudo systemctl enable --now tailscaled
# 登录 Tailscale,把云服务器加入 tailnet
sudo tailscale up
# 查看 tailscaled 服务是否正常运行
systemctl status tailscaled
# 查看云服务器分配到的 Tailscale IPv4 地址
tailscale ip -4
12.3 给中转服务器打标签并配置策略

为了先把方案跑通,这里采用宽松配置:业务访问继续允许 * 到 *,Peer Relay 允许任意设备使用 tag:relay 这台中转服务器。这样配置最简单,适合个人环境或内网实验。
如果是多人团队、生产环境,建议后续再把 src、dst、ip 收紧到具体用户、设备标签和端口。
先在 Tailscale 管理后台打开:
Access controls -> JSON editor
把策略调整成类似下面这样。如果你原来已经有 grants,不要直接覆盖整份配置,而是把对应片段合并进去。
{
"tagOwners": {
"tag:relay": ["autogroup:admin"]
},
"grants": [
{
"src": ["*"],
"dst": ["tag:relay"],
"ip": ["*"],
"app": {
"tailscale.com/cap/relay": []
}
},
{
"src": ["*"],
"dst": ["*"],
"ip": ["*"]
}
]
}
字段解释:
tagOwners:允许管理员给云服务器打tag:relay标签。- 第一条
grants:允许所有设备使用tag:relay设备作为 Peer Relay 中转。 - 第二条
grants:保留默认的全量互通能力,也就是允许 tailnet 内设备互相访问所有端口。 - 这里的
*表示不限制来源、目标或端口。先跑通时很方便,但团队环境建议后续再收紧权限。
策略保存后,本地服务器 home-server 不需要打标签,保持普通节点即可:
# 重新连接 Tailscale,让 home-server 拉取最新策略
sudo tailscale up
# 查看当前本地服务器是否在线
tailscale status
在 relay-vps 上执行:
# 重新加入 tailnet,并把当前云服务器标记为 tag:relay
sudo tailscale up --advertise-tags=tag:relay
# 设置 Peer Relay 使用 UDP 40000 端口
sudo tailscale set --relay-server-port=40000
# 查看 relay-vps 的 Tailscale 状态
tailscale status
如果 relay-vps 有固定公网 IP,也可以显式发布静态端点:
# 设置 Peer Relay 端口,并声明云服务器的公网静态端点
sudo tailscale set --relay-server-port=40000 --relay-server-static-endpoints="203.0.113.10:40000"
一般国内云服务器直接有公网 IP 时,只设置 --relay-server-port=40000 就够了。静态端点更适合有负载均衡、端口转发、多公网地址等情况。
12.4 刷新三台机器的 Tailscale 状态
修改策略后,如果连接状态没有立即变化,可以刷新各设备。
在 Windows 访问端 work-laptop 上执行:
# 断开当前 Tailscale 连接,准备重新拉取策略
tailscale down
# 重新连接 Tailscale,并拉取最新策略
tailscale up
# 查看最新设备状态和连接路径
tailscale status
在本地服务器 home-server 上执行:
# 断开当前 Tailscale 连接,准备重新拉取策略
sudo tailscale down
# 重新连接 Tailscale,并拉取最新策略
sudo tailscale up
# 查看最新设备状态和连接路径
tailscale status
在云服务器 relay-vps 上执行:
# 重启 tailscaled 服务,确保服务状态干净
sudo systemctl restart tailscaled
# 重新连接 Tailscale,并保持 tag:relay 标签
sudo tailscale up --advertise-tags=tag:relay
# 重新设置 Peer Relay 的 UDP 40000 端口
sudo tailscale set --relay-server-port=40000
# 查看 relay-vps 是否在线
tailscale status
十三、验证 Peer Relay 是否生效
在访问端 work-laptop 上执行:
# 测试访问端到本地服务器的连接路径
tailscale ping home-server
如果看到下面这种输出,就说明自建中转已经生效:
pong from home-server (100.64.10.10) via peer-relay(203.0.113.10:40000:vni:2) in 42ms
在 relay-vps 上也可以观察是否有 peer-relay 连接:
# 在 Linux 上筛选当前状态中的 peer-relay 连接
tailscale status | grep peer-relay
如果一开始显示 DERP,过几秒后变成 peer-relay,通常也是正常的。Tailscale 会先保证可达,然后再选择更合适的路径。
十四、把本地电脑当服务器使用
14.1 SSH 远程登录
从访问端登录:
# 通过 MagicDNS 主机名登录 home-server
ssh example-user@home-server
# 通过 Tailscale IP 登录 home-server
ssh example-user@100.64.10.10
建议配置 SSH 密钥,减少密码暴露风险。
在访问端生成密钥:
# 生成 ed25519 SSH 密钥,用于从访问端登录 home-server
ssh-keygen -t ed25519 -C "work-laptop-to-home-server"
把公钥复制到服务器:
# 把访问端公钥写入 home-server 的 authorized_keys,example-user 替换成你的服务器用户名
ssh-copy-id example-user@home-server
如果 Windows 没有 ssh-copy-id,可以手动复制公钥内容,或者使用 Git Bash / WSL 执行同样命令。
14.2 运行 Web 服务
假设你的服务监听 8080 端口。
在 home-server 上检查监听状态:
# 查看 8080 端口是否已经被应用监听
sudo ss -lntp | grep ':8080'
# 在服务器本机请求 8080 端口,验证应用本身是否正常
curl http://127.0.0.1:8080
在访问端访问:
# 通过 Tailscale 主机名访问 home-server 的 8080 端口
curl http://home-server:8080
浏览器访问:
http://home-server:8080
14.3 传输文件
把本地文件上传到 home-server:
# 把当前目录下的 app.jar 上传到 home-server 的 /opt/apps 目录
scp .\app.jar example-user@home-server:/opt/apps/
从 home-server 下载日志:
# 把 home-server 上的应用日志下载到当前目录
scp example-user@home-server:/var/log/example-app/app.log .
如果需要同步整个目录,Linux / macOS / WSL 下可以用 rsync:
# 把本地 dist 目录同步到 home-server 的 /opt/apps/example-app 目录
rsync -avz ./dist/ example-user@home-server:/opt/apps/example-app/
十五、安全建议
- 不要把业务端口直接开放到公网,优先只通过 Tailscale 访问。
- Peer Relay 云服务器只需要开放 UDP
40000和必要的 Tailscale 通信端口,不需要开放你的业务端口。 - 个人环境可以先用
*跑通 Tailscale Access Controls;多人团队或生产环境建议再用设备标签、用户组、端口做精确授权。 - SSH 建议使用密钥登录,并关闭密码登录。
- 云服务器做好系统更新,避免中转节点本身变成风险点。
Ubuntu 更新系统:
# 更新 Ubuntu 软件源索引
sudo apt update
# 升级 Ubuntu 已安装的软件包
sudo apt upgrade
CentOS / RHEL 更新系统:
# 升级 CentOS / RHEL 已安装的软件包
sudo yum update
修改 SSH 配置前先备份:
# 备份 sshd_config,避免修改错误后无法恢复
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
# 编辑 SSH 服务端配置文件
sudo nano /etc/ssh/sshd_config
# 重启 SSH 服务,让配置生效
sudo systemctl restart ssh
如果系统使用 sshd 服务名:
# 在使用 sshd 服务名的系统上重启 SSH 服务
sudo systemctl restart sshd
十六、常见问题排查
16.1 tailscale ping 一直走 DERP
可能原因:
- 两端网络都比较严格,UDP 打洞失败。
- Peer Relay 策略没有生效。
- 云服务器安全组没有放行 UDP
40000。 - 云服务器系统防火墙没有放行 UDP
40000。 - Tailscale 版本过低。
排查命令:
# 查看当前机器的 Tailscale 版本
tailscale version
# 查看 NAT、UDP、DERP 等网络诊断结果
tailscale netcheck
# 查看当前设备连接状态
tailscale status
# 测试到 home-server 的连接路径
tailscale ping home-server
16.2 能 SSH,但 Web 服务访问不了
可能原因:
- 应用只监听
127.0.0.1。 - 应用端口不是
8080。 - Linux 防火墙阻止了 Tailscale 网卡访问。
- 如果你后续收紧过 Tailscale Access Controls,可能没有放行该端口。
排查命令:
# 在 home-server 上查看所有 TCP 监听端口
sudo ss -lntp
# 在 home-server 上本机访问应用端口
curl http://127.0.0.1:8080
# 在 home-server 上查看 Tailscale 网卡地址
tailscale ip -4
16.3 配置了 Peer Relay,但没有看到 peer-relay
可以按顺序检查:
relay-vps是否执行过sudo tailscale set --relay-server-port=40000。- 云服务器安全组和系统防火墙是否都放行 UDP
40000。 - Access Controls 中是否有允许
dst为tag:relay的tailscale.com/cap/relaygrant。 relay-vps是否真的打上了tag:relay。- 三台机器是否都刷新过 Tailscale 状态。
相关命令:
# 在 relay-vps 上确认 Peer Relay 端口配置后查看状态
tailscale status
# 在 relay-vps 上重新设置 Peer Relay 端口
sudo tailscale set --relay-server-port=40000
# 在 home-server 上重新连接 Tailscale,拉取最新策略
sudo tailscale up
# 在 relay-vps 上重新应用 relay 标签
sudo tailscale up --advertise-tags=tag:relay
十七、关闭 Peer Relay
如果以后不想让云服务器继续做中转,可以在 relay-vps 上执行:
# 清空 Peer Relay 端口配置,关闭该设备的 Peer Relay 能力
sudo tailscale set --relay-server-port=""
然后从 Access Controls 中删除或注释掉对应的 tailscale.com/cap/relay grant。
十八、最终效果
完成后,你就可以把本地高性能电脑当成一台私有云服务器使用:
- 在公司、宿舍、咖啡店都可以 SSH 登录
home-server。 - 可以访问
home-server上运行的后台、压测平台、监控页面、数据库管理工具。 - 网络条件好时自动直连,速度最好。
- 直连失败时优先走国内
relay-vps,避免官方海外 DERP 延迟过高。 - 服务不直接暴露到公网,安全边界更清晰。
参考资料:
- Tailscale Linux 下载与安装:https://tailscale.com/download/linux
- Tailscale Windows 下载:https://tailscale.com/download/windows
- Tailscale Peer Relay 官方文档:https://tailscale.com/docs/features/peer-relay
- Tailscale grants 示例:https://tailscale.com/docs/reference/examples/grants
更多推荐
所有评论(0)