远程浏览器的安全访问(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

为什么不能裸暴露端口

远程浏览器会开放 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:PORThttp://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 端口直接对公网。
创建于 2026/7/31 更新于 2026/7/31