Il classico modo di pubblicare un servizio interno (il gestionale web, il pannello del NAS, un sito ospitato in sede) è aprire una porta sul firewall e inoltrarla al server. Funziona, ma espone direttamente il server a Internet, richiede un IP pubblico statico e si scontra sempre più spesso con le connessioni in CGNAT, dove una porta da aprire proprio non c'è.
Cloudflare Tunnel ribalta lo schema: è il server che si collega a Cloudflare, e Cloudflare porta dentro il traffico. Sul firewall non si apre nulla.
Come funziona
Sul server (o su una macchina della stessa rete) gira un piccolo servizio, cloudflared, che apre connessioni in uscita verso i datacenter Cloudflare. Quando qualcuno visita gestionale.tuaazienda.it, la richiesta arriva a Cloudflare, attraversa il tunnel già aperto e raggiunge il servizio interno.
- Nessuna porta in ingresso: una scansione dell'IP della sede non trova niente.
- Nessun IP statico: funziona anche dietro CGNAT, 4G, doppio NAT.
- Certificato HTTPS automatico sul nome pubblico.
- Protezione DDoS e WAF di Cloudflare davanti al servizio.
- Il piano gratuito basta per la maggior parte degli usi di una PMI.
Configurazione
Il dominio deve avere i DNS gestiti da Cloudflare. Dal pannello Zero Trust → Networks → Tunnels si crea il tunnel e si ottiene il comando di installazione con il token; in alternativa, tutto da riga di comando:
cloudflared tunnel login
cloudflared tunnel create sede-padova
cloudflared tunnel route dns sede-padova gestionale.tuaazienda.it
Il file di configurazione dice quale nome pubblico va verso quale servizio interno:
# /etc/cloudflared/config.yml
tunnel: sede-padova
credentials-file: /etc/cloudflared/<id-tunnel>.json
ingress:
- hostname: gestionale.tuaazienda.it
service: http://192.168.10.20:8080
- hostname: nas.tuaazienda.it
service: https://192.168.10.30:5001
originRequest:
noTLSVerify: true
- service: http_status:404
Poi cloudflared service install e il tunnel parte all'avvio. Per ridondanza si può far girare cloudflared su due macchine con lo stesso tunnel.
Cloudflare Access: il login prima del servizio
Pubblicare un pannello di amministrazione con il tunnel, senza altro, significa comunque metterlo su Internet. La parte che rende il tunnel davvero interessante è Cloudflare Access: davanti al servizio compare una pagina di login gestita da Cloudflare, e il traffico arriva al server solo dopo che l'utente si è autenticato.
- autenticazione con codice via email, Google, Microsoft Entra ID o altri provider;
- regole per singoli indirizzi, per dominio email (
@tuaazienda.it), per gruppo; - i bot e le scansioni automatiche non vedono mai la pagina di login del NAS o del gestionale.
Per pannelli di amministrazione, NAS, strumenti interni, è la configurazione che uso di default: tunnel più Access, e il servizio non è raggiungibile in nessun altro modo.
I limiti da conoscere prima
Upload massimo di 100 MB
Sui piani Free e Pro Cloudflare accetta richieste fino a 100 MB per qualunque nome con il proxy attivo, tunnel compresi. E non risponde con un errore chiaro: la connessione si interrompe a metà. Nei log di cloudflared compare qualcosa come Incoming request ended abruptly: context canceled, e l'utente vede un caricamento che parte e poi fallisce. Per NAS con sincronizzazione di file grandi, video, immagini disco, il tunnel non è lo strumento giusto: serve una VPN o un percorso diretto.
Non è una VPN per tutto
Il tunnel è pensato per HTTP e HTTPS. Si possono far passare anche SSH, RDP e altri protocolli, ma dal lato utente serve cloudflared o il client WARP. Per dare ai dipendenti l'accesso completo alla rete, una VPN resta più semplice.
L'IP interno del servizio fa parte della configurazione
Se il server cambia indirizzo (una VM spostata su un altro host, un DHCP che assegna un IP nuovo), il tunnel resta connesso ma punta a un indirizzo che non risponde, e l'utente vede un errore 502 o 530. Tutto sembra "su", eppure il sito è giù. Due regole: IP fissi per i servizi pubblicati e, quando si sposta una macchina, aggiornare la configurazione del tunnel nello stesso momento.
I dati passano da Cloudflare
Cloudflare termina il TLS: tecnicamente vede il traffico in chiaro. Per la maggior parte dei servizi è accettabile, ma va valutato per dati particolarmente sensibili e scritto nella documentazione privacy come fornitore.
Cache
Cloudflare mette in cache file statici in base all'estensione. Un repository di pacchetti, un file che cambia mantenendo lo stesso nome o una API che restituisce file .js possono essere serviti vecchi. Il server deve mandare header di cache corretti, ad esempio Cache-Control: no-store sui file che cambiano.
Quando lo consiglio: piccoli siti e applicazioni web ospitati in sede, pannelli di amministrazione, strumenti interni da raggiungere fuori ufficio, sedi senza IP statico. Quando no: trasferimenti di file grandi, accesso completo alla rete, dati che non possono transitare da un fornitore esterno.
Posso aiutarti con la tua infrastruttura?
Che tu abbia un progetto da zero o un problema da risolvere, scrivimi o prenota una call gratuita di 30 minuti.