Teamviewer is a screen sharing application that runs on Mac, Windows, Linux and even some mobile phones.
It runs as a service against their server so you don’t have to worry about NAT. I have tried many other similar things such as Citrix, LogMeIn, and VNC (many variations). Things such as Citrix and LogMeIn are also run as a service and get around the NAT problem. VNC, you have to open ports manually in the firewall.
Teamviewer is free for non-commercial use which is cool. It’s quite expensive for commercial use, especially if you start wanting to use it for several people. The price can add up quickly to thousands of dollars. And even though the price is a one time cost, it’s not really since they do upgrades about once a year and you end up paying a substantial amount again.
I’ve long been looking for something that runs on my own server and manages a set of reverse connections for VNC so that I could connect to my own server and then into the machine of my choosing without having to worry about NAT.