← back to blog

Telegram CGNAT Explained: What Carrier NAT Means in 2026

telegram cgnat glossary 2026

Telegram CGNAT Explained: What Carrier NAT Means in 2026

the short definition

Carrier-grade NAT (CGNAT) is a large-scale network address translation system that mobile and broadband operators deploy to share a single public IPv4 address across dozens to hundreds of subscribers at the same time. The carrier assigns each device a private internal IP, then rewrites outbound connections at its edge router, swapping the private address for a shared public IP and tracking each flow by port number. When Telegram receives a connection from a subscriber behind CGNAT, it sees the carrier’s shared public IP, not the device’s private address. It handles this the same way it handles any other mobile session.

the longer explanation

IPv4 address space is finite. 4.3 billion addresses, minus the blocks reserved for private networks, broadcast, and special uses. That sounded fine in the 1980s when the addressing scheme was designed. It was not fine for the smartphone era. APNIC, the Regional Internet Registry responsible for Asia-Pacific address assignments, exhausted its free IPv4 pool in April 2011. RIPE NCC, covering Europe and the Middle East, followed in September 2012. ARIN, covering North America, ran out in September 2015. Mobile carriers across all these regions, facing explosive smartphone subscriber growth with no new public IPv4 blocks to assign, scaled up NAT infrastructure instead.

The IETF formalized the technical architecture in RFC 6598, published April 2012, which defined the 100.64.0.0/10 address range specifically for “shared address space,” meaning the IP space used between a carrier’s NAT device and the subscriber’s equipment. That range covers about four million addresses and is meant to live only inside the carrier’s network. The public IPv4 address that everything outside the carrier sees is assigned to the carrier’s NAT hardware, not to you. One carrier-side public IP routinely serves anywhere from fifty to several hundred simultaneous mobile subscribers, depending on the carrier’s provisioning density and the active session load on a given cell cluster.

CGNAT tracks five-tuple flows: source private IP, source port, destination IP, destination port, and protocol. When your phone opens a TCP connection to one of Telegram’s data centers, your carrier’s NAT device replaces your private source address (say, 100.64.17.83) with the shared public IP (say, 116.89.4.12) and assigns an external source port from its available pool. It logs that mapping in a state table. When Telegram replies to 116.89.4.12:43217, the NAT device looks up that port mapping, finds the entry pointing back to your private address and port, and forwards the packet. From Telegram’s perspective the entire conversation originated at 116.89.4.12. Your private address never appears. The carrier’s state table is the only record tying your private session to that public IP and port combination, and that table exists only inside the carrier’s infrastructure.

This is why telegram cgnat behavior differs structurally from a home router. Your home NAT is one-to-one: one household, one public IP. CGNAT is many-to-one: potentially hundreds of subscribers sharing a single public IP, routed through dedicated carrier hardware with state tables built to handle millions of concurrent flows. IPv6 would make this unnecessary, since the IPv6 address space is large enough to give every connected device on earth a unique address with room left over. But IPv6 rollout on mobile networks in most high-Telegram-usage markets, including Iran, Russia, Pakistan, and large parts of Southeast Asia and West Africa, is still incomplete in 2026. CGNAT remains the standard operational reality for the majority of mobile subscribers globally. If you are reading this on a mobile connection anywhere outside northern Europe, you are almost certainly behind CGNAT right now.

why it matters for telegram operators

For an individual user connecting to Telegram from a personal phone, telegram cgnat is essentially invisible. Telegram does not use your IP address as your session identifier. Sessions are authenticated by an MTProto authorization key, a 2048-bit cryptographic number negotiated when you first connected and stored encrypted on your device. That key persists across IP changes, across CGNAT remappings, across switches between Wi-Fi and mobile data. The fact that 200 other people share the same public IP as you does not disrupt your session, because Telegram is not tracking the IP to track you. The protocol reconnects gracefully.

The picture changes for operators running accounts at volume. Two accounts from one public IP is unremarkable. Twenty is a signal. A hundred is the pattern that shows up in why Telegram bans accounts as a textbook abuse fingerprint. This is where CGNAT creates structural risk that has nothing to do with your own behavior. If you share a CGNAT public IP with other subscribers running mass-message campaigns or bulk registration operations, the abuse signal attached to that IP becomes partly your problem. Telegram does not distinguish your session from theirs at the IP level. An IP carries a reputation, and that reputation reflects whoever is noisiest on it.

The specific danger for high-volume operators is the density inversion that happens with shared mobile proxy infrastructure. A shared mobile proxy routes many customers through a small number of SIMs. Each SIM already sits behind CGNAT with its own shared public IP. Now add the proxy layer: many customer Telegram accounts sharing the proxy pool, which itself is sharing the carrier’s CGNAT public IPs. The result is compounding density. An IP that Telegram expects to see maybe fifty simultaneous sessions from (a plausible CGNAT load) is now seeing five hundred concurrent sessions from high-activity operators. That deviation from the expected behavioral baseline of a mobile IP is detectable. Dedicated vs shared mobile IPs covers the account survival consequences in detail, but the underlying mechanism is this: CGNAT defines a normal expected density on a mobile carrier IP, and stacking proxy customers on top of that density expectation is what makes the IP look suspicious.

common misconceptions

The most common one is that CGNAT protects your privacy by hiding your device’s IP from servers you connect to. It does hide your private internal address. But the shared public IP that CGNAT substitutes is far less uniquely yours than a dedicated connection would be. Carriers retain CGNAT state table logs, and those logs map a given public IP and port at a given timestamp back to a specific subscriber. The EFF’s network privacy documentation has noted consistently that carrier NAT log retention is standard practice, and those records are accessible through normal legal process. Sharing an IP with other users provides meaningful anonymity only against parties who cannot compel the carrier. Anyone who can issue a legal request gets a clean answer. What CGNAT actually provides is a cost-effective path to IPv4 connectivity for carriers facing address exhaustion, not anonymity for subscribers.

The second misconception: because many users share one IP under CGNAT, Telegram cannot apply IP-level signals without causing collateral damage to innocent users, so it does not bother. Telegram does apply rate limits at the connection and session level, precisely because CGNAT makes pure IP-level enforcement blunt. But IP-level signals still feed into Telegram’s trust scoring. A mobile carrier IP that has hosted an unusual density of account registrations or API calls within a rolling window carries a lower prior into the next session that arrives from it, regardless of whether that next session belongs to one of the innocent shared subscribers. Session-level enforcement is a practical accommodation for CGNAT environments. It is not a blanket immunity from the IP’s history.

Third: any mobile SIM gives you CGNAT, and therefore any mobile SIM gives you equivalent telegram cgnat properties. Wrong. The CGNAT infrastructure varies significantly by carrier and region. A SIM from a Tier 1 carrier in Singapore runs on CGNAT hardware that is well-maintained, routes cleanly, and maps to an ASN that has not accumulated abuse history in IP intelligence databases. A SIM from a low-cost MVNO in a market with minimal infrastructure investment may technically put you behind CGNAT but route through an ASN with a poor reputation, or through IP ranges that have historically carried high-abuse traffic. The architecture is similar but the trust profile behind it is not. The carrier matters as much as the NAT topology.

Fourth: IPv6 adoption makes telegram cgnat analysis obsolete going forward. For operators in 2026, mobile IPv6 is real and most devices have IPv6 connectivity when the carrier supports it. But Telegram’s data centers are dual-stack, and many client connections still fall back to IPv4 depending on network configuration and carrier policy. More importantly, the session trust and IP reputation systems that Telegram uses have years of behavioral history built on IPv4 signals. IPv6 reputation databases are less mature and less comprehensive than their IPv4 counterparts. Until that gap closes, the IPv4 carrier signal remains the more legible trust indicator for Telegram’s scoring infrastructure, and understanding CGNAT in IPv4 terms is still operationally relevant.

a quick worked example

Here is how to check whether a connection is behind CGNAT, confirm the carrier’s public IP, and verify that it sits in a mobile carrier ASN rather than a datacenter one. Run this from the device or proxy you are evaluating:

# Step 1: find the IP your device was assigned internally
# On Android via Termux, or on any Linux device on the mobile connection:
ip addr show | grep "inet " | grep -v 127.0.0.1

# If the result shows an address in 100.64.0.0/10 (100.64.x.x through 100.127.x.x),
# you are behind explicit RFC 6598 CGNAT shared address space.
# Many carriers use 10.x.x.x instead (RFC 1918 private space).
# Either confirms NAT. Neither will route on the public internet.

# Step 2: find what Telegram (and every other server) actually sees
curl -s https://api.ipify.org && echo

# If Steps 1 and 2 return different IPs, NAT is confirmed.

# Step 3: verify the ASN and carrier behind the public IP
curl -s https://ipinfo.io/json | jq '{ip, org, country, city}'

# On a clean SingTel SIM the output should resemble:
# {
#   "ip": "116.89.x.x",
#   "org": "AS7473 Singapore Telecommunications Ltd",
#   "country": "SG",
#   "city": "Singapore"
# }
#
# Acceptable Singapore mobile carrier ASNs:
#   AS7473   SingTel
#   AS9506   M1
#   AS4657   StarHub
#   AS133752 Vivifi
#
# If org contains any of the following, you are on datacenter infrastructure.
# telegram cgnat properties do not apply. Datacenter ASN scoring does.
#   AS16509  Amazon.com
#   AS14061  DigitalOcean
#   AS20473  Vultr
#   AS396982 Google Cloud
#   AS24940  Hetzner Online
#   AS16276  OVH SAS

The org field reflects what MaxMind, IPinfo, and the rest of the IP intelligence layer see when Telegram checks your session. Mobile carrier in org means your connection carries the expected CGNAT behavioral profile. Hosting provider means the NAT architecture may look similar but the trust classification is completely different.

how telegramvault relates

The phones in our Singapore facility sit behind carrier CGNAT exactly like any other mobile device on SingTel, M1, StarHub, or Vivifi, because there is no way to avoid that architecture on a mobile SIM. We do not try to work around it. What we control is the density side of the equation: one SIM per customer account, which means one account per CGNAT public IP cluster. The problem that makes telegram cgnat risky in shared proxy environments, stacking many accounts onto a single SIM’s public IP, does not arise here because the SIM is not shared. Each customer’s Telegram session sees the same carrier-grade NAT any real mobile subscriber would, without the proxy-induced density that would make the IP behavior deviate from its expected baseline. Access happens through a browser-based STF session from wherever the customer is located, but the IP Telegram observes is always the SIM’s Singapore carrier address. The telegramvault waitlist is the current entry point, and we pair each customer manually with their SIM assignment before the session goes live.

further reading

The ASN layer that CGNAT sits within is a separate concept worth understanding alongside it. The ASN determines how Telegram classifies the carrier that owns the public IP, while CGNAT determines how many subscribers share that IP. Understanding both gives you a more complete picture of why why Singapore mobile IPs matter specifically, not just any mobile carrier IP from any country.

The operational consequences of shared versus dedicated SIM setups are covered in dedicated vs shared mobile IPs. That post works through why the density problem described here translates into account survival rate differences, with concrete examples from setups we have seen fail and setups we have seen run cleanly for extended periods.

For operators planning how their session will be set up, BYO number Telegram hosting covers what the login flow looks like when your phone number stays yours and the session runs on dedicated Singapore hardware. The CGNAT piece is handled by the carrier automatically. The decision you are actually making is how many accounts share the public IP and what the carrier ASN’s reputation is.

If you need the same Singapore mobile carrier IPs for scraping, ad verification, or other non-Telegram use cases, the same SIM farm powers singaporemobileproxy.com/plans" target="_blank" rel="noopener">Singapore Mobile Proxy plans, which provides SOCKS5 and HTTP access to the same carrier-grade addresses. The ASN and CGNAT properties described in this post apply there as well, and you can verify them with the curl commands above before committing to any endpoint.

final word

Telegram CGNAT is not a problem that needs solving for individual users or for properly structured dedicated SIM setups. It becomes a problem when operators stack account density on top of a shared carrier IP in ways that deviate from the normal behavioral baseline those IPs carry. Knowing where the line is, and what the carrier’s NAT architecture actually looks like from Telegram’s side, is the difference between infrastructure that holds up and infrastructure that keeps generating account losses you cannot diagnose.

need infra for this today?