Approfondimento tecnico

CGNAT: riconoscerlo e aggirarlo

Il CGNAT (Carrier-Grade NAT, RFC 6888) aggiunge un secondo livello di traduzione fra il router del cliente e Internet. Il risultato è un doppio NAT: la rete domestica dietro il router, e il router stesso dietro l'apparato dell'operatore.

Riconoscerlo con certezza

  • Indirizzo WAN del router in 100.64.0.0/10 (RFC 6598): è lo spazio dedicato, non instradabile su Internet e distinto dagli indirizzi privati RFC 1918
  • Discordanza fra l'indirizzo WAN e quello restituito da curl -s mioip.org/ip
  • traceroute che mostra uno o più salti in 100.64/10 prima di uscire
  • Port forwarding configurato correttamente ma porte che risultano chiuse dall'esterno

Attenzione a non confondere il CGNAT con un doppio NAT domestico, per esempio un router del provider seguito da un secondo router personale: in quel caso l'indirizzo intermedio è privato (192.168 o 10.) e il problema si risolve mettendo il primo apparato in bridge.

Le conseguenze meno ovvie

Oltre all'impossibilità di ricevere connessioni, il CGNAT porta effetti che si notano solo quando capitano:

  • Esaurimento delle porte: ogni cliente riceve un intervallo limitato di porte, spesso qualche migliaio. Un browser moderno ne apre decine per pagina, e con più dispositivi attivi si può arrivare al limite, con connessioni che falliscono in modo intermittente e difficile da diagnosticare
  • Reputazione condivisa: se un altro cliente dietro lo stesso indirizzo invia posta indesiderata o subisce un'infezione, il blocco colpisce anche te. È la causa di molti CAPTCHA improvvisi o divieti su forum e servizi
  • Geolocalizzazione più imprecisa: l'indirizzo appartiene a un'aggregazione dell'operatore, quindi la posizione stimata è quella del nodo, non della zona
  • Registri e responsabilità: identificare un utente richiede indirizzo, porta e istante esatto, e non tutti gli operatori conservano quei dati con la stessa precisione

Le soluzioni, in ordine di preferenza

1. IPv6. Molte linee sotto CGNAT forniscono un IPv6 nativo e pienamente raggiungibile. Se il dispositivo da esporre e il client remoto supportano entrambi IPv6, il problema semplicemente non si pone: non c'è NAT, basta aprire la porta sul firewall del router. Verifica con ping -6 e con un record AAAA sul tuo dominio dinamico.

2. IP pubblico dall'operatore. La soluzione definitiva per IPv4. Va richiesta esplicitamente; se dinamico, si abbina a un servizio DDNS.

3. Reti overlay. Strumenti come WireGuard in configurazione mesh, Tailscale, ZeroTier o Nebula creano una rete privata fra i dispositivi indipendentemente dal NAT, usando tecniche di attraversamento (STUN, hole punching) e ripiegando su un relay quando serve. È la strada più pratica per l'accesso personale a NAS e telecamere: nessuna porta aperta verso Internet, quindi anche più sicura del port forwarding.

4. Tunnel verso un server esterno. Un piccolo server con IP pubblico e un tunnel permanente (WireGuard, SSH con -R, oppure servizi come Cloudflare Tunnel per il solo traffico web) espone il servizio interno all'indirizzo del server.

5. Cloud del produttore. È ciò che usano le telecamere consumer: il dispositivo apre una connessione in uscita verso il servizio del produttore e tu ti colleghi lì. Funziona sempre, ma il flusso video passa da terzi e dipende dalla loro infrastruttura.

Il PCP, e perché quasi mai aiuta

La RFC 6887 definisce il Port Control Protocol, con cui il router potrebbe chiedere all'apparato CGNAT di aprire una porta specifica. Tecnicamente risolverebbe il problema, ma quasi nessun operatore lo abilita verso i clienti residenziali: nella pratica non ci si può contare.

Verifiche pratiche

  • curl -s mioip.org/ip — l'indirizzo con cui esci davvero, da confrontare con la WAN del router
  • curl -s mioip.org/json — insieme all'indirizzo, provider e AS: utile per capire in quale rete sei finito
  • traceroute 8.8.8.8 — cerca salti in 100.64/10 nei primi passaggi
  • ip -6 addr e ping -6 mioip.org — verifica se hai IPv6, che è spesso la via d'uscita più rapida

Un modo affidabile per sapere se una porta è davvero raggiungibile è provarla da una rete diversa, per esempio dal telefono in connessione dati: farlo dall'interno della propria rete restituisce spesso un esito falsamente positivo.

Vuoi vedere il tuo indirizzo IP in questo momento?

Mostra il mio IP