VPNSmith
Strumento gratuito - Xray e sing-box

Generatore di configurazione VLESS + REALITY

Inserisci l'indirizzo del tuo server e il sito da cui REALITY deve prendere in prestito l'handshake TLS. Il generatore crea la coppia di chiavi X25519, l'UUID e lo short ID, poi scrive le configurazioni server e client per Xray-core o sing-box, un link vless:// da importare in v2rayN, v2rayNG, Hiddify o Shadowrocket e i comandi di installazione. Le chiavi non lasciano mai il tuo browser.

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.

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

Cosa fa ogni valore e perché devono corrispondere

REALITY sostituisce il certificato TLS che normalmente servirebbe. Il tuo server risponde sulla porta 443 come il sito reale scelto come destinazione: un censore che si connette senza le credenziali giuste riceve l'handshake e le pagine del sito autentico, inoltrati dal tuo server. Solo un client che conosce la chiave pubblica del server e uno short ID valido completa l'handshake del proxy.

Per questo quattro valori devono coincidere da entrambi i lati. La chiave privata resta sul server, quella pubblica va a ogni client. Il sito di destinazione deve comparire come destinazione (target, o dest nelle guide meno recenti; handshake.server in sing-box) e tra i nomi server accettati, e il client lo invia come SNI. Lo short ID inviato dal client deve essere nella lista del server. L'UUID identifica l'utente, e xtls-rprx-vision va impostato su entrambi i lati, altrimenti la connessione viene rifiutata.

Le configurazioni qui sotto usano solo campi documentati: nessuna opzione sniff deprecata di sing-box nell'inbound, nessun trasporto superfluo. Aggiungi regole di routing o altri utenti quando il tunnel di base funziona.

Scegliere il sito di destinazione: checklist

La destinazione conta più di qualsiasi altro campo, e nessuno strumento può sceglierla al posto tuo. Ecco cosa verificare prima di decidere.

VerificaPerché contaCome verificarlo
TLS 1.3 e HTTP/2REALITY ha bisogno di un handshake TLS 1.3 da imitarexray tls ping <host>, oppure curl -I --tlsv1.3 --http2
Non bloccato dove si trovano i tuoi clientUna destinazione bloccata fa sembrare il tuo server un sito bloccatoAprilo dalla rete del client senza proxy
Plausibile dalla rete del tuo serverUn piccolo VPS che serve la home page di un colosso si nota; un host dello stesso provider o della stessa regione si confonde meglioConfronta la posizione IP della destinazione con il datacenter del VPS
Nessun reindirizzamento verso un altro dominioLo SNI deve corrispondere al certificato servito davvero dalla destinazionecurl -sI https://<host> e cerca un'intestazione Location
Non il tuo dominioLo scopo è sembrare traffico reale di qualcun altroScegli un sito di terzi che non controlli

Aggirare le restrizioni di rete è limitato o illegale in alcune giurisdizioni. Verifica cosa vale dove ti trovi tu e dove si trovano i tuoi utenti.

Domande frequenti

È sicuro generare chiavi REALITY in una pagina web?
Qui la coppia di chiavi è generata dall'implementazione WebCrypto (X25519) del tuo browser e niente viene inviato a un server: puoi scollegarti dalla rete dopo aver caricato la pagina e lo strumento continua a funzionare. Se preferisci, esegui xray x25519 o sing-box generate reality-keypair sul server e incolla la chiave privata: il pulsante Ricava calcola in locale la chiave pubblica corrispondente.
Dove trovo la chiave pubblica se ho solo quella privata?
Incolla la chiave privata e premi Ricava chiave pubblica. Il risultato è lo stesso di xray x25519 -i "<chiave privata>", che mostra la chiave privata e, con l'etichetta Password (PublicKey), la chiave pubblica che serve ai client.
La configurazione è compatibile con v2rayN, v2rayNG, Hiddify e Shadowrocket?
Sì: importa il link vless:// o scansiona il codice QR. Il link contiene security=reality, la chiave pubblica (pbk), lo short ID (sid), lo SNI, l'impronta uTLS (fp) e flow=xtls-rprx-vision, che questi client leggono. Se un client lo rifiuta, aggiornalo: REALITY e Vision richiedono un core recente.
In Xray si usa dest o target?
Xray-core attuale accetta entrambi, e target è il nome usato nei suoi messaggi di errore. La maggior parte dei tutorial scrive ancora dest. Il generatore scrive target sul server; se un core vecchio lo rifiuta, rinomina il campo in dest.
Servono un dominio o un certificato?
No. REALITY prende in prestito l'handshake del sito di destinazione, quindi il server non ha bisogno né di dominio né di certificato: basta un VPS con IP pubblico e la porta TCP 443 aperta. È uno dei motivi principali per cui ha sostituito VLESS su WebSocket con TLS nelle nuove installazioni.
Perché il client si connette ma non si apre nessun sito?
Di solito per una di tre discordanze: lo short ID non è nella lista del server, la chiave pubblica non è la coppia della chiave privata del server, oppure flow è impostato solo da un lato. Controlla il log del server con journalctl e, se hai impostato maxTimeDiff (max_time_difference in sing-box), l'ora di entrambe le macchine: uno scarto sembra allora un errore di chiave.