You are three minutes from finishing the raid. Then the screen freezes, the party scatters, and your router quietly hands you a different address than the one you had a second ago. Your Starlink public IP changed mid-session, and the game server treated it as a different person trying to use your login.
If you are asking why did my public IP change on Starlink, if you are wondering why would my public IP change on Starlink when nothing on your side moved, or you have noticed your Starlink IP address keeps changing every time the router restarts, this is one of the most common complaints about satellite internet, and it is not a fault. Starlink assigns addresses differently from a cable or fibre ISP, and that difference shows up as dropped game sessions, broken VPN tunnels, remote access that stops working, and firewall rules that were correct yesterday.
The good news is that the most effective fix is free and already switched on for you. Most guides never mention it. This one starts there.
"The thing that surprises people is that Starlink is not being unreliable when it does this. It is doing exactly what a network built on carrier-grade NAT has to do, and every mobile carrier does the same thing without anyone complaining, because phones do not host game servers. What frustrates me is watching people pay for a plan upgrade or a third-party static IP service to solve a problem that IPv6 already solves for nothing on the plan they are on. Starlink hands every subscriber a routable IPv6 prefix, including Residential. If the thing you are trying to reach also speaks IPv6, the CGNAT problem simply does not apply to that connection. Before spending anything, find out whether that is your situation."
Quick Answer
Starlink puts Residential and Roam customers behind Carrier-Grade NAT, sharing one public IPv4 address between many subscribers from the 100.64.0.0/10 range. That shared address is reassigned as the network balances load, so the address the internet sees for you changes without warning.
Five ways to deal with it, cheapest first:
- Use IPv6. Free, already active on every plan, and it bypasses CGNAT entirely for anything that also speaks IPv6.
- Mesh VPN such as Tailscale, ZeroTier or Cloudflare Tunnel. Free tiers, survives address changes.
- Dynamic DNS such as DuckDNS. Free, but only helps inbound connections.
- Priority plan public IPv4. Paid, and only Priority plans can enable it.
- Third-party static IP service. Expensive, and the last resort.
Check what address you have right now with our IP lookup tool. If it starts with 100.64 through 100.127, you are behind CGNAT.
What Does Public IP Change Mean on Starlink, and Why Does It Happen?
If the notice you saw read Starlink your public IP changed, or you are searching public IP just changed Starlink because it happened thirty seconds ago, and you want the public IP changed Starlink meaning in one line and want the Starlink public IP changed meaning in one line, here it is: the address the internet sees for you is not yours. It belongs to Starlink and is shared, so when their network reassigns it you get a different one. Nothing on your equipment has changed.
So why does Starlink change public IP address assignments at all? Because Starlink runs its Residential and Roam service behind Carrier-Grade NAT. Your dish receives an address from the 100.64.0.0/10 block, which is reserved specifically for this purpose and is not routable on the public internet. Outbound traffic then leaves through one of Starlink's shared public addresses, and which one you get depends on how the network is balancing load at that moment.
The reason is straightforward arithmetic. IPv4 has about 4.3 billion addresses in total, they ran out years ago, and Starlink has grown from a few hundred satellites in 2020 to more than nine thousand. Assigning every subscriber their own public IPv4 address is not possible. Sharing them is not a design shortcut, it is the only option. Our guide to how Starlink addressing works covers the architecture in more detail.
| What happens | How often | Does your public IP change? |
|---|---|---|
| Router or dish reboot | Whenever you restart | Usually, on Residential. On a Priority plan with a public IP, the reservation system holds it. |
| Network maintenance | Weekly to monthly | Often |
| Satellite handover | Every few minutes | No. Handovers are seamless and do not move your address. |
| Moving the hardware | When you relocate | Yes, including on Priority plans |
| Load balancing | Unpredictable | Yes, and this is the one with no trigger you can see |
A correction worth making
A lot of guides, including an earlier version of this one, say that a Starlink public IP is lost every time you reboot. Starlink's own documentation states that a reservation system retains the public IPv4 address and the IPv6 prefix even when the system is switched off or restarted. That reservation applies to the public IP option on Priority plans. On Residential CGNAT there is no address reserved to you in the first place, which is why a reboot there often does land you somewhere new.
Where the documentation and the field reports disagree
Starlink's documentation says the reservation holds the public address through a reboot. Plenty of people running the public IP option report that theirs moved after a restart anyway. Both of those can be true at once: a reservation is not a lease you own, it is an intention the network keeps until it has a reason not to, and a reboot is a reasonable moment for the network to reconsider.
The practical reading is that a reservation makes a change unlikely rather than impossible. If your setup would break badly from one unexpected change, do not build it on an address that Starlink is only promising to try to keep. Build it on a hostname, a tunnel, or IPv6, all of which stop caring what the address is.
How Often Does Starlink Change Your IP Address?
There is no fixed schedule, which is why how often does Starlink change IP address has no clean answer, and neither does how often does Starlink IP change put another way. On Residential, expect a new address on most reboots and occasionally with no trigger at all. On a Priority plan with the public IP option, weeks or months is normal. Does Starlink IP address change on its own, without you touching anything? Yes, during load balancing and maintenance, and that is the case people find hardest to diagnose because nothing they did caused it.
What "persistent IP" actually means
Starlink offers a public IPv4 policy as an option, and it is frequently described as a persistent or static IP. It is neither, precisely. Starlink states plainly that truly static IPs are not available. What the public IP option gives you is a routable address assigned by DHCP, held by a reservation, and reachable from the internet, which is what makes inbound connections and port forwarding possible.
It will still change if you move the hardware to another location, and Starlink reserves the right to change it during network work. In practice it holds for weeks or months rather than hours, which is a different class of problem from Residential CGNAT, but it is not a guarantee and should not be treated as one.
Before Anything Else: Which Problem Do You Actually Have?
This is the step most guides skip, and skipping it is why people spend money on the wrong fix. There are four different things that look identical from the sofa, and only one of them is the CGNAT problem this page is mostly about. The other three have different answers, and two of them are free.
Open your router's admin page and find the WAN address. If you are using the Starlink router on its own, that is the Starlink app or 192.168.1.1. If you have your own router behind it, look at that one instead, because that is the address that matters. Then match what you see against this table.
| Your WAN address starts with | What it actually is | Can you fix it yourself? |
|---|---|---|
| 100.64 – 100.127 | CGNAT. Starlink's shared address pool. This is the one that changes on you. | Not directly. Use IPv6, a mesh VPN, or a Priority plan. |
| 192.168.x.x | Double NAT. Your own router is sitting behind the Starlink router, and both are translating. This is not CGNAT and not Starlink's doing. | Yes, and for free. See below. |
| 206.214.239.194 | A placeholder. The dish has not reached a Starlink point of presence yet, so it has no address to give you. | Wait, or check for obstructions. |
| Anything else routable | A real public IPv4. The Priority public IP option is active. | Nothing to fix. |
The mistake worth catching early
A 192.168.x.x WAN address and a 100.64.x.x WAN address look equally wrong to someone who just wants port forwarding to work, and they get treated as the same problem constantly. They are not. The first one you caused, which is good news, because it means you can undo it in about five minutes without paying anybody. The second one is Starlink's architecture and no router setting will change it.
Fixing Double NAT and the 192.168.1.1 Subnet Clash
If your own router reported a 192.168.x.x WAN address, two routers are running NAT one behind the other. Outbound browsing works fine, which is why people live with it for months, but port forwarding fails, some VPNs refuse to establish, and a few games flag it as a strict NAT type.
The fix is bypass mode, which turns off the Starlink router's routing and Wi-Fi and lets your own router take the address directly. On Gen 2 and Gen 3 hardware it is a toggle in the Starlink app under Settings. Turn it on, reboot both, and your router should now show whatever Starlink is actually handing out, whether that is a CGNAT address or a public one. Our walkthrough of Starlink bypass mode covers the toggle and what changes afterwards.
Do this before you plug anything in
The Starlink router hands out addresses on 192.168.1.x, which is the single most common home and office LAN range in the world. If your existing network is also on 192.168.1.x, connecting Starlink creates a subnet clash, and what happens next depends on your router. Some detect it and quietly renumber your entire LAN to get out of the way, which breaks every device you had given a fixed address to. Others do not detect it and simply stop routing.
Move your own LAN to something nothing else uses first — 192.168.10.x is a reasonable choice — update the DHCP gateway by hand, fix any devices with static addresses, and only then connect Starlink. Doing it in that order takes ten minutes. Doing it in the other order takes an afternoon.
Which Starlink hardware do you have?
The instructions above do not apply equally to every dish, and this trips people up because most guides do not say which generation they were written for.
- Gen 1 — the round dish. There is no bypass mode option at all. Treat the Starlink router as your main router and put your own hardware behind it in access point mode instead.
- Gen 2 — rectangular dish, no built-in Ethernet. You need the Starlink Ethernet adapter before a third-party router can be connected, then bypass mode becomes available.
- Gen 3 — rectangular dish with the gateway included. Ethernet ports are built in and bypass mode is in the app. Nothing extra to buy.
Keeping the Starlink app working afterwards
Once bypass mode is on, the Starlink app often loses its local connection to the dish and shows disconnected even though your internet is fine. The dish still answers on 192.168.100.1, but your router does not know how to reach it. Add a static route on your own router for 192.168.100.0/24 pointing out of the WAN interface and the app's local statistics come back. If you would rather do this from the router's own admin page, our Starlink router login guide covers getting into the interface in the first place.
How to Check Whether Your Starlink IP Has Changed
Four ways, from the thirty-second version to the one that emails you.
The quick check
Not sure the connection is even Starlink? Anyone asking am I on Starlink can settle it in one step, because the tool names the network the address belongs to. The fastest way to confirm a public IP change Starlink made without telling you is our IP lookup tool. It shows the address the internet currently sees for you, along with the network it belongs to. Note it down the first time, and compare whenever something stops working.
The router's own view
Open the Starlink app, or the router page at 192.168.1.1, and look at the WAN address. There are three things you might see, and each means something different:
- An address in
100.64.0.0/10means you are behind CGNAT. Normal for Residential and Roam. - An ordinary public address means the public IP option is active. Priority plans only.
206.214.239.194means the dish has not reached a Starlink point of presence and has not been given an address yet. This one confuses people because it looks like a real public IP. It is not yours, it is a placeholder, and it means the connection is still coming up.
From a terminal
# IPv4
curl -4 https://icanhazip.com
# IPv6 - if this returns an address, you have working IPv6
curl -6 https://icanhazip.com
Run both. The second one matters more than most people realise, and section 3 explains why.
Can You Change Your Starlink IP on Purpose?
Sometimes the reason people search change IP Starlink is not that it moved on its own but that they want it to. Usually because the address you landed on is carrying somebody else's reputation and you are being CAPTCHA'd or blocked. On Residential CGNAT, rebooting the router is the only lever you have, and it may or may not put you somewhere new. On a Priority plan with the public IP option the reservation works against you here, and support is the route.
Worth checking before you reboot repeatedly: run the address through our IP fraud score checker. If it comes back clean, the address is not your problem and rebooting will not help.
Automatic monitoring
#!/bin/bash
# Notify on Starlink IP change
STATE=/tmp/starlink_ip
OLD=$(cat "$STATE" 2>/dev/null)
NEW=$(curl -4 -s --max-time 10 https://api.ipify.org)
# Do nothing if the lookup failed - an empty result is not a change
[ -z "$NEW" ] && exit 0
if [ "$OLD" != "$NEW" ]; then
echo "Starlink IP changed: ${OLD:-unknown} -> $NEW" \
| mail -s "Starlink IP changed" you@example.com
echo "$NEW" > "$STATE"
fi
Make it executable with chmod +x monitor.sh and add it to cron with */5 * * * * /path/to/monitor.sh. The empty-result guard matters: without it, every failed lookup emails you a false alarm.
Solution 1: Use IPv6, Which You Already Have
Cost: nothing. Already active on your plan. This is the option most Starlink guides skip entirely, and for a large number of people it is the whole answer.
Starlink supports native IPv6 across every router, every kit version and every service plan, Residential included. Each subscriber is delegated a /56 IPv6 prefix, and unlike the IPv4 side, those addresses are globally routable. There is no carrier NAT in front of them.
That distinction is the important one. The CGNAT problem is an IPv4 problem. It does not apply to your IPv6 traffic at all. If the thing you are trying to reach also has IPv6, the connection goes straight through, and the shared IPv4 address that keeps changing is simply not involved.
What IPv6 does and does not solve
It solves: reaching a home server, NAS, camera or SSH box from outside, when both ends have IPv6. No port forwarding, no DDNS, no plan upgrade.
It does not solve: anything where the far end is IPv4-only, which still includes a lot of game servers, some corporate VPN concentrators, and most public Wi-Fi you might be connecting from.
It also does not stop game disconnections caused by your outbound IPv4 changing mid-session. That needs section 4.
Two things to check before relying on it. Your prefix can change when the network reassigns it, so give devices a hostname through DNS rather than hardcoding an address. And IPv6 addresses are routable, which means your firewall is now the only thing between the internet and your devices. On IPv4 the CGNAT was doing that job whether you wanted it or not.
Test whether it is working: curl -6 https://icanhazip.com. An address back means IPv6 is live on that machine. Nothing back usually means the device or the third-party router in the path has IPv6 switched off, which is worth fixing before you spend money on anything else.
Solution 2: A Mesh VPN That Survives the Change
Cost: free for personal use. Tailscale, ZeroTier and Cloudflare Tunnel all have usable free tiers.
A traditional site-to-site VPN is configured against a specific endpoint address, so it breaks the moment that address moves. Mesh VPNs are built the other way round. Devices identify each other by key rather than by address, and a coordination server keeps track of where everyone currently is. When Starlink moves you, the tunnel re-establishes itself and the applications on top of it usually do not notice.
| Option | Setup | Good for | Free tier |
|---|---|---|---|
| Tailscale | Install, sign in, done | SSH, RDP, file shares, cameras | Yes, personal use |
| ZeroTier | Moderate | Custom networks, self-hosting the controller | Yes, limited nodes |
| Cloudflare Tunnel | Easy | Web services only, HTTP and HTTPS | Yes |
Worth being honest about gaming here, because it is why most people arrive on this page. A mesh VPN will not stop a game disconnecting when your outbound address changes, because the game sees the new address regardless of what tunnels you have running. It works well for game servers you host yourself, for voice servers, and for remote play over Parsec or Moonlight. It does not fix the mid-raid drop. Nothing does, short of an address that stays put.
Solution 3: Dynamic DNS
Cost: free. Solves one problem well and nothing else.
Dynamic DNS keeps a hostname pointed at whatever address you currently have. Instead of remembering an address that keeps moving, you connect to something like myhome.duckdns.org and a small client on your network updates the record whenever the address changes.
| Service | Free tier | Update speed | Best for |
|---|---|---|---|
| DuckDNS | Yes | Under two minutes | Home users who want it simple |
| Cloudflare DDNS | Yes | Under a minute | Anyone with their own domain |
| No-IP | Three hostnames | One to two minutes | Several devices |
The limitation nobody mentions until it is too late
On Residential CGNAT, Dynamic DNS points a hostname at an address that does not reach you. The address it resolves to is Starlink's shared carrier address, and inbound connections to it stop at Starlink's NAT rather than arriving at your router. DDNS is genuinely useful once you have a public IP, whether through IPv6 or a Priority plan. On plain Residential IPv4 it will resolve correctly and still fail to connect, which is a maddening thing to debug if you do not know it in advance.
Solution 4: A Priority Plan With the Public IP Option
Cost: this is the paid option, and it is not the price most articles quote.
Starlink restructured its business plans in 2025. Business Priority and Mobile Priority are gone, replaced by Local Priority for use within one country and Global Priority for international and maritime use. Existing customers were moved across rather than grandfathered, so older guides describing a "Starlink Business plan" are describing something that no longer exists under that name.
The public IPv4 option is available on these Priority plans. It is not offered to Residential or Roam accounts, so if you are on Residential and looking for an IP policy setting in your dashboard, it is not hidden, it is simply not there for your plan.
| Plan | Rough US cost | Public IP option? |
|---|---|---|
| Residential 100 Mbps | About $50/month | No |
| Residential 200 Mbps | About $80/month | No |
| Residential Max | About $120/month | No |
| Local Priority | Around $30/month terminal access, plus data bought in blocks of 50GB or 500GB | Yes |
| Global Priority | Around $150/month terminal access, plus data blocks at a higher rate | Yes |
Two things about that table. Priority plans do not include unlimited high-speed data the way Residential does. Once the data block is used, speeds drop to roughly 1 Mbps down until you buy more or the month rolls over. And Starlink has changed this pricing three times since early 2025, so treat these figures as the shape of the cost rather than a quote, and check the current numbers on Starlink's own site before switching.
Turning the public IP on, once you are on a Priority plan
- Sign in to your Starlink account on the web or in the app.
- Open the service line you want to change.
- Find the IP policy setting and switch it from default to public.
- Reboot the dish and router so the new policy is picked up.
- Confirm with our IP lookup tool that you are no longer seeing a
100.64.x.xaddress.
Once it is on, the reservation system keeps that address across reboots and power cuts. Moving the hardware to a different location will change it, and Starlink can change it during network work, so it is stable rather than static. For most purposes that difference does not matter. For anything that depends on a genuinely fixed address, it does, and section 7 covers that.
Solution 5: A Third-Party Static IP
Cost: the highest on this page. Only worth it when a genuinely fixed address is a hard requirement.
Starlink does not sell a static IP on any plan. If you need one, it comes from somewhere else: a provider gives you a fixed address at their end and tunnels it down to your router, so the address the internet sees belongs to them and never moves regardless of what Starlink does underneath.
This is the right answer in a narrow set of cases. Payment processors and corporate systems that whitelist a specific source address. Regulated environments where the address is written into a compliance document. Site-to-site VPNs into equipment that cannot be reconfigured. If none of those describe you, one of the four cheaper options above almost certainly does the job.
Pricing varies widely by provider and by how much traffic you push through the tunnel, and the tunnel adds latency, which matters if the reason you wanted a stable address was gaming in the first place. Our CGNAT bypass guide goes through the options in detail.
What Breaks When the Address Changes
Games disconnect
Most multiplayer games tie a session to the address it started from. When the address changes mid-session the server sees the same credentials arriving from somewhere new and ends the session, which is the correct behaviour for an account-theft check and infuriating when it is just your ISP. MMO raids drop, competitive matches count as a loss, and consoles handle it no better than PCs. None of the five solutions above prevents this reliably except a stable public IP, because the game sees your outbound address no matter what tunnels you are running.
VPN tunnels drop
IPsec site-to-site tunnels configured against a fixed peer address fail immediately and often do not recover on their own. WireGuard handles it better because it re-discovers the peer, though there is still a gap. If your working day depends on a tunnel staying up, a mesh VPN is the fix, and it is free.
Remote access stops working
Anything reached by typing an address rather than a hostname breaks: SSH, RDP, cameras, a NAS, home automation. This is the case Dynamic DNS was designed for, with the CGNAT caveat above, and the case IPv6 solves outright when both ends support it.
Firewall rules and whitelists go stale
Any rule that permits a specific source address is worthless the moment that address moves. Cloud consoles, payment gateways and corporate systems that whitelist your office address will start refusing you without any obvious explanation. If you are being blocked and cannot work out why, our guide to being blocked by websites covers how to tell a stale whitelist from a reputation problem, and the IP fraud score checker tells you whether the address you landed on carries someone else's history.
One thing worth knowing about shared addresses
Because CGNAT puts many subscribers behind one address, you inherit whatever the previous occupants did with it. Land on an address someone used for spam or scraping and you may hit CAPTCHAs, blocked sign-ups or refused checkouts through no fault of your own. Rebooting genuinely can help here, because it may move you to a cleaner address. It is the one situation where the thing that normally causes the problem is the fix.
Which One Should You Actually Use?
Work down this list and stop at the first one that fits.
| If you want to | Use | Cost |
|---|---|---|
| Reach a home server or camera from outside | IPv6 first, then a mesh VPN | Free |
| Keep a work VPN alive through changes | Tailscale or ZeroTier | Free |
| Use a name instead of an address | Dynamic DNS, once you have a public IP | Free |
| Stop games dropping mid-session | Priority plan with the public IP option | Paid |
| Satisfy a whitelist that will not move | Third-party static IP | Expensive |
Start by finding out what you actually have. Run our IP lookup and check whether the address begins with 100.64, then run curl -6 https://icanhazip.com to see whether IPv6 is already working. Those two answers decide which of the five options is yours, and quite often the free one is enough. For the underlying architecture see our Starlink IP addressing guide, and if your concern is gaming latency rather than disconnections, changing your IP does not reduce ping explains why.
What Address Do You Have Right Now?
If it starts with 100.64 you are behind CGNAT, and this page tells you which of the five options applies to you.