Starlink Port Forwarding: Why It Fails and 3 Ways Around It
Starlink port forwarding fails because of CGNAT and the stock router. Three fixes are a Priority plan public IP, IPv6, or an outbound LocalXpose tunnel.
Port forwarding doesnât work on standard Starlink connections due to two main issues. The Starlink router lacks a port forwarding page, and the residential and Roam plans use carrier-grade NAT (CGNAT), which means your public IP address is shared with other customers, causing inbound traffic to be dropped.
There are three ways to bypass this issue. You can pay for a Priority-tier plan with a public IP option and use your own router. Alternatively, you can use IPv6 if the connecting device supports it. Another option is to open an outbound tunnel with a service like LocalXpose, which works on any Starlink plan without requiring support.
Key Takeaways
- The Starlink router has no port forwarding interface, and the Standard Residential and Roam plans use CGNAT, making it impossible to forward ports.
- To get a real public IP, you need a Local Priority or Global Priority plan, along with a third-party router in bypass mode.
- IPv6 can bypass CGNAT, but it only works if the client also has IPv6.
- An outbound tunnel like LocalXpose can completely sidestep CGNAT and works on the cheapest Starlink plan.
Why Port Forwarding Fails on Starlink
There are two reasons why youâre having trouble with port forwarding on Starlink.
-
First, your Starlink router doesnât even have an option for port forwarding, you wonât find any settings for it in the Starlink app or on the routerâs website. In fact, Starlinkâs own help pages say that port forwarding isnât supported on their router and that using a third-party router that has a true public IP is the only way around this. This isnât something that can be fixed by looking for a hidden setting or by updating the routerâs software.
-
The second problem is that your connection is being routed through something called a CGNAT (Carrier-Grade NAT). Even if you could set up port forwarding, there still wouldnât be anything for the ports to forward to. When youâre on a standard Starlink plan, the router gives your household one of a big group of private IP addresses from the 100.64.0.0/10 bunch. These addresses are basically for this exact purpose (they come from a part of the internet that was specifically set aside by an internet governing rule, RFC 6598). But these addresses arenât accessible from the outside of your home. Since many, many other people are all connected to the same few actual, true public Starlink IP addresses, there is no way for Starlink to know which of those people a random incoming message on the internet is intended for.
How to Check If Youâre Behind CGNAT
To see if youâre on a CGNAT, first open the Starlink app and go to settings and then check your network status. Look at where it says WAN or IP address. If your number is between 100.64.0.1 and 100.127.255.254, you have a CGNAT. You can also verify this from any other device connected to your network by checking what your router says your WAN IP is and then searching âwhatâs my IPâ in a web browser. If the two donât match, somethingâs changing your address before it goes out onto the net, and for Starlink, that something is a CGNAT.
If your WAN IP looks like a normal one and isnât in that range, you either already have the setting for a public IP turned on or else itâs because of how IPv6 works.
Option A: Priority Plan + Public IP + Your Own Router
If you want to get around the usual way that Starlink does things with your internet, which is essentially the same as having a real, non-gatewayâd IP address, then youâll need to go for this more expensive and more complicated option. Itâs only available on two of their plans: Local Priority and Global Priority. Itâs not an option if youâre on the standard Residential or Roam plans. Enabled from your account dashboard, it hands your WAN one real, internet-routable IPv4 address via DHCP instead of a CGNAT one. Two catches: itâs dynamic, not static (Starlink doesnât offer static IPs), and it can change if you relocate the terminal.
Just having a public IP from Starlink isnât enough, because the Starlink router still has no port forwarding page. You need to use the bypass option in the Starlink app (found under Settings). If youâre on a Gen 3 router, plug your own router straight into one of the built-in Ethernet ports on the back; Gen 2 routers need a separate Starlink Ethernet adapter to do the same thing.
This is essentially what people are missing. When in bypass mode, your own router gets the public IP and thatâs where your port forwarding rules go. Note: switching out of this mode will wipe all settings so you canât just turn it on and off when you like.
If you want Starlink, Local Priority will set you back $55 a month, according to Starlinkâs own pricing information. Thatâs on par with the cheapest residential plan to start, and it climbs to $155 a month with the larger 500GB data bucket, on top of residential plans that otherwise run $55 to $130 a month. And then you still need to factor in the cost of an Ethernet adapter and a good router on top of that. If youâre just running one or two home servers, thatâs a pretty expensive for a feature that can be achieved in other ways. Where it earns the cost is when you specifically need a raw public IP of your own, a high-traffic game server, or equipment that has to answer on a routable address with nothing in the path, this is the only option on Starlink that gives you a true, direct, non-internet-service-provider-in-the-middle type of IP address.
Option B: IPv6
Starlink is a native IPv6 network. Youâll get a /56 block of IPv6 addresses for each Starlink connection, though the prefix isnât static, Starlink can reassign it, same as the IPv4 side. This also only works on Gen 2 and Gen 3 hardware; the original Gen 1 round-dish router doesnât support IPv6 at all. This is part of the DHCPv6-PD (Prefix Delegation) service, which is included at no extra charge, no matter what type of plan you have.
If you want to use this, whoeverâs connecting to you on the other end also needs IPv6, if they donât have it, thereâs no way around that. Lots of consumer ISPs, including some mobile carriers, still donât do IPv6 properly, so this really only works for linking two locations you control that both already have it. Even then, this isnât a fully standalone fix. The stock Starlink router blocks inbound IPv6 by default and has no firewall UI to open it, so just like Option A, you need bypass mode and your own router, one that supports DHCPv6-PD, to actually accept inbound connections. What you skip versus Option A is the Priority plan and public IP add-on; the hardware and bypass setup are the same.
Option C: Skip the Network Entirely with LocalXpose
You have two choices, pay more to Starlink each month or hope that the other end of the connection uses IPv6. Thereâs a third option that doesnât involve your Starlink plan, router mode, and CGNAT entirely: an outbound tunnel.
The idea: instead of asking the internet to reach in through your CGNATâd connection, a small client on your machine opens an outbound connection to a relay server with a real public IP. CGNAT only blocks unsolicited inbound traffic, so outbound connections pass through it without issue. The relay then forwards traffic back down that tunnel to your local service. LocalXpose is built for exactly this. It works on any Starlink plan, including the cheapest Residential tier, needs no Ethernet Adapter or bypass mode, and is usually running inside a few minutes.
Install the client with whichever method matches your platform:
# macOS (Homebrew)
brew install --cask localxpose
# Linux (Snap)
sudo snap install localxpose
# Windows (Chocolatey)
choco install localxpose
# Any platform with Node.js
npm install -g loclx
Sign up for free at localxpose.io, copy your access token from the dashboard, then log in from the terminal:
loclx account login

TCP Tunnels (Game Servers, SSH)
For anything that speaks raw TCP such as a Minecraft Java server, SSH, a database you need to reach
remotely, use loclx tunnel tcp:
loclx tunnel tcp --to localhost:25565

Anyone connects using us.loclx.io:20924 in their Minecraft client. No port forwarding, no public
IP, no bypass mode. SSH works the same way:
loclx tunnel tcp --to localhost:22

For an endpoint that doesnât change every time you restart the tunnel, reserve one first and pass it
with --reserved-endpoint.
UDP Tunnels (Minecraft Bedrock, VoIP)
Bedrock and most VoIP traffic run over UDP, which needs its own tunnel type:
loclx tunnel udp --to localhost:19132

The same command pattern covers a Mumble or other VoIP server, so just point --to at the local
port the service is listening on.
HTTP Tunnels (Dashboards, Web UIs)
For a web-based dashboard, a cameraâs admin UI, or a home automation panel, an HTTP tunnel gets you a URL with TLS already handled:
loclx tunnel http --to localhost:8080

Add --subdomain for a memorable name, or --reserved-domain if youâve attached your own domain.
This is the cheapest of the three: $8 a month, no hardware, no plan upgrade. It does not give you a public IP that will always be yours; instead, it uses LocalXposeâs relay, which acts as a go between, rather than having a direct connection.
However, for most of the reasons people hit CGNAT in the first place through a game server, remote access to a home server, checking a camera from outside the house, this is a good solution. A tunnel can run as long as you need it to: keep the process up with a service manager and a reserved endpoint, and the address stays the same whether you use it once a week or leave it running year-round.
Which Fix for Which Use Case
| Use case | Protocol | Best fix | Why |
|---|---|---|---|
| Minecraft server (friends only) | TCP/UDP | LocalXpose tunnel | Fastest setup, works on any plan, no extra hardware |
| Gaming server, public/high traffic | TCP/UDP | Priority plan + public IP, or LocalXpose | Needs a stable, direct connection for many concurrent players |
| RDP to a home PC | TCP | LocalXpose reserved TCP tunnel | Avoid exposing RDP directly on a raw public IP; keep strong auth on regardless |
| Security camera / NVR | TCP/HTTP | LocalXpose reserved tunnel, or Priority + public IP | A reserved tunnel stays up 24/7 on any plan; a public IP only makes sense if you already run your own router |
| Home server (Plex, NAS, self-hosted apps) | TCP/HTTP | LocalXpose tunnel | No router changes, works alongside the stock Starlink router |
| Remote site equipment (sensors, PLCs) | TCP | LocalXpose reserved tunnel, or Priority + public IP | Both handle always-on links; the tunnel needs no router swap at the remote site |
Troubleshooting
If youâre still having trouble with Starlink port forwarding even after following Option A, there are three things that could be going on.
- First, make sure Bypass Mode is on because if itâs not, your own router is probably still doing the routing and your manually set up port forward rules on it arenât going to work. See if the routerâs light is violet, if itâs not, then Bypass Mode must not be on. Also, ensure that youâve turned on the option for a public IP address in your online Starlink account. Note that the settings for Bypass Mode and a public IP are two separate things. Finally, double-check that the ports youâre trying to forward and the type of traffic (eg, which internet protocol) match what your specific service requires, and that the firewall on the device where the service is actually based isnât stopping it.
- It worked yesterday, but now it doesnât: Starlink uses a dynamic IP which can change when your internet connection is restarted or if you move your terminal. So, if youâve set up a domain name or pointed a friendâs game to a specific address, that address is no longer valid because it has changed. To solve this, you need a dynamic DNS client on your router. Alternatively, using a tunneling method wonât have this issue since the local endpoint remains the same and isnât affected by the changes in your Starlink IP.
- If you plug in another router after your Starlink one without turning off its bypass option, this will essentially create a double NAT. Any ports you try to forward on the second router wonât work since the first one is also translating everything. So you have two choices, either use the bypass feature correctly which will make the first router leave things alone, or change the second one to access point mode which will stop it from doing its own NAT.
Frequently Asked Questions
Does Starlink support port forwarding?
No, not on the standard router or the standard plans. See âWhy Port Forwarding Fails on Starlinkâ above for the two reasons.
Is the Starlink public IP free?
You donât pay extra for it, this is a feature that comes with certain plans (Local Priority and Global Priority). These plans already cost a bit more than the standard Residential plan, though, so essentially what youâre paying for is the upgraded plan itself, not this specific feature.
Can I host a game server on Starlink?
Yes, two ways. A LocalXpose tunnel gives you a live, accessible address within minutes on any plan, and it can stay up for as long as the server runs. A Priority-tier plan with the public IP option and your own router is the alternative, worth the extra cost mainly for a public server where you want players connecting straight to your own IP with no relay in between.
Does a VPN fix Starlink port forwarding?
Most VPNs donât really solve the problem and even those that do offer some form of port forwarding using their own servers which essentially adds extra delay and also makes you dependent on whatever rules that VPN company decides to apply. An outbound tunnel built for this, or Starlinkâs own public IP option, are more direct fixes.
Whatâs the difference between bypass mode and a public IP?
You need both, not one or the other. Bypass mode hands routing over to your own router; the public IP is what gives that router something worth forwarding to. See Option A above for the full setup.
Where This Leaves You
Priority plan if you need a raw public IP of your own, IPv6 if both ends already support it, and an outbound tunnel through LocalXpose for everything else, on whatever plan youâre already paying for and for as long as you need it up.
For the gaming case specifically, our guide to port forwarding a Minecraft server covers the Java and Bedrock setup in more detail. And if Starlink isnât the only connection giving you CGNAT trouble, the same tunnel approach works for T-Mobile Home Internet, which hits an almost identical wall.