Configurazione sing-box VLESS Reality 2026: i campi che quasi tutte le guide sbagliano

Una configurazione sing-box VLESS + Reality aggiornata, verificata sulla documentazione ufficiale della 1.13. Include i campi dell'inbound deprecati nella 1.11 e ancora copiati nella maggior parte dei tutorial.

Di Eric GerardFondatore · VPNSmith - Specialista in VPN autogestite e VPS GDPR

Aggiornato 8 min lettura8 min

Link di affiliazione: possibile commissione, senza costi extra. Metodo

Genera la mia config REALITYLeggi la guida

Plain WireGuard packet blocked by DPI, VLESS + REALITY packet passing as HTTPS to microsoft.comDPIWG UDP 51820plain WireGuardsignature matchflow droppedTCP 443 TLS 1.3SNI microsoft.comYOUR VPSXray REALITYlooks like HTTPSprobe gets the real microsoft cert
fig. 01 / tunneling-obfuscation

Cerca una guida a sing-box Reality e troverai parecchi file di configurazione che erano corretti nel 2024. Vengono ancora interpretati senza errori, ed è proprio questo il problema: niente ti avverte che hai appena costruito su campi che il progetto ha deprecato. Qui percorriamo una configurazione VLESS Reality verificata campo per campo sulla documentazione attuale, segnalando le parti che si sono spostate in silenzio.

Plain WireGuard packet blocked by DPI, VLESS + REALITY packet passing as HTTPS to microsoft.comDPIWG UDP 51820plain WireGuardsignature matchflow droppedTCP 443 TLS 1.3SNI microsoft.comYOUR VPSXray REALITYlooks like HTTPSprobe gets the real microsoft cert
fig. 01 / tunneling-obfuscation

Per riferimento, la versione su cui è stata fatta la verifica è sing-box 1.13.15, rilasciata il 29 luglio 2026.

Non hai ancora un server? La configurazione qui sotto richiede un VPS con IPv4 pubblico, accesso root e la porta 443 libera, fuori dalla rete che ti filtra: un Contabo Cloud VPS 4 (link di affiliazione) basta da 5,50 € al mese con vincolo di 24 mesi.

Carta bancaria rifiutata? Ultahost accetta anche Bitcoin e altre criptovalute, Alipay, WeChat Pay e Qiwi (pagina dei pagamenti, letta il 25 ottobre 2026). Link di affiliazione; controlla le sue condizioni per il tuo paese prima di ordinare.

Preferisci non assemblare il JSON a mano? Il nostro generatore di config VLESS REALITY gratuito crea la coppia di chiavi X25519, l'UUID e lo short ID nel tuo browser e scrive le config server e client corrispondenti per sing-box e Xray-core, pronte da incollare nei passaggi qui sotto.

REALITY richiede un server che controlli

Più RAM per lo stesso uso? vedi l'offerta Contabo Cloud VPS

Link di affiliazione: potremmo ricevere una commissione, senza costi aggiuntivi per te. Il generatore resta gratuito e non dipende da questo.

Vedi HostPapa VPS Lite, 2,95 $/mese su 3 anni

Funziona interamente nel browser: chiavi, UUID e configurazioni sono generati in locale e non vengono inviati da nessuna parte.

L'IP pubblico del tuo VPS (o un dominio che punta lì). Usato nella configurazione client e nel link.

443 è la norma: REALITY imita HTTPS.

Un sito di terzi con TLS 1.3 e HTTP/2, raggiungibile dai tuoi client. Vedi la checklist sotto lo strumento.

Impronta uTLS (client)

L'impronta TLS che il client imita. chrome è la scelta abituale.

Coppia di chiavi X25519

La chiave privata va solo sul server. Quella pubblica va a ogni client.

Esadecimale, lunghezza pari, al massimo 16 caratteri.

  • Le chiavi mancano o non sono valide (32 byte, base64url, 43 caratteri). Genera una coppia o incolla la tua.

Link di condivisione vless://

vless://@203.0.113.10:443?encryption=none&flow=xtls-rprx-vision&security=reality&sni=www.example.com&fp=chrome&pbk=&sid=&type=tcp&headerType=none#my-reality

Importalo in v2rayN, v2rayNG, Hiddify, Streisand o Shadowrocket, oppure scansiona il codice QR.

config.json
{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "",
            "flow": "xtls-rprx-vision",
            "email": "my-reality"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "target": "www.example.com:443",
          "xver": 0,
          "serverNames": [
            "www.example.com"
          ],
          "privateKey": "",
          "shortIds": [
            ""
          ]
        }
      },
      "sniffing": {
        "enabled": true,
        "destOverride": [
          "http",
          "tls",
          "quic"
        ],
        "routeOnly": true
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "tag": "direct"
    },
    {
      "protocol": "blackhole",
      "tag": "block"
    }
  ]
}
client-xray.json
{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks",
      "settings": {
        "udp": true
      }
    },
    {
      "listen": "127.0.0.1",
      "port": 10809,
      "protocol": "http"
    }
  ],
  "outbounds": [
    {
      "protocol": "vless",
      "tag": "proxy",
      "settings": {
        "vnext": [
          {
            "address": "203.0.113.10",
            "port": 443,
            "users": [
              {
                "id": "",
                "flow": "xtls-rprx-vision",
                "encryption": "none"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "serverName": "www.example.com",
          "fingerprint": "chrome",
          "publicKey": "",
          "shortId": "",
          "spiderX": "/"
        }
      }
    },
    {
      "protocol": "freedom",
      "tag": "direct"
    }
  ]
}
install.sh
# Installare Xray-core con lo script ufficiale (servizio systemd incluso)
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

# Facoltativo: verificare che la chiave pubblica corrisponda alla privata
xray x25519 -i ""

# Verificare che la destinazione risponda in TLS 1.3 e HTTP/2
xray tls ping www.example.com

# Aprire la porta
sudo ufw allow 443/tcp

# Incollare la configurazione server, testarla, poi avviare il servizio
sudo nano /usr/local/etc/xray/config.json
xray run -test -c /usr/local/etc/xray/config.json
sudo systemctl restart xray && sudo systemctl enable xray

# Seguire il log mentre si connette il primo client
sudo journalctl -u xray -f

REALITY richiede un server che controlli

Un server REALITY è un VPS con IP pubblico e la porta 443 libera, nient'altro. Il VPS base di Contabo include un IPv4 pubblico, accesso root e molto traffico, e puoi scegliere il datacenter più vicino ai tuoi utenti.

Seconda opzione, un provider statunitense con 30 giorni soddisfatti o rimborsati: il VPS Basic di Ultahost, 5,52 $/mese su 24 mesi, 1 CPU, 1 GB DDR5 e IPv4 dedicato (letto il 21 ottobre 2026), sufficiente per un server Xray. Accetta anche Bitcoin e altre criptovalute, Alipay, WeChat Pay e Qiwi (pagina dei pagamenti, letta il 25 ottobre 2026), utile se la tua carta bancaria viene rifiutata; controlla le sue condizioni per il tuo paese prima di ordinare. Vedi i VPS Ultahost

Link di affiliazione: potremmo ricevere una commissione, senza costi aggiuntivi per te. Il generatore resta gratuito e non dipende da questo.

Vedi il VPS Contabo

Preferisci file già testati dall'inizio alla fine?

Il pack di configurazione VLESS + REALITY contiene un server Xray commentato sulla porta 443, un client desktop (proxy SOCKS5 e HTTP locale), un modello di link vless:// per v2rayN, v2rayNG e Shadowrocket, e due cose che questo generatore non scrive: una variante del server con contatori di traffico per dispositivo e un README con una checklist di risoluzione dei problemi in 10 punti. Ogni file JSON supera xray run -test con Xray-core 26.10.31. Solo Xray-core, nessun file sing-box.

Vedi il pack di configurazione VLESS + REALITY (4,90 EUR)

Prodotto nostro, pagamento unico, ZIP di file di testo in inglese (pagina in inglese). Modelli per il tuo server, non un abbonamento VPN, e nessuna promessa che REALITY continui a passare un dato DPI. I file generati sopra funzionano anche senza.

Non hai ancora scelto il server? La nostra guida Miglior VPS per V2Ray e Xray confronta i provider su ciò che decide quanto dura un server anti-censura: posizione del datacenter, reputazione dell'IP, traffico incluso e rapidità nel sostituire un IP bloccato.

Che cosa cambia davvero Reality

I proxy convenzionali basati su TLS hanno una debolezza strutturale: il certificato appartiene a te. Un censore che ispeziona l'handshake vede un dominio e un certificato che non corrispondono a un sito web reale e popolare, e quella discrepanza è essa stessa il segnale.

L'approccio di Reality consiste nel prendere in prestito l'handshake di un sito terzo autentico. Il tuo server è configurato per puntare a un host esterno reale, e il traffico che non supera l'autenticazione viene inoltrato lì. Per un osservatore, la connessione somiglia a una connessione verso quel sito, perché in parte lo è.

Ecco perché la configurazione ha un blocco handshake. Non è un ornamento e la sua scelta conta più di qualsiasi altro valore che imposterai.

I tre campi Reality obbligatori sul server

Dentro l'oggetto tls, il blocco reality richiede esattamente tre cose secondo la documentazione:

  • handshake (oggetto), contenente server e server_port, il sito esterno da cui il tuo server prende in prestito
  • private_key (stringa), che secondo la documentazione viene generata da sing-box generate reality-keypair
  • short_id (stringa), descritta come una stringa esadecimale da zero a otto cifre

C'è anche un booleano enabled, e un campo facoltativo max_time_difference, che imposta la differenza di orologio tollerata tra le due estremità. La documentazione nota che il controllo è disabilitato quando questo campo è lasciato vuoto. Se lo imposti, tieni presente che ora dipendi dal fatto che entrambe le macchine mantengano l'ora esatta.

Generare le chiavi

Due valori vanno generati prima di scrivere qualsiasi cosa:

sing-box generate reality-keypair
sing-box generate uuid

La coppia di chiavi stampa una chiave privata e una chiave pubblica. La chiave privata resta sul server. La chiave pubblica va a ogni client. L'UUID è l'identità dell'utente VLESS.

Conserva la coppia insieme in un posto sicuro quando la generi. Se è rimasta solo la chiave privata, in una configurazione server per esempio, la pubblica non è persa: si ricava dalla privata, con xray x25519 -i "<chiave privata>" o incollandola nel nostro generatore di configurazione VLESS REALITY, che funziona in locale. Rigenerare la coppia, invece, invalida ogni client che hai già distribuito.

La maggior parte delle installazioni REALITY si rompe quando si ricopiano i valori. La nostra VLESS REALITY Cheat Sheet gratuita (PDF di 3 pagine in inglese, download diretto, senza registrazione) mette fianco a fianco il nome di ogni campo in Xray, sing-box e nel link vless://, con i controlli lato server e le cause di guasto più comuni. Scarica la scheda.

Cavi ethernet blu inseriti nelle porte numerate di uno switch di rete, con i LED di stato verdi accesi lungo il pannello frontale.
Cavi ethernet blu inseriti nelle porte numerate di uno switch di rete, con i LED di stato verdi accesi lungo il pannello frontale.

La parte server che segue gira su qualsiasi VPS con un IPv4 pubblico, accesso root e la porta 443 libera per l'inbound. Se non ne hai ancora uno:

L'inbound del server

Un inbound VLESS richiede type, tag, i campi di ascolto e un array users. Ogni voce utente prende un uuid, facoltativamente un name, e facoltativamente un flow. La documentazione elenca esattamente un valore di flow disponibile: xtls-rprx-vision.

{
  "type": "vless",
  "tag": "vless-in",
  "listen": "::",
  "listen_port": 443,
  "users": [
    {
      "name": "me",
      "uuid": "PASTE-YOUR-GENERATED-UUID",
      "flow": "xtls-rprx-vision"
    }
  ],
  "tls": {
    "enabled": true,
    "server_name": "your-handshake-host.example",
    "reality": {
      "enabled": true,
      "handshake": {
        "server": "your-handshake-host.example",
        "server_port": 443
      },
      "private_key": "PASTE-YOUR-PRIVATE-KEY",
      "short_id": "0123abcd"
    }
  }
}

Nota server_name e il server dell'handshake. Sono campi distinti che normalmente conterranno lo stesso host, e una discrepanza tra i due è una causa frequente di configurazioni che si avviano senza problemi e poi falliscono al momento della connessione.

La parte che quasi tutte le guide sbagliano

Ecco la differenza tra una configurazione del 2024 e una attuale. Questi tre campi dell'inbound sono stati deprecati nella versione 1.11.0:

  • sniff
  • sniff_timeout
  • domain_strategy

Sono usciti dall'inbound e sono diventati azioni delle regole di route. La guida alla migrazione fornisce gli equivalenti diretti:

{
  "route": {
    "rules": [
      { "inbound": "vless-in", "action": "sniff", "timeout": "1s" },
      { "inbound": "vless-in", "action": "resolve", "strategy": "prefer_ipv4" }
    ]
  }
}

Quindi "sniff": true diventa un action di tipo sniff, sniff_timeout diventa il timeout di quell'azione, e domain_strategy diventa un action di tipo resolve con una strategy.

Per essere precisi sulla posta in gioco: la documentazione li segnala come deprecati e non annuncia una data di rimozione. Oggi non si rompe nulla. Ma una configurazione che li porta ancora è scritta su un'interfaccia da cui il progetto si è allontanato, e vale la pena saperlo quando scegli quale tutorial seguire.

Due campi correlati, sniff_override_destination e udp_disable_domain_unmapping, sono anch'essi segnati come deprecati nella documentazione attuale dei campi di ascolto.

Il lato client

Al client serve meno che al server. Reality sul client richiede:

  • public_key, la controparte della chiave privata del server
  • short_id, che deve corrispondere a un valore accettato dal server

L'oggetto utls si affianca a questi, con enabled e fingerprint. I valori di fingerprint documentati come accettati sono chrome, firefox, edge, safari, 360, qq, ios, android, random e randomized. La documentazione afferma che viene usato il fingerprint di Chrome quando il campo è vuoto.

Un punto di onestà qui, perché le guide tendono ad affermare il contrario: la documentazione di sing-box presenta utls come un'opzione TLS indipendente e non afferma che Reality lo richieda. La maggior parte delle configurazioni client lo attiva comunque.

Scegliere l'host di handshake

Nessun valore di configurazione incide di più sul risultato, e nessuna guida può sceglierlo al posto tuo, perché la risposta giusta dipende da dove si trova il tuo server e da dove si trovano i tuoi client.

Le proprietà che contano:

  • Dovrebbe essere un host che supporta davvero TLS 1.3 sulla porta a cui punti
  • Dovrebbe essere traffico plausibile dalla posizione di rete del tuo server
  • Non dovrebbe essere un sito a sua volta bloccato nel paese da cui ti connetti, il che vanificherebbe completamente lo scopo
  • Non dovrebbe essere un sito che controlli tu, dato che il punto è che sia traffico reale di qualcun altro

Un consiglio ripetuto di frequente è di scegliere qualcosa di grande e generico. Attenzione a questo ragionamento: un host che ogni tutorial raccomanda è, per definizione, un host che compare in ogni configurazione, e la popolarità all'interno della comunità dei proxy non è la stessa cosa che passare inosservati.

Prima di concludere che funziona

Due verifiche che vale la pena fare e che vanno oltre il "il client si è connesso".

Conferma che il fallback si comporti correttamente. Punta un normale browser all'indirizzo e alla porta del tuo server. Quello che dovresti vedere è il sito di handshake, non un errore e non un timeout. Se ottieni qualcos'altro, il passthrough non sta facendo il suo lavoro e la configurazione è più vistosa di un proxy ordinario.

Controlla entrambi gli orologi. Se imposti max_time_difference, uno scarto su una delle due macchine produrrà errori che sembrano problemi di autenticazione e ti manderà a modificare chiavi che non erano mai sbagliate.

Se stai ancora decidendo tra i motori invece di configurarne uno, i compromessi sono esposti nel nostro confronto tra sing-box e Xray.

La versione breve

Tre campi Reality obbligatori sul server: handshake, private_key, short_id. Due sul client: public_key, short_id. Le chiavi arrivano da sing-box generate reality-keypair. E se la guida che stai leggendo mette sniff o domain_strategy dentro l'inbound, è precedente alla versione 1.11 e l'equivalente attuale è un'azione di una regola di route.

I nomi dei campi, i requisiti e le deprecazioni citati in questo articolo provengono dalla documentazione ufficiale di sing-box e dalla guida alla migrazione, verificati sulla release 1.13.15 il 30 luglio 2026. Le interfacce di configurazione cambiano tra le versioni, quindi verifica sulla documentazione della release che stai usando. Aggirare la censura è limitato o illecito in alcune giurisdizioni: controlla che cosa si applica dove ti trovi.

Link di affiliazione

Prezzo verificato il 17/10/2026, durata 24 mesi

Domande frequenti

Quali campi di sing-box servono davvero per un inbound VLESS Reality?
L'inbound VLESS richiede type, tag, un indirizzo di ascolto e una porta, e un array users in cui ogni voce porta un uuid. La parte Reality vive dentro l'oggetto tls e richiede tre cose sul server: un oggetto handshake che punta a un sito esterno reale con il suo server e server_port, una private_key generata da sing-box, e uno short_id. Tutto il resto nell'inbound è facoltativo.
Che cosa genera la chiave privata e la chiave pubblica di Reality?
Il comando sing-box generate reality-keypair. Stampa una coppia corrispondente. La private_key resta nella configurazione del server e la public_key va nella configurazione del client. Non sono intercambiabili, e un client che usa la public_key sbagliata fallisce l'handshake invece di ripiegare su un TLS semplice.
Lo short_id può essere vuoto?
La documentazione descrive short_id come una stringa esadecimale da zero a otto cifre, quindi un valore vuoto rientra nelle specifiche. Il valore sul client deve corrispondere a un valore accettato dal server, ed è proprio la parte che sfugge quando si copia una configurazione server e si modifica solo l'UUID.
Perché i tutorial più vecchi di sing-box mettono sniff e domain_strategy dentro l'inbound?
Perché era corretto prima della versione 1.11.0. Quei campi, insieme a sniff_timeout, sono stati deprecati allora e spostati nelle azioni delle regole di route: action sniff con un parametro timeout, e action resolve con un parametro strategy. Le configurazioni scritte alla vecchia maniera vengono ancora interpretate, ma stai seguendo un percorso deprecato, il che vale la pena sapere prima di costruirci sopra.
Serve utls sul client?
La documentazione di sing-box presenta utls come un'opzione a sé nel blocco TLS, con un flag enabled e un fingerprint, e non afferma che Reality lo richieda. Molte configurazioni client lo attivano comunque. Se lasci fingerprint vuoto, la documentazione dice che viene usato il fingerprint di Chrome.