What Is CGNAT and How Does It Affect Proxies?
CGNAT, or carrier-grade NAT, makes many users share one public IP. Learn how it works, why it powers hard-to-ban mobile proxies, and how to detect it yourself.

CGNAT, short for carrier-grade NAT, is the reason the IP on your phone is almost never the address a website actually sees. Carriers park hundreds or thousands of subscribers behind a single public IPv4 address, and that one design choice quietly shapes how mobile proxies, residential proxies, and bot detection all behave. This guide explains what CGNAT is, why every major carrier runs it, how port sharing works, what it means for proxy reputation and blocking, and how to tell whether your own connection sits behind it.
Key takeaways
- CGNAT (carrier-grade NAT, also called large-scale NAT) lets one public IPv4 address serve many subscribers at once, using the shared 100.64.0.0/10 range defined in RFC 6598.
- Carriers adopted it because IPv4 ran out: IANA handed out its last central blocks in February 2011, so buying a public IP per customer stopped being an option.
- Because real users share each carrier IP, sites can't ban that address without hitting legitimate customers. That collateral-damage problem is exactly why mobile proxies are hard to block.
- Shared reputation cuts both ways: you inherit the flags of everyone else on the IP, and CGNAT's per-subscriber port limits cap how many connections you can hold open.
What CGNAT Is
CGNAT (carrier-grade NAT) is network address translation applied at the scale of an entire internet provider rather than a single home. Standard NAT is what your home router does: it maps the private addresses on your LAN (like 192.168.1.20) to your one public IP so every device can share it. Carrier-grade NAT adds a second, much larger translation layer inside the provider's network, so many separate customers, each already behind their own router, also share a smaller pool of public addresses.
The result is a chain of translations often called NAT444: your device's private IP, then a carrier-internal address, then the public IP the rest of the internet sees. Engineers also call it large-scale NAT (LSN). Mobile networks were the first to lean on it, and fixed-line ISPs now use it too.
The key consequence is simple. The public IP a website logs is not yours alone. It's a shared front door for a crowd.
A quick refresher on NAT
If IP addressing itself is fuzzy, our explainer on what an IP address is and why it matters for proxies covers public versus private addresses first. Short version: private ranges (RFC 1918) are reused inside every network and never routed on the open internet, while public addresses are globally unique. NAT is the translator between the two. CGNAT just stacks a second translator on top.
Why Carriers Run CGNAT: IPv4 Exhaustion
There aren't enough IPv4 addresses to go around. The 32-bit IPv4 space tops out at about 4.3 billion addresses, and IANA allocated its final central blocks to the regional registries on 3 February 2011 (IANA, 2026). The regional registries then ran dry over the following years. There are far more phones, routers, and IoT devices online than there are public IPv4 addresses to assign them.
IPv6 is the long-term fix, but adoption is partial and uneven, so carriers still have to serve today's traffic over IPv4. CGNAT is the bridge. Instead of buying a scarce, expensive public address for every subscriber, a carrier assigns each customer an address from a shared range and multiplexes many of them onto each public IP it owns. One public address can front a large block of subscribers, which stretches a finite pool across a growing customer base.
That economic pressure is the whole story. CGNAT is not a security feature and not a privacy feature. It's an accounting fix for a resource that ran out.
Scraping at scale? Skip the blocks.
Fast, unblockable datacentre proxies with unlimited bandwidth.
How One Public IP Serves Many Users
The mechanism is port multiplexing. Every TCP or UDP connection is identified by a four-part tuple: source IP, source port, destination IP, destination port. The port field is 16 bits, so there are 65,536 ports per IP per protocol. The CGNAT device hands each subscriber a slice of that port range and rewrites the source port on every outbound connection, so replies route back to the right customer.
Give each subscriber a budget of, say, 2,000 ports, and a single public IP can back dozens of subscribers holding connections at the same moment, plus many more across a day as sessions open and close. Carriers oversubscribe on purpose, betting that not everyone is at their port ceiling at once.
Two practical effects fall out of this:
- Port exhaustion. A subscriber who opens hundreds of simultaneous connections (many browser tabs, a torrent client, a chatty app) can hit their port budget and see new connections fail even though "the internet works." That's a CGNAT symptom, not a bandwidth problem.
- No inbound reachability. Your public-facing port mappings are created on demand for outbound traffic, so nothing on the internet can open a fresh inbound connection to you. Port forwarding, self-hosting a server, or receiving an unsolicited connection generally won't work behind CGNAT without a relay.
How CGNAT Affects Proxies
CGNAT reshapes the single most important attribute of a proxy IP: its reputation. When one public address represents many real people, a website's anti-bot system faces a dilemma. Blocking that IP stops the bot, but it also blocks every legitimate customer sharing it. For a busy carrier IP, that can be a large, valuable group of real users. Most sites won't take that hit, so they treat shared carrier IPs far more gently than a datacenter IP that clearly belongs to one hosting tenant.
That's the upside for proxy users. The downside is that shared reputation flows in both directions. You don't control who else sits behind the same public IP, so you inherit their behavior. If another subscriber hammered a target an hour ago, you might land on a soft-flagged address. And CGNAT's port limits plus the lack of inbound reachability constrain how a proxy can be operated on that connection.
Here's how CGNAT touches each common proxy type:
| Proxy type | Sits behind CGNAT? | Public IP shared with real users? | Ease of IP-banning by sites | Why |
|---|---|---|---|---|
| Datacenter | No | No | Easy | One hosting tenant per IP, ASN is obviously commercial, low collateral damage |
| Static residential / ISP | Sometimes | Rarely (often 1:1) | Moderate | Registered to a consumer ISP, but a dedicated static IP has little sharing |
| Rotating residential | Often | Yes, when the ISP runs CGNAT | Hard | Consumer ISP registration plus shared, rotating addresses raise collateral cost |
| Mobile (4G/5G) | Almost always | Yes, heavily | Hardest | Carrier CGNAT packs many subscribers per IP, so bans hit real customers |
The pattern is consistent: the more real human traffic shares an IP through CGNAT, the more a website has to lose by banning it, and the more durable that IP is for legitimate data collection. Our guides on ISP proxies and residential proxy types and use cases go deeper on where each type sits.
Why Mobile Proxies Exploit CGNAT
Mobile proxies are the clearest example of CGNAT working in a proxy user's favor. Cellular carriers run CGNAT almost universally, and their public IP pools are comparatively small next to a huge subscriber base. So a single mobile IP can represent an enormous, constantly shifting crowd of phones.
Two properties make that valuable:
- Bans are expensive for the target. Blocking a mobile carrier IP risks cutting off thousands of real mobile users of the site or app. Detection systems know this, so mobile IPs carry a high baseline trust score and get challenged less often.
- Natural rotation. Behind CGNAT, the carrier reassigns public addresses as leases expire or as devices reconnect. Mobile proxy providers trigger this on purpose, for example by cycling the radio connection, so the exit IP moves to a fresh carrier address from the same trusted pool without an obvious pattern.
The trade-off is throughput and pool size. Mobile IP pools are smaller and slower than datacenter ranges, and you share real cellular bandwidth. For targets with aggressive detection, that trade is often worth it.
How to Detect CGNAT on Your Connection
You can confirm CGNAT in a couple of minutes. The core test is comparing the address your router thinks it has against the address the internet sees.
- Check your router's WAN IP. Log into your router's admin page and find the WAN or internet IP. Note it.
- Check your public IP. From the same network, look up the address a website sees (for example by requesting an IP-echo service).
- Compare. If the two differ, and especially if the WAN IP falls in
100.64.0.0/10(or an RFC 1918 range like10.x.x.x), your traffic is being translated again upstream. That's CGNAT.
A traceroute gives a second signal: a hop in the 100.64.0.0/10 range right after your gateway is the carrier NAT. A third tell is behavioral. If port forwarding never works and inbound connections always fail, you're very likely behind CGNAT.
The shared-range check is easy to script. This snippet flags whether any address is CGNAT shared space:
import ipaddress
CGNAT = ipaddress.ip_network("100.64.0.0/10") # RFC 6598 shared space
def is_cgnat(ip: str) -> bool:
return ipaddress.ip_address(ip) in CGNAT
for ip in ["100.72.14.3", "203.0.113.7", "10.0.0.4"]:
print(ip, "-> CGNAT" if is_cgnat(ip) else "-> not CGNAT")
# 100.72.14.3 -> CGNAT
# 203.0.113.7 -> not CGNAT
# 10.0.0.4 -> not CGNAT
From a website's side, detection is different. IP intelligence services label the address's ASN as a mobile or fixed-line carrier and observe many distinct device fingerprints on one IP, which is a signature of CGNAT rather than a single automated client.
Routing Through a Carrier IP With the SparkProxy API
If your goal is to have a target see a trusted, CGNAT-backed carrier or residential exit instead of your own address, you don't have to build the plumbing yourself. The SparkProxy Scraping API routes the request through a residential or mobile exit and returns the page. Set premium_proxy to route through a residential pool, add device to request a mobile profile, and country_code to pick the exit country:
curl -H "X-API-Key: YOUR_API_KEY" \
"https://scrape.sparkproxy.io/api/v1?url=https://httpbin.org/ip&premium_proxy=true&country_code=US&device=mobile"
The same call in Python, reading back the exit IP the target logged:
import requests
resp = requests.get(
"https://scrape.sparkproxy.io/api/v1",
headers={"X-API-Key": "YOUR_API_KEY"},
params={
"url": "https://httpbin.org/ip",
"premium_proxy": "true", # residential exit
"device": "mobile", # request a mobile profile
"country_code": "US", # exit country
},
timeout=60,
)
print(resp.status_code, resp.text)
The IP echoed back is the shared carrier or residential address, not yours. If the call returns 429, you've hit the concurrency limit and should back off; 510 means the scrape failed (often anti-bot or timeout) and is safe to retry on a fresh exit. Because these exits ride on CGNAT-shared reputation, per-IP bans are far less likely to stick than they would on a datacenter address. Requests travel over standard HTTP, so if you'd rather wire proxies in directly, our note on proxy protocols (HTTP, HTTPS, SOCKS5) covers the connection details.
Frequently asked questions
FAQ
CGNAT stands for carrier-grade NAT, sometimes written CG-NAT or CGN and also called large-scale NAT (LSN). It's network address translation performed at the scale of an entire internet provider, so many subscribers share a smaller pool of public IPv4 addresses.
Not exactly. RFC 6598 defines 100.64.0.0/10 as "Shared Address Space," a separate reservation from the RFC 1918 private ranges. It's meant only for the link between customer equipment and a carrier's NAT, and it should never appear as a routable address on the public internet.
Partly, but not for privacy. CGNAT replaces your address with a shared public one, so a site sees the carrier IP instead of a per-customer address. But you don't control that IP, can't choose its location, and share its reputation with strangers. A proxy gives you a chosen exit IP that you control, while CGNAT is just how your carrier conserves addresses.
Because mobile proxies use carrier IPs that sit behind CGNAT, where hundreds or thousands of real subscribers share each public address. Banning that IP would also block legitimate paying customers, so detection systems rarely do it. That collateral-damage cost is what makes CGNAT-backed mobile IPs durable.
Generally no. CGNAT only creates port mappings for outbound connections, so unsolicited inbound traffic has nowhere to land. Hosting a server, port forwarding, or peer-to-peer inbound connections usually fail unless you use a relay, a tunnel, or ask your ISP for a dedicated public IPv4.
Compare your router's WAN IP to the public IP a website sees. If they differ, or if the WAN IP is in 100.64.0.0/10, you're behind CGNAT. A traceroute that shows a 100.64.x.x hop right after your gateway, or port forwarding that never works, confirms it.
Get 50% off your first purchase
Premium datacentre proxies with unlimited bandwidth. Use the code at checkout.
Offer ends soon โ claim it before it's gone
Related articles

What Is Proxy Chaining and When to Use It
Proxy chaining routes your traffic through two or more proxies in sequence for layered anonymity. Learn how it works, the tradeoffs, and when to use it.

What Is a Shared Datacenter Proxy? Cost and Risks
A shared datacenter proxy splits one pool of datacenter IPs across many users. Learn how sharing works, the bad-neighbor risk, and when it's good enough.

What Is a Dedicated Datacenter Proxy?
A dedicated datacenter proxy is a datacenter IP assigned to one user. Learn how exclusivity works, its reputation and pricing benefits, and when to use one.
