Tailscale + xrdp 实现 Ubuntu 无公网远程控制方案
摘要
本文介绍了一种无需公网 IP 和端口转发的 Ubuntu 远程桌面方案。在 Ubuntu 端,需安装 Tailscale 并登录,安装 xrdp(推荐轻量级 Xfce),配置会话并放行 3389 端口。在 Windows 端,安装 Tailscale 并使用远程桌面连接到 Ubuntu 的 Tailscale IP。文中还提供了连接失败、黑屏等常见问题的解决方法。
前言
我之前写过 Ubuntu 的远程控制方案,当时用的是端口转发的思路。但很多朋友反馈说:我根本没有公网 IP,或者宽带运营商不给公网地址,这条路根本走不通。
那没有公网 IP 该怎么办?传统方案无非两种:
frp:需要一台有公网 IP 的服务器做中转,得自己买服务器。
Ngrok:用它的服务,但有流量限制,免费额度也紧巴巴。
其实还有一条更省心的路——Tailscale + xrdp。这套方案体验最接近原生 Windows 远程桌面,而且关键优势在于:
全程不用公网 IP
不用去路由器里开端口(不用 NAT 转发、不用改防火墙)
Tailscale 免费版个人套餐就支持 100 台设备,个人用完全够。下面完整记录配置过程。
原理:为什么能"无公网也远程"
简单说,Tailscale 会把你名下的多台设备(不管它们各自在什么网络下)组成一个虚拟局域网,给每台设备分配一个稳定的 100.x.x.x 虚拟 IP,设备之间通过加密隧道直接互通——所以两台机器之间能互相访问,根本不需要公网 IP。
而 xrdp 则是让 Linux 提供一个 RDP(远程桌面协议)服务,这样 Windows 自带的"远程桌面连接"(mstsc)就能直接连上来,体验和连 Windows 远程桌面几乎一样。
一句话概括:Tailscale 负责"把两台机器拉到同一个内网",xrdp 负责"提供桌面",合起来就是无公网 IP 的流畅远程桌面。
一、Ubuntu 端配置(被控机)
先在被控的 Ubuntu 机器上操作。
1. 安装并登录 Tailscale
在 Ubuntu 终端执行:

运行 sudo tailscale up 后,终端会打印一个登录链接。

把它复制到浏览器打开,用 Google / GitHub / Microsoft 账号登录(随便选一个)。登录成功后,这台 Ubuntu 会获得一个 100.x.x.x 的虚拟 IP,就说明已经加入你的虚拟局域网了。
2. 安装 xrdp
Ubuntu 桌面版可以直接用默认环境,但有个坑要注意:GNOME 桌面经 xrdp 很容易黑屏/卡顿。所以我推荐装轻量的 Xfce,远程体验更流畅。
3. 让 xrdp 使用 Xfce
装完 Xfce 后,要告诉 xrdp 用 Xfce 会话,并启动服务:
这一步是避免黑屏/认证循环的关键,别跳过。
4. 放行端口(若开了 UFW 防火墙)
如果你给 Ubuntu 开了 UFW 防火墙,需要放行 RDP 端口 3389:
注意:我们之所以能"不开路由器端口",是因为 Tailscale 走的是它自己的加密隧道,不需要你在公网路由器上转发 3389;这里的
ufw allow只是放行 Tailscale 虚拟网卡到你本机的访问。
5. 记下 Ubuntu 的 Tailscale IP

把这个 IP 记下来,等会儿 Windows 端就连它。
二、Windows 端设置(你的电脑)
Ubuntu 端配好后,到你的 Windows 电脑上操作。
去 https://tailscale.com/download 安装 Windows 版 Tailscale。

登录同一个账号(和 Ubuntu 那步用的账号一致)——这样两台机器才能在同一个虚拟局域网里互相看到。
打开 Windows 自带的**「远程桌面连接」**(按
Win+R输入mstsc回车即可)。在"计算机"栏填 Ubuntu 的 Tailscale IP(如
100.102.53.68)。

用户名 / 密码填 Ubuntu 的登录账密。
点连接,看到 Xfce 桌面就成功了 🎉

三、常见坑(排错)
1. 连不上
先确认 Windows 端 Tailscale 已登录、状态是绿色(在系统托盘看)。
用
ping <Ubuntu的Tailscale IP>测试两台机器是否互通。ping 不通说明虚拟局域网没建立,先解决 Tailscale 连接问题。
2. 黑屏 / 认证循环
多半是 GNOME 会话和 xrdp 的兼容问题。回到上面第 3 步,切换到 Xfce(写入
~/.xsession并重启 xrdp)基本就能解决。
3. 提示密码错误
用
sudo passwd $USER重新设置一下 Ubuntu 用户的密码。
4. 卡顿明显
确认用的 Xfce 而非 GNOME(GNOME 经 RDP 效率低)。
检查两端网络质量;Tailscale 两端尽量靠近公网质量好的网络。
我的结论
这套 Tailscale + xrdp 方案,是我目前用过最接近"原生远程桌面"且完全免费的组合了。它最大的价值就是解决了"没有公网 IP"这个硬伤——不用买服务器中转、不用折腾路由器端口,只要两台机器都装了 Tailscale 加入同一账号,剩下的体验跟本地局域网远程几乎没区别。
要说小缺点,就是需要在 Ubuntu 上装并切换到 Xfce(如果你习惯了 GNOME,会需要适应一下桌面样式)。但换来的是稳定流畅的远程体验,这点代价完全值得。
如果你也有一台 Ubuntu 机器(比如闲置笔记本、小主机),想随时随地用 Windows 远程连上去,强烈推荐这套方案——配一次,以后走到哪都能像在本地一样连过去。