本教程介绍如何用 LunovaFrp 将内网的 VNC 服务安全映射到公网。关键要点: 默认端口 5900 协议 TCP :0=5900,:1=5901。
准备工作
VNC 服务端(被控端)常见选择
- Windows: TightVNC / UltraVNC / RealVNC Server
- Linux: TigerVNC / x11vnc / RealVNC Server
- macOS: 系统自带“屏幕共享”(VNC 兼容)或第三方 VNC Server
VNC 客户端(控制端)常见选择
- RealVNC Viewer、TigerVNC Viewer、TightVNC Viewer
- 移动端:VNC Viewer(iOS/Android)、bVNC(Android)等
确保服务端设置了 访问密码/认证,并允许本机 5900/590X 端口被访问(系统防火墙放行)。
在被控主机上启动 VNC 服务
Windows(以 TightVNC 为例)
- 安装 TightVNC Server,运行“服务配置”。
- 设置远程访问密码(必选),显示端口默认为
5900。 - 勾选开机自启(可选),应用并启动服务。
Linux(以 TigerVNC 为例)
# 1) 安装
# Debian/Ubuntu
sudo apt-get update && sudo apt-get install -y tigervnc-standalone-server tigervnc-common
# CentOS/Rocky/Alma
sudo yum install -y tigervnc-server
# 2) 设置 VNC 密码(保存到 ~/.vnc/passwd)
vncpasswd
# 3) 启动(:1 表示显示号1 → 端口 5901;:0 则是 5900)
vncserver :1
# 4) 停止(按需)
vncserver -kill :1
注:如果要共享当前物理会话(而不是独立的虚拟桌面),可用 x11vnc:
sudo apt-get install -y x11vnc
x11vnc -storepasswd
x11vnc -usepw -display :0 -forever
macOS
- 系统设置 → 通用 → 共享 → 打开“屏幕共享”。
- “电脑设置”中启用“VNC 观察者可使用密码控制屏幕”,设置 VNC 密码。
- macOS 默认为 5900 端口。
创建 LunovaFrp 隧道
- 本地地址:
127.0.0.1(服务端运行在本机时)或内网 LAN IP。 - 本地端口:
5900(或 5901/5902… 对应:1/:2)。 - 协议:
TCP - 节点:选择就近、延迟低且稳定的节点。
创建后你会得到 “外网地址:端口”(例如 node-a.lunovafrp.net:46088)。
从外网连接 VNC
桌面端(Windows/macOS/Linux)
- 打开 VNC Viewer。
- 在 “地址/主机” 中填写:
外网地址:端口(如node-a.lunovafrp.net:46088)。 - 连接并输入 VNC 密码;若提示加密不匹配,可切换 Viewer 的认证/加密选项适配服务端。
移动端(iOS/Android)
- 安装 RealVNC Viewer 或 bVNC。
- 新建连接 → 地址填 “外网地址:端口”,保存并连接。
- 输入 VNC 密码,进入远程桌面。
安全与加固
- 强密码必开:避免空密码或过于简单的口令。
- 优先启用加密:如 RealVNC/TigerVNC 的加密或 VeNCrypt;若不支持,建议改走 SSH 隧道(VNC→127.0.0.1,经 SSH 加密后再由 LunovaFrp 转发)。
- 限制来源 IP:在防火墙/服务端白名单里仅放行可信 IP(如公司/家庭出口)。
- 改端口/限速:将 5900 改为高位端口,配合失败锁定/速率限制(不同服务端支持不同)。
- 最小权限:Windows 端仅给必要账号远程权限;Linux 端注意 X 会话/桌面服务的权限隔离。
常见问题(FAQ)
1)连不上/超时
- 确认 VNC 服务端已在本机监听(Linux 可用
ss -lntp | grep 590查看)。 - 检查系统防火墙是否放行 5900/590X;Windows Defender/iptables/ufw 都要看。
- 确认 LunovaFrp 隧道在线,协议为 TCP,端口填写一致。
2)能连上但黑屏
- Linux 虚拟桌面未启动相应会话(例如需要
vncserver :1并正确配置~/.vnc/xstartup)。 - 使用 x11vnc 共享物理屏时,确保
-display :0正确且目标会话已登录。 - 尝试更换编码/颜色深度(Viewer 里改为 Tight/H.264/低色深)。
3)卡顿/延迟高
- 换延迟更低的节点;尽量靠近被控端所在地区。
- 降低分辨率/色深,关闭墙纸、动画;TigerVNC 可切 Tight/低色深。
- 使用有线/5GHz Wi-Fi,确保上行带宽稳定。
4)端口/显示号怎么对应?
:0 → 5900,:1 → 5901,以此类推。- 隧道“本地端口”要填对应的
590X。
进阶:Linux 开机自启(示例)
以 TigerVNC(显示号 :1 → 5901)为例:
# /etc/systemd/system/vncserver@:1.service
[Unit]
Description=TigerVNC server for display :1
After=network.target
[Service]
Type=forking
User=你的用户名
PAMName=login
PIDFile=/home/你的用户名/.vnc/%H:1.pid
ExecStart=/usr/bin/vncserver :1
ExecStop=/usr/bin/vncserver -kill :1
[Install]
WantedBy=multi-user.target
# 启用并启动
sudo systemctl daemon-reload
sudo systemctl enable vncserver@:1
sudo systemctl start vncserver@:1
sudo systemctl status vncserver@:1