I’m connected via a 4G modem. Got this setup about 3 years ago. In the beginning it was enough to look for the public IP (what’s my IP). The modem showed some sort of private ip in the ui. I’m running stuff at home (Homeassistant, Gitea,) and bought a domain and pointed it to my home IP via Cloudflare. After some time I’ve noticed my modem shows the public IP also internally. For about 2 years now it ran flawlessly, the IP changed from time to time, but not really more than once in several weeks. For about a week all stopped working and the modem shows IP 100.xxxx and outside 85.something I guess I’m behind NAT now. Normal port forwarding on the modem is useless now. Is it possible to open the ports via UPNP? I’ve tried via miniupnp from my Ubuntu server, but it just throws an error.
upnpc -a ifconfig enp1s0| grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1
22 22 TCP
Can I use this to somehow open the ports via UPNP on my modem and bypass the blocking? I can’t even OpenVPN to my modem anymore.
EDIT: i also run AdguardHome, that I use as Private DNS on my Android phone
UPDATE: everything except Adguard Home used as Private DND on my Android works! I’ve used this: https://github.com/mochman/Bypass_CGNAT/wiki/Oracle-Cloud-(Automatic-Installer-Script) - free Oracle VPS + automated well described script. Even HTTPS works fine!
A solid workaround is an ssh reverse tunnel with gateway ports enabled. You can do it for pennies with a cheap VPS.
With this option you open an ssh tunnel outbound and then you can connect back through it from the other side for whatever local services you want to run.
You first need a VPS with a public IP. Here’s a guide that explains it: https://www.howtogeek.com/428413/what-is-reverse-ssh-tunneling-and-how-to-use-it/
Just remember to enable gateway ports in the VPS side sshd.conf and disable or adjust any firewall on the VPS so the internet can come in through the VPS ip address and tunnel back to your local system.
While I use ssh tunneling to access systems on a temporary basis, usually http, some caveats:
I don’t know of a daemon to set up locally that will re-establish tunnels on power loss and the like. Not technically-difficult, but something one probably wants if this is going to be how he’s gonna get at the system long-term rather than “I just need one-off access”.
One other downside – the service that the user here is aiming to expose is apparently ssh. For me – reaching an http server – wrapping the connection for remote use is desirable. For him, it probably isn’t, as there’ll be two layers of encryption. Not the end of the world, but it’s a hit. You do want encryption in the outer protocol at least insofar as you need it to protect authentication to the VPS anyway.
I need more ports to be exposed - I’m running secure DNS, Git on one port, Webmin on other, Jelllyfin (I can live without that on data), HTTP server on 800/443, Homeassistant 8123,… I also had 3389 open for remote desktop to my Windows machine, etc.
You can reduce some of those ports by using a reverse proxy. Do that you can access git home assistant etc from 443 with a subhuman.
For reestablishing the connection, use the wrapper ‘autossh’. It can be run from systemd so that it’ll auto start and restart as you command it.
I have a couple instances using this that are absolutely rock solid after years.
How does the data throughput compare to cloudflare or wireguard?
Haven’t done any comparisons, but I’m using this in cases where my throughput isn’t too important. I can stream my webcam over it in HD, establish an rdp connection, ssh back through, and control web interfaces like octoprint. It’s acceptable.
The big advantage is that a $2/month vps gets a static IP, therefore I don’t have to worry about a VPN provider changing the IP or blocking ports.
Tunneling an encrypted connection through an encrypted connection is pretty much always a bad idea but when you’re evading CGnat or other network blocks, sometimes it’s the best we can conjure up on a whim.
I’m the grandparent commenter, not the parent commenter, but for my very limited use, it’s not noticeable, but I’m also typically just giving a remote machine access to a local web service. I’m not trying to tunnel anything bulk (or where latency is critical, which I’d think might be a larger issue).
The one thing I can say, though, without digging up numbers: ssh is fundamentally TCP-based. It forces ordering on anything it transports. While there are ways to cram UDP through an SSH tunnel, that’s gonna impose an unwanted constraint. if you want to provide access to anything that natively runs on UDP, I’d probably look into a UDP-based VPN – like Wireguard – that doesn’t do that.
That setup will yield off the chart latency if your VPS is not near your location 😱
For sure. If you really need to host thrn get the right package of internet services for that activity. If you need a fast fix for a small issue, this method gets around most ISP attempts to block hosting.