The ask
We need natcheck --json output from devices behind CGNAT carriers so we can replace the current DirectP2P = "unknown" placeholder with carrier-tagged possible / unlikely verdicts.
natcheck currently detects CGNAT (observed public IP in 100.64.0.0/10) and refuses to forecast — see internal/classify/classify.go. One carrier with consistent evidence unlocks a real verdict in a v0.1.x patch.
Carriers wanted
- T-Mobile US (mobile data)
- Reliance Jio (India, mobile data)
- Starlink (residential)
- Any other connection where your public IP falls in
100.64.0.0/10
How to help
- Install:
go install github.com/1mb-dev/natcheck/cmd/natcheck@latest or brew tap 1mb-dev/tap && brew install natcheck
- Run on the CGNAT-connected device:
natcheck --json
- Comment with the JSON plus:
- Carrier + plan (e.g. "T-Mobile US postpaid", "Jio prepaid 5G")
- Connection type (mobile data / home internet / hotspot / Starlink dish)
- Region (country; state/region if carrier behavior varies by market)
natcheck --version output
- Direct P2P in practice — does it work? With what app? (Jitsi peer-to-peer, Discord voice, FaceTime, game console NAT type)
CGNAT pools rotate, so 2–3 runs spaced across different times of day are more useful than one.
Redaction
Scrub anything that identifies your specific machine: public IP → 198.51.100.x (RFC 5737), private source → 192.168.1.2. Keep ports, RTTs, error shapes, and external STUN server IPs as observed. If unsure, paste anyway — we'll redact before committing to docs/samples/cgnat.txt. Full guide: .github/CONTRIBUTING.md.
Contributors credited in the release notes for the patch their sample unlocks.
The ask
We need
natcheck --jsonoutput from devices behind CGNAT carriers so we can replace the currentDirectP2P = "unknown"placeholder with carrier-taggedpossible/unlikelyverdicts.natcheck currently detects CGNAT (observed public IP in
100.64.0.0/10) and refuses to forecast — seeinternal/classify/classify.go. One carrier with consistent evidence unlocks a real verdict in a v0.1.x patch.Carriers wanted
100.64.0.0/10How to help
go install github.com/1mb-dev/natcheck/cmd/natcheck@latestorbrew tap 1mb-dev/tap && brew install natchecknatcheck --jsonnatcheck --versionoutputCGNAT pools rotate, so 2–3 runs spaced across different times of day are more useful than one.
Redaction
Scrub anything that identifies your specific machine: public IP →
198.51.100.x(RFC 5737), private source →192.168.1.2. Keep ports, RTTs, error shapes, and external STUN server IPs as observed. If unsure, paste anyway — we'll redact before committing todocs/samples/cgnat.txt. Full guide:.github/CONTRIBUTING.md.Contributors credited in the release notes for the patch their sample unlocks.