Knowledgebase Semplici istruzioni per lavorare con il servizio Profitserver
Principale Knowledgebase Guida Shadowsocks (shadowsocks-rust / shadowsocks-libev): VPS, Windows, macOS, Linux, Android, iPhone

Guida Shadowsocks (shadowsocks-rust / shadowsocks-libev): VPS, Windows, macOS, Linux, Android, iPhone


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.

Configurazione della sessione PuTTY per l'accesso SSH. Terminale SSH PuTTY dopo la connessione al VPS. Accesso SSH al VPS riuscito.

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
Comando utilizzato per aggiornare i pacchetti installati. Output dell'aggiornamento del pacchetto. Avviso di aggiornamento del kernel visualizzato durante l'aggiornamento del pacchetto Viene visualizzato il messaggio di riavvio dei servizi durante l'aggiornamento del pacchetto.

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
Comando utilizzato per verificare se è necessario riavviare il sistema. Output del controllo di riavvio necessario.

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.

Comando utilizzato per installare le utilità del server necessarie.

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.

Stato di UFW che mostra le regole SSH e Shadowsocks configurate.

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"
Comando utilizzato per scaricare l'archivio della release shadowsocks-rust.

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
Comando utilizzato per estrarre e installare i binari di shadowsocks-rust.

Verifica che il file binario sia presente nella posizione corretta e controlla la versione installata:

ssserver --version
Versione di ssserver installata.

Crea la directory in cui risiederà il file di configurazione:

mkdir -p /etc/shadowsocks-rust
Creazione della directory di configurazione 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
Comando utilizzato per installare shadowsocks-libev dal repository dei pacchetti.

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"
Comando utilizzato per generare una passphrase casuale per shadowsocks-libev.

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.

Frase di accesso casuale generata.

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:

Comando utilizzato per aprire il file di configurazione di shadowsocks-libev.
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
}
Esempio di configurazione di shadowsocks-libev.

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):

Server in ascolto sulle porte TCP e UDP 8388.
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:

Comandi utilizzati per riavviare, abilitare e ispezionare il servizio shadowsocks-libev. Lo stato del servizio Shadowsocks-libev risulta attivo (in esecuzione).
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):

Esempio di collegamento generato ss:// (a scopo illustrativo).
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.

❮ Articolo precedente Guida alla realtà di Xray VLESS: VPS, Windows, Mac, Android, iPhone
Articolo successivo ❯ Incidente di sicurezza in VMware Manager 6: cosa è successo e cosa fare

Chiedici informazioni su VPS

Siamo sempre pronti a rispondere alle vostre domande a qualsiasi ora del giorno e della notte.