Vast.ai CGNAT
Vast.ai behind CGNAT: why inbound ports fail
Learn why Vast.ai and GPU hosts behind CGNAT cannot receive inbound traffic and how to publish SSH, APIs, dashboards, and service ports.
Quick diagnosis checklist
- Confirm the service is listening locally.
- Confirm the service responds from the host itself.
- Check host firewall rules before changing router rules.
- Compare the host/router WAN address with the public IP seen by the internet.
- Test from a different network, not from the same LAN.
- If inbound traffic still times out, use a public forwarded endpoint instead of relying on upstream NAT.
Commands to run first
# What public IPv4 does the internet see?
curl -4 ifconfig.me
# What is listening locally?
ss -tulpen
sudo ss -tulpen
# Test a local web/API service
curl -v http://127.0.0.1:8080
curl -v http://127.0.0.1:8000/health
# Check common Linux firewalls
sudo ufw status verbose
sudo iptables -S
sudo nft list ruleset
Setup example
YOUR_SETUP_TOKEN is shown after signup/trial checkout and binds the client to your assigned endpoint.
curl -fsSL https://api.needports.com/install | sudo bash -s YOUR_SETUP_TOKEN --accept-tos
sudo needports setup --dry-run
sudo needports expose custom --public-port 30000 --local-port 8080 --name "Service" --confirm --restart
curl -v http://your-needports-endpoint:30000
Security notes
- Expose only services you intend to make public.
- Use SSH keys, HTTPS/TLS, app authentication, or IP restrictions where appropriate.
- Never expose the Docker daemon socket or unauthenticated admin panels.
- Keep a private fallback access method for critical systems.
FAQ
- Why is my Vast.ai host online but not reachable?
- The host may be able to make outbound connections while inbound traffic is blocked by CGNAT, upstream firewalling, Docker bind settings, or a local firewall.
- Does Vast.ai always provide public inbound ports?
- Not always. Your machine, ISP, datacenter, or rented network path may still prevent unsolicited inbound connections.
- Can NeedPorts expose SSH for a Vast.ai host?
- Yes, map an assigned public port to local SSH, then connect with ssh -p. Use SSH keys and avoid password-exposed root login.
- Can I expose Docker services or APIs?
- Yes. Expose the host port that Docker publishes locally, then test the public NeedPorts endpoint from outside.
- Do I need router access?
- No. NeedPorts uses an outbound tunnel, so it can work when router access or ISP port forwarding is unavailable.
Ready for a stable public endpoint?
Start with a NeedPorts trial, map one service, and test the public port from another network before depending on it for production traffic.
Start a trialRead more guides