VNC over WebSocket tunnel. Practical tutorial for the remote office

By | December 6, 2016

Interactive desktop environments can be remotely accessed by using many technologies. Virtual Network Computing (VNC) is one of these.


In-depth article detailing exactly how to do VNC over WebSocket tunnel.  And excellent writeup/tutorial!



To evaluate if the WebSocket is a viable solution, we used VNCPlay[a], a set of tools to measure interactive performance. VNCPlay includes a VNC client that allows to record an interactive session and replay it under different system configurations. During the replay, the session output is saved into a log file. Two or more session logs can be fed to an analysis tool, included in VNCPlay, that produce response time statistics, which can be further elaborated. Response times to user activities are considered a good measure of interactive performance.

We built a test environment, composed of 3 LANs, that represent our “internet LAN”, the local network and the remote office network, and corresponds to the central, left and right parts in the figures above, respectively. The local and office LANs access to the internet LAN through two ZeroShell[b] router devices, each one configured to NAT the internal addresses to the router’s internet LAN address and to serve as default gatewayfor the internal LAN. The local LAN hosts the VNC client and the tunnel server with a port forwarding rule on the router to allow to connect to the tunnel server from the internet LAN. Similarly the office LAN hosts the tunnel client program and the machine running VNC server.

We used VNCPlay to record a test session, over a direct connection to the target machine with a Linux Mint OS.