I tried several things that had limitations. Some of them were complicated to walk others through installing and sometimes never actually worked on their older software.
I found one that I am very happy with. It is called TeamViewer.
- Free for personal use.
- Remote Desktop - Basically you can take control of another machine and the user on the other machine can see what you are doing. This is helping for fixing problems on a remote machine and also for training.
- File transfer. No need to share directories. Once you connect you get access to both machines file system. You can do file transfers without opening up a full remote desktop session.
- You can set up a VPN. I haven't done a ton with this, because it seems to be a little different than VPNs I have used. Most times when I have used a VPN when you browse the web it goes out through the VPN's network. So far it doesn't work that way for me. I think the idea is that you can share printers and operate on files as if they were on a local network.
- As far as I can tell there is no way to pipe sound from the remote machine to your local machine.