Exposing Local Applications with FNLocalCloud.
Recently, I found myself in a situation where I needed to access my machine via RDP, but I don’t have a public IP due to the scarcity of IPs. My ISP uses CGNAT.
I remembered a distant past when all I wanted was a VPS to expose a Counter-Strike 1.6 or Lineage 2 server for my friends to play online. Not all providers offered public IPs, and today, that’s the rule.
A common solution for this scenario is using ngrok, and it worked well, but the added delay left me dissatisfied with the usability.
The same happened when I created an SSH tunnel to a free tier machine I have on Oracle, so I decided to try creating a solution in Python with the help of LLMs, since for this purpose, it greatly accelerates the creation process.
Reasons for the Absence of Public IPs:
IPv4 Scarcity: With the increased demand for public IPs, we’ve ended up resorting to techniques like CGNAT, where multiple users share the same public IPv4 address.
Costs and Security: Renting a block of public IPs can be expensive, and CGNAT offers an extra layer of security by hiding our internal IP addresses.
Challenges of CGNAT:
Exposing Local Services: With CGNAT, we face difficulties in exposing our local services, since all internal devices share the same public IPv4 address.
Configuration Complexity: Configuring port forwarding and dealing with CGNAT restrictions can be complicated, especially for those who are not very technical.
Challenges in Adopting IPv6:
Lack of Incentive: Many internet providers have not yet adopted IPv6, which hinders our journey to expose local services.
Solution
So, if you need to expose any local service with a reverse TCP proxy, check out the tool I created on GitHub!
Link: https://github.com/Eyezuhk/FNLocalCloud
Enjoy Reading This Article?
Here are some more articles you might like to read next: