Free — no signup required

Identifying CGNAT: RFC 6598

2 min read

The "100.64" Range

You can't fix a problem you can't identify. Fortunately, CGNAT leaves a fingerprint you can check in under a minute.

When ISPs needed an address range for the "middle" layer of CGNAT — the addresses assigned to customer routers' WAN interfaces — they couldn't use the standard private ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) because those are already used inside customer networks. Routing would become ambiguous. So RFC 6598 (published 2012) reserved a dedicated block:

100.64.0.0/10
Range: 100.64.0.0 — 100.127.255.255
Total addresses: 4,194,304
Purpose: Shared Address Space (CGNAT use only)

This range is sometimes called "Shared Address Space" or informally the "CGNAT range." It is not routable on the public internet — packets with these addresses as source or destination are dropped at internet exchange points.

How to detect CGNAT on any connection:

Step 1 — Find your router's WAN IP. This is the IP your ISP assigned to your router's internet-facing interface. On most home routers, it's visible in the admin panel under "WAN Status" or "Internet Status."

Step 2 — Find your public IP as seen by the internet, via any IP-checking service.

Step 3 — Compare the two:

Scenario A (No CGNAT):
  Router WAN IP:  203.0.113.5
  Public IP seen: 203.0.113.5
  → They match. You have a real public IP.

Scenario B (CGNAT confirmed):
  Router WAN IP:  100.72.15.5
  Public IP seen: 203.0.113.88
  → They differ. The 100.x address is your ISP's internal address.
    203.0.113.88 is the shared public IP at the ISP's edge.

Other private ranges that can indicate CGNAT (less common):
Some ISPs incorrectly use 10.x.x.x or 172.16.x.x for their CGNAT infrastructure instead of the RFC 6598 range. The detection method is the same: if your WAN IP differs from your public IP, you're behind CGNAT regardless of which private range is used.

On Linux and macOS, the WAN-facing IP is also discoverable by inspecting which local address the default route uses to reach the outside world.

Interview Tip

Interviewers sometimes ask: "Why did IANA reserve a new range (100.64.0.0/10) for CGNAT instead of reusing existing private ranges like 10.0.0.0/8?" The answer is address ambiguity. If an ISP used 10.x.x.x for CGNAT and a customer's home network also used 10.x.x.x, the ISP's edge routers would have no way to distinguish between the customer's internal traffic and the CGNAT layer traffic. RFC 6598 created an unambiguous, dedicated range that both ISPs and customer equipment can recognize as "CGNAT middle layer" and handle appropriately.

This is one of 18 chapters

Every chapter is free — Kubernetes, Terraform, SRE, distributed systems, and more — with fast daily review built in.

Sign up free