|Forgive my ignorance on this subject but I'm curious what others on HN have to say. I'll admit I've never been that familiar with advanced networking concepts like this, and I'm testing the waters on this site with regards to best practice discussion threads like this.|
I've long had a fascination with the concept of easily establishing a TCP or UDP connection easily over the internet between two systems (Linux, Windows, Mac, iOS, Android, embedded Linux, embedded C, etc.) without having to resort to port forwarding.
For example, I've come to really like VNC Connect, which is a built in service installed on Raspberry Pi devices. In an attempt to help out my less-than-techsaavy parents, I've installed Raspberry Pi's on their networks at two of their houses (snowbirds) so I can remotely assist with anything from internet issues to helping them set up surveillance cameras. Having the ability to VNC to a Raspberry Pi on any internet connected network from any other internet connected network without port forwarding, or even having to know the internet facing IP address is a god send.
I've also in the past served as an industrial controls engineer, where often after I would finish integrating a system at a site, I would install an internet hardware appliance that would allow me to establish a VPN connection to the remote control network over the internet from anywhere else in the world (e.g. https://www.ewon.biz/products/cosy). Doing so made troubleshooting with my customer's controls engineers much easier since I had access to their local network without having to configure port forwarding or know their internet facing IP address.
My questions then are:
1) is this concept something that has an actual name? I've heard of this ability referred to as a "reverse proxy" or a "no config direction connection".
2) is there an existing open source project or methodology that allows for this sort of connection that is agnostic of platform? For example, if I didn't want to pay for RealVNC's exorbitant pricing plans for more than 5 devices, could I configure some sort of setup with an AWS instance that automatically connects clients on separate networks together? (So I could have 100 Raspberry Pi's out on different local networks that could be access by me through VNC on my laptop/phone?)