I'd like to set up an environment where I can use VNC to remotely support my clients over the internet. No VPNs and no port forwarding involved. I've used the UltraVNC repeater in the past, but the problem is that it requires a dedicated Windows server. What I'd like to do is as follows:

VNC Client (me) -> NAT -> Internet -> NAT -> VNC Server (the person I'm offering support to)

I'd basically like the same functionality that the UltraVNC repeater offers, but the only internet environment I have to host something on is a Linux shared server (standard hosting - PHP, Apache, etc.).


  1. Multiple platform support for both Client and Server - specifically Mac and Windows
  2. Allows for connection with multiple NATs involved (Client and Server side)
  3. Will allow me to use my existing hosting environment for any repeater that might be involved

I believe the way this would work is that the Server (the person I'm offering support to) when online would connect to a listener on the internet. When they needed support I would connect my Client to the same listener, see them connected, and use the listener (man-in-the-middle) to piggyback my Client to connect to their Server.

I'm open to using any software (not limiting myself to VNC) but would prefer a FOSS solution (which is why I'm leaning towards VNC). Any advice would be greatly appreciated.

Update: I've found a Linux port of the UltraVNC repeater, but haven't yet tried to set it up on my hosting account (and don't even know if it's possible with the type of account I have). If anyone else has used this I'd like to know how well it works. Also, it seems that ChunkVNC is an UltraVNC wrapper that supports OSX, so I'm also going to be giving this a try. Will update more once I've tried this combination.

For anyone who wants to mention a non-VNC solution, please instead add those to any of the many other questions that have answers referring to TeamViewer, LogMeIn, Copilot, CrossLoop et al. Like: What’s the best Remote Desktop Application?

  • @Arjan - I'm not sure your edit is entirely accurate. "What's the best" anything is entirely subjective, and depends on a number of variables. I'm asking for a specific solution that meets my requirements. If there's a non-VNC solution I'd love for it to be an answer here, as long as it's explained in detail how to implement it in the scenario I described. – ggutenberg May 2 '10 at 11:28
  • 1
    If there's a non-VNC solution I'd love for it to be an answer here -- I understand you'd like that, but I disagree that's how Super User works. If you're open to non-VNC solutions then I would vote to close this question as a duplicate of the other question (after which you'd need to find your best, preferably FOSS, answer at the related questions). But, it's up to you of course. Feel free to rollback my edit, after which we can see if others agree (and would, or would not, vote to close too). I think it would be a shame to see this VNC-specific question closed though. – Arjan May 2 '10 at 11:37
  • I see what you're saying (and would really like a VNC-specific answer if it exists). I just think the criteria for "What's the best Remote Desktop Application" is nowhere near the same as the criteria in my question. In that question, UltraVNC has been selected as the best answer, but it doesn't meet my requirements since it's Windows-only. I suppose I'm treading lightly on other questions here on Super User, but in my searching I couldn't find anything as specific as what I'm looking for. – ggutenberg May 2 '10 at 12:05
  • although this isn't an exact/complete answer to your question... but it is more detailed as @StephenJennings answer, so it may be interesting for you, give you hints or at least some ideas: softwarerecs.stackexchange.com/a/44758/9157 – DJCrashdummy Aug 18 '19 at 9:17

Although I think you're making it harder on yourself by requiring a native VNC solution, you could do something like this:

First, set up a Dyndns.org subdomain and keep it updated with your current IP address. Then, punch a hole through your firewall, TCP port 5500, and point it to your computer.

On your end, when a customer wants to connect, you can either use UltraVNC Viewer or Chicken of the VNC in listen mode so it waits for an incoming connection from a VNC server.

If your client is running Windows, you can distribute a SingleClick executable that connects back to your Dyndns.org domain looking for a viewer in listen mode.

If your client is running Mac OS X, you can distribute Vine Server and ask them to perform a "Reverse Connection" to your Dyndns.org domain and port. There might be some way to automate this so the user just has to open the app and it automatically makes the reverse connection.


Have the other side do a remote port forward (-R) via ssh from port 5900 on their side to an arbitrary port on the Linux intermediary, using PuTTY or some script driving OpenSSH. Then do a local port forward (-L) from an arbitrary port on your machine to the port they've opened on the Linux machine. You will then be able to connect to the open port on your machine and control the VNC server on their machine.

  • The "other side" are generally Windows machines, and not the brightest users at that. I just want to set and forget on their machines. The only time that Linux is involved is, as I mentioned, with my "man-in-the-middle" shared hosting server. I do not need to remotely control this machine - just want to use it (if required) as a stepping stone / listener / NAT helper... if necessary. – ggutenberg May 2 '10 at 9:34

For Windows, look at UltraVNC's SingleClick. It does things strangely in that you have a client listening on your machine (which you need to port forward to), and then the server gets downloaded by the person you're supporting. All they have to do is run it, and select the server they want to connect to, and that's it. I use this at work to support users.

  • I've used this in a combination with the repeater in the past, but again, it's Windows-to-Windows. I need Mac-Windows and Mac-Mac as well. Also, I have no facility to port forward as I'm usually on a shared/public internet connection, so don't have access to the router config. Also, I want this solution to "just work" no matter where I am, and not have to worry about site-specific configurations. – ggutenberg May 2 '10 at 9:58

I would recommend Crossloop as a support tool:


It's not the "perfect" free solution, but it is secure and free. The perfect free solution to be would be that can be self hosted, but of course if crossloop did that, it would defeat the purpose of crossloop.

Crossloop works pretty much like gnacio Vazquez-Abrams described. At least in the early versions.


Teamviewer. NAT & firewall transparent, multi-platform, cross-platform, free for non-commercial use, simple setup for the suportee - they just download it and run it.

To establish a session, the supportee sends you a session password (e-mail, IM, phone, pigeon, shouts it over the cubicle wall, ...), which you enter in your installed TV app, and you're on.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.