远程浏览器的安全访问(Tailscale / Cloudflare Tunnel)
远程浏览器会开放 noVNC/RDP/Web 端口,绝不能裸暴露公网。用 Tailscale 或 Cloudflare Tunnel 收口访问通道,避免被扫、被滥用、IP 被拉黑、账号被封。
#type / howto
#status / growing
#tech / network
#tech / security
#resource / tailscale
#platform / server
[!info] related notes
- 概念:VPS 远程图形化浏览器
- 对比:VPS 远程浏览器方案对比
- OCI 实操:在 OCI VPS 上接入 Tailscale
- Serve 原理:Tailscale Serve 原理
- 部署实战:在 Oracle 上部署远程浏览器实战
- TLS 排错:TLS 握手失败排查
为什么不能裸暴露端口
远程浏览器会开放 6080(noVNC)/ 3389(RDP)/ Web 端口。直接暴露公网会:
- 被全网扫描、暴力破解;
- 被陌生人当成免费浏览器/代理滥用;
- 触发目标网站风控、导致 VPS IP 被拉黑;
- 服务商(Serv00/Oracle)封号风险。
原则:永远把访问通道收口,不把服务端口直接对公网。
方案 A:Tailscale(推荐,已在 OCI 验证)
把 VPS 加入 tailnet,用 100.x 内网 IP / MagicDNS 主机名访问,流量走加密隧道,源站 IP 不暴露。
- 服务器侧接入步骤见 在 OCI VPS 上接入 Tailscale;
- 访问时连
http://100.x.x.x:PORT或http://hostname; - 可进一步把服务监听收敛到 Tailscale 接口,公网彻底清净。
方案 B:Cloudflare Tunnel(cloudflared)
用 cloudflared 建立从 VPS 到 Cloudflare 的出站隧道,公网只看到 Cloudflare 边缘,源站端口零暴露;还能套 Cloudflare 的 Access 做身份验证。
VPS 上的远程浏览器
▲ cloudflared 出站隧道(无入站端口)
Cloudflare 边缘(可加 Access 鉴权)
▲ 你的浏览器
适合:想用自定义域名、或需要 Cloudflare Access 统一鉴权的场景。
深入:Tailscale Serve(把本地 HTTP 服务变成 tailnet 内 HTTPS)
把服务监听收敛到 Tailscale 接口后,最省事的收口方式是 Tailscale Serve:它用 Tailscale 自动签发的 *.ts.net 证书,把本地 HTTP(如 noVNC 的 3010)发布成 tailnet 内的 HTTPS,免域名、免公网暴露。原理与命令见 Tailscale Serve 原理;完整部署示例见 在 Oracle 上部署远程浏览器实战。
[!warning] 两个已踩的坑
- 443 被占用:若本机 443 已被其它容器占用,Serve 默认 443 会撞错证书报
TLS internal error,改用--https=8443即可。- 重启失效:
tailscale serve --bg不是 systemd 托管,机器重启后需重跑;建议固化成开机服务(见 Tailscale Serve 原理 的”固化”段)。
选型
- 只要自己/小团队用 → Tailscale,最简单;
- 想用域名 + 公共鉴权 → Cloudflare Tunnel;
- 二者都避免把 6080/3389/Web 端口直接对公网。
Related notes
- 概念:VPS 远程图形化浏览器
- 对比:VPS 远程浏览器方案对比
- Tailscale 实操:在 OCI VPS 上接入 Tailscale
- Serve 原理:Tailscale Serve 原理
- 部署实战:在 Oracle 上部署远程浏览器实战
- TLS 排错:TLS 握手失败排查
- 背景:Oracle VPS 代理部署的坑