Using VPN or Cloud VM to bypass CGNAT.

I have used SSH tunnels but it's not something you can try for gaming because of the overhead it has and is pretty slow if low latency is required. Although this is the easiest to set up.🙂

So from my calculations I am currently paying about 1k/month to get a public static ip with 50megs of speed (until I get Excitel fiber) and 1 tb worth of data/month. I dont think there is some other isp which will offer better solution than this. Considering my normal usage (without needing the public ip) is about 1.3-1.5 tb/month. This is the only reason stopping me from getting Airtel as their unlimited plan is close to 2k/month.

Is the 1k/month including the DO droplet costs? Or are you referring to getting a static IP address from Excited? (Do they offer that?)
 
1k per month including DO droplet cost. It is approx 600 ish for excitel 50mbps and another 5$ (350ish) for DO droplet. Sadly excitel does not offer static IP. Although I'll try to complain again and again saying my XBOX is not working and it is giving me NAT errors let's see what they do.
 
I have used ec2 instance free tier. Setup a VPN server and enjoy for a year. And setting up of VPN on ec2 is very easy.
 
@achaudhary997 So I tested ZeroTier with Miniupnpd (for automatic port forwards) on DO and it works.

I wrote a script (initial attempt, crude) that can be used as the DO user data script which automatically installs ZeroTier and configures miniupnpd --
Source

You still need to manually authorise the new ZeroTier member and add the default route through the ZeroTier console.

1. Create a new DO droplet (has to be Debian/Ubuntu as the miniupnpd package was available in the package repository, was not there on CentOS) using the above user data script.
2. Authorise the new ZeroTier member from the console.
3. Add a default route pointing to this new ZeroTier IP address.

wPxLSka.png


4. On the client devices, enable "Allow managed" and "Allow default"

F1W0Bbf.png


That's it, now your internet gets routed through DO and if you launch any upnp or NAT-PMP enabled services it would auto create the required port-forwards. Just uncheck "Allow default" when you want to disable routing traffic through the DO droplet.

To test the port-forwards which got created, I used upnpc

Code:
Viveks-MacBook-Air:bin varkey$ upnpc -m zt0 -l
upnpc : miniupnpc library test client, version 2.1.
 (c) 2005-2018 Thomas Bernard.
Go to http://miniupnp.free.fr/ or https://miniupnp.tuxfamily.org/
for more information.
List of UPNP devices found on the network :
 desc: http://172.22.248.15:35713/rootDesc.xml
 st: urn:schemas-upnp-org:device:InternetGatewayDevice:1

Found valid IGD : http://172.22.248.15:35713/ctl/IPConn
Local LAN ip address : 172.22.122.186
Connection Type : IP_Routed
Status : Connected, uptime=1143s, LastConnectionError : ERROR_NONE
  Time started : Mon Apr 22 00:06:06 2019
MaxBitRateDown : 10000000 bps (10.0 Mbps)   MaxBitRateUp 1000000 bps (1.0 Mbps)
ExternalIPAddress = 68.183.86.250
 i protocol exPort->inAddr:inPort description remoteHost leaseTime
 0 TCP 57108->172.22.122.186:57108 'NAT-PMP 57108 tcp' '' 2556
 1 UDP 57108->172.22.122.186:57108 'qBittorrent/4.1.5 at 172.22.122.186:57108' '' 603756
GetGenericPortMappingEntry() returned 713 (SpecifiedArrayIndexInvalid)
Viveks-MacBook-Air:bin varkey$

fV0Hi6H.png


🎉
 


  • Like
Reactions: a.c
Finally, a usable bypass for dual nat with pmp 🙂.
Thanks for going through the pain of setting it up. Now I can actually pay for do without worries (after my free credits expire).

I will extend/work upon the script you have given and will update it (if required or if I find something more interesting to add) and post here.
 
No worries, I was curious myself and had to try it. 😀 Setting up miniupnpd turned out to be a bit hacky, the scripts in debian miniupnpd package as is didn't work very well with DO, and had to tinker a bit. (Still not liking it 😆 )

Feel free to modify/add/tweak the script. 🚀
Perhaps automatically authorising the new ZeroTier member and adding the default route would be a good idea (ZeroTier API supports it), that way can easily launch a new DO droplet if you want go via a different DO region or something. Can create and destroy the droplets as needed. 😀
 

Top