Shadowsocks è un protocollo proxy crittografato leggero basato su SOCKS5, originariamente progettato per aggirare le limitazioni e i blocchi del traffico sulle reti tradizionali. A differenza di una VPN completa, funge da proxy solo per il traffico che un'applicazione gli invia esplicitamente, ha un overhead di protocollo pressoché nullo e funziona bene anche su connessioni con traffico limitato. Non cerca di emulare un vero handshake TLS come fa VLESS+Reality: i suoi punti di forza sono la semplicità, l'ampio supporto client (router, telefoni, browser) e la bassissima latenza, a scapito di una maggiore facilità di identificazione tramite l'analisi del traffico su reti soggette a forti controlli.
Esistono due implementazioni server attivamente mantenute:
- shadowsocks-rust è l'implementazione di riferimento moderna dell'organizzazione shadowsocks, scritta in Rust. Supporta la più recente famiglia di cifrari AEAD-2022, è attivamente sviluppata ed è l'implementazione che questa guida installa e configura in dettaglio.
- shadowsocks-libev è la vecchia implementazione in C. Viene ancora mantenuta per la correzione dei bug, è disponibile come pacchetto apt preconfigurato con le proprie unità systemd ed è un'ottima scelta se si desidera un'installazione estremamente semplice, senza dover gestire manualmente i binari. Questa guida la descrive come percorso di installazione alternativo nella Sezione 3.
Questa guida descrive come configurare manualmente il server tramite riga di comando, senza utilizzare un pannello web o Docker. Ovunque compaia il campo "Indirizzo IP", sostituiscilo con l'indirizzo IP effettivo del tuo VPS.
Cosa ti servirà: un VPS con Ubuntu 22.04/24.04 o Debian 11/12, accesso root, l'indirizzo IP del tuo VPS e una porta UDP/TCP libera (questa guida utilizza la porta 8388, quella predefinita di Shadowsocks).
Non hai ancora un server? Consulta la pagina Come ordinare un server e pagarlo.
Prima di procedere, confrontate questa soluzione con altre opzioni self-hosted. Consultate la Guida pratica a Xray VLESS per un'alternativa basata su TLS-camouflage, la Guida alla distribuzione del server AmneziaWG per un'opzione basata su WireGuard, oppure la configurazione di Hysteria2 e TUIC per altri due moderni protocolli proxy.
Connessione al server
Windows (PuTTY)
Apri PuTTY, inserisci l'indirizzo IP del tuo VPS nel campo Nome host, imposta la porta su 22 ed effettua l'accesso come root utilizzando la password che il tuo provider VPS ti ha inviato via email.
Indirizzo IP del server: il tuo indirizzo IP
accedi come: root
Password: la tua password
Per una guida dettagliata su come connettersi tramite PuTTY/SSH, consultare la pagina Come connettersi a un server Linux tramite SSH.
Linux / macOS (terminale)
ssh root@your_IP_address
Tutti i comandi seguenti vengono eseguiti sul server, nella stessa sessione SSH – questo copre le Sezioni da 2 a 7, oltre ai controlli lato server nella Sezione 13. Le Sezioni da 8 a 12 (installazione e configurazione delle app client) vengono invece eseguite sul tuo dispositivo Windows/macOS/Linux/Android/iOS, poiché è su questo dispositivo che deve essere eseguito il proxy; ciascuna di queste sezioni specifica esplicitamente quali passaggi, se presenti, coinvolgono ancora il server.
Preparazione del server
Aggiorna il sistema
Prima di installare qualsiasi cosa, aggiorna l'elenco dei pacchetti e aggiorna i pacchetti già installati:
apt update -y && apt upgrade -y
Se questo aggiorna il kernel, è consigliabile riavviare il sistema prima di continuare. (Per un ripasso su apt e sul funzionamento dei gestori di pacchetti Linux, vedere Gestori di pacchetti Linux .) Verificare con:
cat /var/run/reboot-required
Se il file esiste, riavvia prima con 'reboot', attendi circa 30 secondi, quindi riconnettiti.
Installa gli strumenti utilizzati in questa guida
apt install -y curl wget tar xz-utils ufw qrencode
curl/wget e tar/xz-utils sono necessari per scaricare ed estrarre l'archivio della release shadowsocks-rust; ufw è il firewall configurato di seguito; qrencode trasforma il link client finale in un codice QR scansionabile nella Sezione 7.
Configurare il firewall (UFW)
Per ulteriori informazioni sulle regole UFW, consultare la sezione "Configurazione del firewall su Linux".
Apri le due porte necessarie: la 22/tcp per SSH (salta questa regola e rischi di perdere l'accesso al server) e la 8388, sia tcp che udp: Shadowsocks funge da proxy sia per le connessioni TCP che per le associazioni UDP (utile per il DNS e alcuni giochi/app), quindi entrambe le direzioni della porta devono essere aperte.
ufw allow 22/tcp
ufw allow 8388/tcp
ufw allow 8388/udp
ufw --force enable
ufw status
Tutte e tre le regole dovrebbero risultare come ALLOW nell'output di ufw status. Se in seguito modifichi la porta in config.json, aggiorna queste regole di conseguenza.
Installazione del software del server
Scegli una delle due opzioni seguenti. L'opzione A (shadowsocks-rust) è consigliata: si tratta dell'implementazione attivamente sviluppata e supporta i moderni cifrari AEAD-2022 utilizzati più avanti in questa guida. L'opzione B (shadowsocks-libev) è una buona scelta se preferisci utilizzare un semplice pacchetto apt con un'unità systemd già pronta e non hai bisogno di AEAD-2022.
Opzione A — shadowsocks-rust (consigliata)
Shadowsocks-rust non include un pacchetto apt nelle release correnti, quindi l'installazione avviene scaricando il binario statico precompilato dalle release del progetto su GitHub. Recupera il tag della release più recente dall'API di GitHub e scarica l'archivio Linux x86_64 corrispondente:
SS_VER=$(curl -s https://api.github.com/repos/shadowsocks/shadowsocks-rust/releases/latest | grep -Po '"tag_name": "\K[^"]*')
echo "Latest version: $SS_VER"
cd /root
wget "https://github.com/shadowsocks/shadowsocks-rust/releases/download/${SS_VER}/shadowsocks-${SS_VER}.x86_64-unknown-linux-gnu.tar.xz"
Se il tuo VPS è arm64 anziché x86_64 (verifica con `uname -m`), sostituisci x86_64-unknown-linux-gnu con aarch64-unknown-linux-gnu nel nome del file sopra.
Estrai l'archivio e installa i file binari a livello di sistema:
tar -xf shadowsocks-*.tar.xz
install -m 755 ssserver ssservice ssmanager ssurl /usr/local/bin/
rm -f shadowsocks-*.tar.xz ssserver ssservice ssmanager ssurl sslocal 2>/dev/null
Verifica che il file binario sia presente nella posizione corretta e controlla la versione installata:
ssserver --version
Crea la directory in cui risiederà il file di configurazione:
mkdir -p /etc/shadowsocks-rust
Questa guida installa una versione fissa anziché utilizzare uno script di installazione in bash. Per eseguire l'aggiornamento in seguito, rieseguire i due comandi precedenti con una nuova ricerca SS_VER, arrestare il servizio, sostituire il file binario e riavviarlo (Sezione 6).
Opzione B — shadowsocks-libev (alternativa, pacchetto apt)
Shadowsocks-libev è incluso nel repository universe di Ubuntu (Ubuntu 16.10+) e nel repository principale di Debian (Debian 8+), quindi non è necessario alcun PPA di terze parti su 22.04/24.04 o Debian 11/12:
apt install -y shadowsocks-libev
Se apt segnala che il pacchetto non è stato trovato, il repository universe è disabilitato; abilitalo e riprova:
add-apt-repository universe && apt update && apt install -y shadowsocks-libev
Il pacchetto installa le proprie unità systemd (shadowsocks-libev.service per la configurazione predefinita, più [email protected] per le configurazioni specifiche per istanza) e crea automaticamente il file /etc/shadowsocks-libev/config.json. Le sezioni 4-6 descrivono i comandi e i percorsi dei file specifici di libev, oltre a quelli di Rust. Il resto delle sezioni relative al client (7-13) di questa guida si applica in modo identico a entrambe le implementazioni del server, poiché entrambe utilizzano lo stesso protocollo Shadowsocks/SIP002.
Generazione della password e scelta di un algoritmo di cifratura
L'autenticazione Shadowsocks si basa su un'unica password condivisa e su un algoritmo di cifratura (metodo di crittografia) concordato da entrambe le parti: non è necessario gestire UUID, coppie di chiavi o certificati separati.
Famiglie di cifrari
- AEAD-2022 (consigliato, solo shadowsocks-rust): 2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm, 2022-blake3-chacha20-poly1305. Design più recente (SIP022) con una protezione più robusta contro gli attacchi di replay e supporto per più utenti che condividono una porta. La password deve essere una stringa base64 della stessa lunghezza della chiave di cifratura (16 byte per le varianti a 128 bit, 32 byte per la variante a 256 bit).
- AEAD classico (supportato sia da rust che da libev): aes-256-gcm, aes-128-gcm, chacha20-ietf-poly1305. Ampia compatibilità con client meno recenti e con shadowsocks-libev; la password può essere qualsiasi passphrase, poiché viene elaborata tramite una funzione di derivazione della chiave anziché essere utilizzata direttamente come materiale della chiave.
Questa guida utilizza 2022-blake3-aes-256-gcm per il server shadowsocks-rust, poiché è l'opzione più potente e aggiornata e tutti i client consigliati in seguito (v2rayN, v2rayNG, Shadowrocket, Streisand, ShadowsocksX-NG) la supportano. Se hai installato shadowsocks-libev nella Sezione 3, usa chacha20-ietf-poly1305 o aes-256-gcm al suo posto, poiché libev non implementa AEAD-2022.
Genera una chiave (shadowsocks-rust)
ssservice genkey -m "2022-blake3-aes-256-gcm"
Questo stampa una stringa base64: questa è la tua password. Copiala in un posto sicuro; la incollerai sia nella configurazione del server nella Sezione 5 che nel link del client nella Sezione 7.
Scegli una frase di accesso (shadowsocks-libev)
Per i cifrari AEAD classici utilizzati da shadowsocks-libev, qualsiasi stringa casuale sufficientemente lunga funziona, poiché viene elaborata tramite PBKDF/HKDF anziché essere utilizzata come chiave grezza. Generane una con:
openssl rand -base64 32
Scrittura della configurazione del server
Shadowsocks-ruggine
Aprire il file di configurazione per modificarlo:
nano /etc/shadowsocks-rust/config.json
Incolla il modello qui sotto, sostituendo la tua password dalla Sezione 4 (e la porta dalla Sezione 2, se l'hai modificata da 8388):
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "YOUR-GENERATED-KEY-HERE",
"method": "2022-blake3-aes-256-gcm",
"mode": "tcp_and_udp",
"timeout": 300,
"nofile": 51200
}
Premi Ctrl+O (WriteOut) per salvare il file, Invio per confermare il nome del file, quindi Ctrl+X per uscire da nano.
I campi importanti: server è in ascolto su tutte le interfacce (0.0.0.0); server_port è la porta aperta nella Sezione 2; password/method sono le credenziali e la cifratura della Sezione 4; mode abilita sia il relaying TCP che UDP; timeout è il timeout di connessione inattiva in secondi; nofile aumenta il limite dei descrittori di file per i server occupati.
Convalida il JSON e assicurati che il binario lo accetti prima di integrarlo in systemd:
ssserver -c /etc/shadowsocks-rust/config.json --help >/dev/null && echo "binary OK"
python3 -m json.tool /etc/shadowsocks-rust/config.json >/dev/null && echo "JSON OK"
Crea l'unità systemd (shadowsocks-rust)
La versione binaria non include un'unità systemd, quindi creane una:
nano /etc/systemd/system/ssserver.service
[Unit]
Description=Shadowsocks-Rust Server
Documentation=https://github.com/shadowsocks/shadowsocks-rust
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks-rust/config.json
Restart=on-failure
RestartSec=5s
LimitNOFILE=51200
User=root
[Install]
WantedBy=multi-user.target
Salva ed esci come descritto sopra, quindi indica a systemd di rilevare il nuovo file di unità:
systemctl daemon-reload
Shadowsocks-libev
Il pacchetto apt ha già creato il file /etc/shadowsocks-libev/config.json con una configurazione predefinita (solo loopback, password casuale) e la propria unità systemd. Aprilo per modificarlo:
nano /etc/shadowsocks-libev/config.json
Sostituire il contenuto con:
{
"server":"0.0.0.0",
"server_port":8388,
"password":"YOUR-PASSPHRASE-HERE",
"method":"chacha20-ietf-poly1305",
"mode":"tcp_and_udp",
"timeout":300
}
La configurazione predefinita utilizza server: ["::1", "127.0.0.1"] (solo loopback); modificandola in "0.0.0.0" si rende il server raggiungibile dall'indirizzo IP pubblico: non saltare questo passaggio se hai copiato il file predefinito invece del modello sopra.
Avvio del servizio e abilitazione dell'avvio automatico
Shadowsocks-ruggine
systemctl enable --now ssserver
systemctl status ssserver --no-pager
Lo stato dovrebbe indicare attivo (in esecuzione). Verificare che qualcosa sia effettivamente in ascolto sulla porta (entrambi i protocolli):
ss -lntp | grep ':8388'
ss -lunp | grep ':8388'
Se il servizio non si avvia, il modo più rapido per scoprirne il motivo è consultare il journal di systemd (per informazioni generali sulla lettura dei log di Linux, vedere Come leggere i log di Linux e dove trovarli ):
journalctl -u ssserver -n 50 --no-pager
Shadowsocks-libev
systemctl restart shadowsocks-libev
systemctl enable shadowsocks-libev
systemctl status shadowsocks-libev --no-pager
Verifica la porta e i log nello stesso modo di shadowsocks-rust, sostituendo il nome del servizio:
ss -lntp | grep ':8388'
ss -lunp | grep ':8388'
journalctl -u shadowsocks-libev -n 50 --no-pager
Creazione del collegamento di connessione con il cliente
I client Shadowsocks importano un singolo link di condivisione ss:// (nel formato URL SIP002) anziché un file di configurazione. Il link codifica la cifratura e la password in base64 nella parte userinfo dell'URL:
ss://base64(method:password)@your_IP_address:port#label
Genera la parte base64 sul server (questo evita eventuali errori di battitura dovuti alla codifica manuale):
METHOD="2022-blake3-aes-256-gcm"
PASSWORD="YOUR-GENERATED-KEY-HERE"
USERINFO=$(echo -n "${METHOD}:${PASSWORD}" | base64 -w0)
echo "ss://${USERINFO}@your_IP_address:8388#My-SS-Server"
Esempio di output (con chiave segnaposto):
ss://MjAyMi1ibGFrZTMtYWVzLTI1Ni1nY206eHl6X2V4YW1wbGVfa2V5X2hlcmU=@your_IP_address:8388#My-SS-Server
Il testo dopo # è solo un'etichetta di visualizzazione che puoi rinominare liberamente in qualsiasi client. Per un server shadowsocks-libev, sostituisci METHOD="chacha20-ietf-poly1305" (o aes-256-gcm) e la relativa passphrase dalla Sezione 4.
Trasformalo in un codice QR in modo che i client mobili possano scansionarlo direttamente:
qrencode -o ~/ss-client.png "ss://${USERINFO}@your_IP_address:8388#My-SS-Server"
Copia il file PNG sul tuo computer usando scp, eseguendo il comando dal terminale del tuo computer (o PowerShell su Windows), non dal server:
scp root@your_IP_address:~/ss-client.png .
Connessione da Windows
In questa sezione tutto avviene sul tuo PC Windows, non tramite SSH: il client deve essere eseguito sul dispositivo che utilizzerà effettivamente il proxy.
Installa v2rayN
v2rayN è un client GUI gratuito e attivamente mantenuto, con supporto nativo per Shadowsocks, oltre a VLESS, VMess, Trojan e altri. Scarica l'ultima versione dalla pagina del progetto.
Scarica il file .zip per Windows a 64 bit (nelle versioni più recenti di v2rayN, la build autonoma non richiede un runtime .NET separato), estrailo in una cartella a tua scelta ed esegui v2rayN.exe.
Importa il server
Copia il link ss:// creato nella Sezione 7 negli appunti (oppure copia il codice QR in formato PNG con scp e aprilo), quindi in v2rayN scegli Server → Importa URL in blocco dagli appunti (oppure scansiona il codice QR tramite lo scanner integrato). Il nuovo profilo server apparirà nell'elenco con l'etichetta che hai impostato dopo il #.
Fai clic con il pulsante destro del mouse sul profilo e selezionalo come attivo, quindi abilita il proxy di sistema (o la modalità TUN, per instradare l'intera macchina) dalla barra degli strumenti della finestra principale.
Connessione da macOS
Tutto ciò che viene descritto in questa sezione avviene sul tuo Mac, non tramite SSH.
Installa ShadowsocksX-NG
ShadowsocksX-NG è il client GUI nativo per macOS di Shadowsocks, disponibile da tempo; l'ultima versione include una build nativa per Apple Silicon e una per Intel. Scarica l'ultimo file .dmg dalla pagina delle release.
Apri il file .dmg e trascina ShadowsocksX-NG nella cartella Applicazioni, quindi avvialo: apparirà come icona nella barra dei menu.
Importa il server
Copia il link ss:// dalla Sezione 7 negli appunti, quindi fai clic sull'icona della barra dei menu → Server → Preferenze server → sul + in basso a sinistra e scegli "Importa dagli appunti" (oppure scansiona il codice QR con "Scansiona codice QR dallo schermo" dopo aver aperto il file PNG). Seleziona il nuovo profilo dal menu a tendina della barra dei menu, quindi attiva "Shadowsocks: Attivato" e scegli la modalità di routing "PAC Auto" o "Globale" dallo stesso menu.
Connessione da un desktop Linux
Tutto ciò che viene descritto in questa sezione avviene sulla tua macchina Linux, non sul VPS.
Installare il client locale
Se hai installato shadowsocks-rust sul server nella Sezione 3, lo stesso archivio di rilascio contiene sslocal, un client proxy locale SOCKS5/HTTP. Scaricalo e installalo nello stesso modo del binario del server (modifica il suffisso OS/arch per il tuo desktop se non è x86_64-unknown-linux-gnu):
SS_VER=$(curl -s https://api.github.com/repos/shadowsocks/shadowsocks-rust/releases/latest | grep -Po '"tag_name": "\K[^"]*')
wget "https://github.com/shadowsocks/shadowsocks-rust/releases/download/${SS_VER}/shadowsocks-${SS_VER}.x86_64-unknown-linux-gnu.tar.xz"
tar -xf shadowsocks-*.tar.xz
sudo install -m 755 sslocal /usr/local/bin/
Configurare ed eseguire
Crea una piccola configurazione locale in ascolto su 127.0.0.1:1080 come proxy SOCKS5:
mkdir -p ~/.config/shadowsocks-rust
cat > ~/.config/shadowsocks-rust/local.json << 'EOF'
{
"server": "your_IP_address",
"server_port": 8388,
"password": "YOUR-GENERATED-KEY-HERE",
"method": "2022-blake3-aes-256-gcm",
"local_address": "127.0.0.1",
"local_port": 1080,
"mode": "tcp_and_udp"
}
EOF
sslocal -c ~/.config/shadowsocks-rust/local.json
Imposta il tuo browser o le impostazioni di rete del sistema su un proxy SOCKS5 all'indirizzo 127.0.0.1:1080. Per un'interfaccia grafica, Nekoray o le versioni derivate di ShadowsocksX-Qt5 possono importare lo stesso link ss:// dalla Sezione 7 e gestire sslocal per te, invece di doverlo fare manualmente.
Connessione da Android
Qui tutto avviene sul tuo dispositivo Android, non tramite SSH.
Installa un client
Due buone opzioni:
- Shadowsocks per Android: il client ufficiale dell'organizzazione Shadowsocks. Installalo da Google Play (cerca "Shadowsocks") oppure scarica l'APK direttamente dalla pagina delle release del progetto se Play non è disponibile nel tuo browser. regione.
- v2rayNG — la controparte Android di v2rayN, che supporta Shadowsocks oltre a VLESS/VMess/Trojan; utile se si desidera un'unica app per più protocolli. tipi.
Importa il server
In entrambe le app: tocca il pulsante +, scegli "Importa dagli appunti" dopo aver copiato il link ss:// dalla Sezione 7, oppure "Scansiona il codice QR" e inquadra il file PNG con la fotocamera. Tocca il profilo importato per selezionarlo, quindi tocca il pulsante Connetti. Android richiederà l'autorizzazione VPN la prima volta: approvala per stabilire la connessione.
Connessione da iOS
Qui tutto avviene sul tuo iPhone o iPad, non tramite SSH.
Installa un client compatibile con Shadowsocks
Shadowrocket è il client iOS più utilizzato con supporto Shadowsocks; è un'app a pagamento nella maggior parte degli store. Cercala nell'App Store o aprila.
Streisand è un'alternativa gratuita e open-source che supporta anche Shadowsocks, oltre a VLESS, Trojan e altri protocolli.
I cataloghi dell'App Store variano a seconda della piattaforma/regione e possono cambiare nel tempo; se nessuno dei due è visibile nel tuo, cerca "Shadowsocks" o "V2Box" nell'App Store.
Importa il server
Copia il link ss:// negli appunti, apri il client e utilizza l'opzione Aggiungi/Importa dagli appunti oppure scansiona il codice QR della Sezione 7 con lo scanner integrato del client. Attiva il nuovo profilo; iOS richiederà l'autorizzazione per la configurazione VPN la prima volta, che dovrai approvare tramite Face ID, Touch ID o il tuo codice di accesso.
Verifica della connessione
Con il tunnel attivo dalla Sezione 8, 9, 10, 11 o 12, torna al tuo dispositivo (non alla sessione SSH) e apri un qualsiasi strumento di verifica dell'indirizzo IP in un browser: l'indirizzo visualizzato dovrebbe corrispondere all'indirizzo IP del tuo VPS, ovvero your_IP_address.
Per verificare dal lato server, invece, controlla il journal di systemd per l'attività di connessione e conferma le sessioni stabilite sulla porta (usa ssserver per il journal di Rust o shadowsocks-libev per il journal di libev):
journalctl -u ssserver -n 50 --no-pager
ss -tnp | grep ':8388'
Riferimento:
|
Settore |
Valore |
|
Indirizzo |
l'indirizzo IP pubblico del tuo VPS |
|
Porto |
8388 (lo stesso porto aperto nella Sezione 2) |
|
Password |
la chiave/frase di accesso generata nella Sezione 4 |
|
Metodo |
2022-blake3-aes-256-gcm (rust) o chacha20-ietf-poly1305 (libev) — devono corrispondere esattamente su entrambi i lati |
|
Moda |
tcp_and_udp — abilita sia il proxy TCP che il relay UDP (DNS, alcuni giochi) |
|
Plugin |
Nessuno di questi viene utilizzato in questa guida: Shadowsocks non necessita di SNI, certificati o plugin di trasporto per funzionare. |
Conclusione
Seguendo questa guida, il tuo VPS eseguirà un proprio server Shadowsocks — sia shadowsocks-rust con un moderno algoritmo di cifratura AEAD-2022, sia shadowsocks-libev dal repository ufficiale di Ubuntu/Debian — come servizio systemd che sopravvive al riavvio senza alcun intervento da parte tua.
Aggiunta di altri utenti:
- La soluzione più semplice: generare una seconda password (Sezione 4) ed eseguire una seconda istanza di ssserver/shadowsocks-libev su una porta diversa con il proprio file di configurazione e la propria unità systemd, quindi ripetere le Sezioni 5-7 per quella porta.
- shadowsocks-rust con cifratura AEAD-2022 supporta anche più utenti che condividono una porta e una chiave di derivazione della password tramite l'array "users" in config.json (Extensible Identity Headers, SIP022) — consultare la sezione Configurazione del README di shadowsocks-rust per la sintassi esatta se è necessario il conteggio del traffico per utente su una singola porta.
Ecco alcune abitudini da mantenere anche dopo l'avvio del server:
- Mantieni il server aggiornato. Per shadowsocks-rust, esegui periodicamente nuovamente i passaggi di download e installazione descritti nella Sezione 3 con una nuova ricerca della versione, quindi riavvia ssserver con systemctl restart. Per shadowsocks-libev, è sufficiente un semplice apt upgrade.
- Eseguite un backup del file config.json in un luogo privato al di fuori del server. Contiene la password di ogni client; perderlo significa dover rigenerare le credenziali per ogni dispositivo.
- Se un dispositivo viene smarrito o un client viene compromesso, ruotare la password: generarne una nuova (Sezione 4), aggiornare il file config.json, riavviare il servizio e ricostruire il collegamento client (Sezione 7) per ogni dispositivo rimanente.
Se la connessione non si stabilisce, controlla in quest'ordine:
- lo stato del servizio (systemctl status ssserver --no-pager o shadowsocks-libev) e il journal (journalctl -u ssserver -n 50 --no-pager)
- le regole del firewall (stato ufw: la porta deve essere aperta sia per tcp che per udp)
- che la porta non sia già occupata da un altro servizio (ss -lntp | grep ':8388' dovrebbe mostrare solo ssserver/ss-server)
- che la password, il metodo e la porta nel client corrispondano esattamente a config.json: anche un solo carattere non corrispondente fa fallire l'handshake silenziosamente, manifestandosi solitamente come un timeout di connessione anziché come un errore esplicito.
- quella modalità è impostata su tcp_and_udp sul server se il client necessita di UDP (DNS-over-proxy, alcuni giochi/app) e non solo su tcp_only
Stai confrontando Shadowsocks con altre opzioni? Consulta la Guida pratica a Xray VLESS per un protocollo basato su TLS camuffato, più difficile da identificare su una rete fortemente filtrata, la Guida alla distribuzione del server AmneziaWG e Come configurare Wireguard VPN sul tuo server per alternative basate su WireGuard, oppure la configurazione di Hysteria2 e TUIC per due protocolli progettati per reti con perdita di pacchetti o fortemente filtrate. Se ti serve solo un semplice proxy anziché una configurazione di tunneling completa, la configurazione di 3proxy su CentOS/ArchLinux è un'alternativa molto più leggera, e la vecchia configurazione del server VPN su Linux: PPTP o OpenVPN? illustra protocolli più semplici da configurare ma molto più facili da rilevare e bloccare per i sistemi DPI. Per la protezione generale del server una volta che il proxy è attivo, consulta Utenti Linux: Gestione e autorizzazioni.