I live in a country with serious difficulties in accessing the free internet. Many sites are filtered, the speed in resolving host names is slow, bringing up web sites takes time, and you feel how slow are the servers in the middle which route your packets to and from the internet.
In the middle of these everyday difficulties, I got a VPS in a free country which is dedicated to me. Every popular solution like OpenVPN are under control by the government. Even they slow down the speed of secure (https, ssh, etc.) connections to reduce the risk of them being used by the people.
In such conditions, I decide to overcome all of these barriers with a custom tunneling solution. For this, it seems that I need some programming. These materials should be concerned:
- Setting up a proxy server on localhost to gather all requests from all programs and navigate them throw the tunnel. I've no idea about it. I use Linux (Ubuntu) and I don't know how is it possible in this environment. I prefer GoLang if I've to code, because it's a higher-level programming language than something like C. A read-to-use solution/library is also a good choice.
- Designing a protocol to communicate with the remote server (VPS). Some coding should be done in both sides.
- The remote server should propagate requests in the free world and gather the responses and deliver them to the client (my PC).
- The responses should be reached to the programs who has sent their requests to the local proxy server.
Evidently, the local proxy server should scramble the received requests so that they seem garbage to the government and unscramble the responses for the programs.
I'm not so familiar with network basics, but a little. Any idea or ready-to-use solution?