Bypass CGNAT: Reach Your Home Server or Raspberry Pi from Anywhere
Description and use
Problem: Home server behind CGNAT cannot be reached via port forwarding. Solution: open an outbound SSH reverse tunnel to free.pinggy.io, obtaining a public HTTPS URL or SSH access, and run it as a systemd service for persistence.
Problem
Home servers or Raspberry Pi behind a Carrier‑Grade NAT cannot be reached via traditional port forwarding.
Outcome
By establishing an outbound SSH reverse tunnel to free.pinggy.io, the Pi becomes reachable over HTTPS or SSH from any network, eliminating the need for port forwarding and bypassing CGNAT.
Workflow
- Confirm CGNAT by comparing router WAN IP to public IP and checking for 100.64.0.0/10 range.
- Enable SSH on the Pi and secure it with key‑based authentication.
- Create an outbound SSH reverse tunnel:
ssh -p 443 -R0:localhost:8080 free.pinggy.iofor HTTP services orssh -p 443 -R0:localhost:22 [email protected]for SSH. - Run the tunnel as a systemd service with
Restart=alwaysandServerAliveInterval=30to keep it alive. - Optionally use the Pinggy CLI or configure a custom domain on a paid plan for a persistent URL.
- Apply security best practices: disable password logins, use TLS tunnels, keep software updated, and monitor traffic via Pinggy’s web debugger.
Evidence
If your ISP uses Carrier‑Grade NAT (CGNAT), your router never gets a publicly reachable IP address.
Run ssh -p 443 -R0:localhost:8080 free.pinggy.io on the Pi to get a public HTTPS URL, or ssh -p 443 -R0:localhost:22 [email protected] to expose its SSH port.
A tunnel started in a terminal dies when the session closes, and the free plan has a 60‑minute time limit per tunnel.
- Record date: 2026-10-02T15:55:42.577Z