Questo tutorial ti mostrerà come configurare il server proxy Shadowsocks su Ubuntu. Shadowsocks è un proxy Socks5 leggero, veloce e sicuro per aggirare la censura di Internet. Impareremo come configurare il lato server e come configurare il client desktop su Ubuntu. Ci sono molte implementazioni di Shadowsocks, questo tutorial ti mostra come usare Shadowsocks-libev, perché
- È scritto in C, molto veloce anche su macchine di fascia bassa.
- È ben tenuto.
- È l'implementazione più ricca di funzionalità. Sono supportati TCP fast open, multiutente, API di gestione, modalità reindirizzamento, modalità tunnel, inoltro UDP, cifrature AEAD e plug-in.
Prerequisiti
Per completare questo tutorial, avrai bisogno di:
- Un VPS (server privato virtuale). Raccomando Vultr. Offrono 512 M di memoria VPS ad alte prestazioni per soli $ 2,5 al mese, perfetto per il tuo server proxy privato.
- Quindi installa Ubuntu sul tuo VPS.
Passaggio 1:installa Shadowsocks-libev Server su Ubuntu
SSH nel tuo server Ubuntu remoto. Shadowsocks-libev
è incluso nel repository di Ubuntu dal 17.04, quindi puoi installarlo con:
sudo apt update sudo apt install shadowsocks-libev
Gli utenti di Ubuntu 16.04 possono installarlo da PPA eseguendo i seguenti comandi. software-properties-common
è necessario se si desidera installare il software da PPA. Potrebbe mancare sul tuo server Ubuntu.
sudo apt install software-properties-common -y sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev -y sudo apt update sudo apt install shadowsocks-libev
La libreria di criptovalute di sodio (libsodium) verrà installata insieme a shadowsocks-libev. È un requisito se si desidera utilizzare il metodo di crittografia ChaCha20-Poly1305 sicuro e veloce. Una volta installato, modifica il file di configurazione.
sudo nano /etc/shadowsocks-libev/config.json
I contenuti predefiniti del file sono i seguenti.
{ "server":["::1", "127.0.0.1"], "mode":"tcp_and_udp", "server_port":8388, "local_port":1080, "password":"ACRrobo9ymXb", "timeout":60, "method":"chacha20-ietf-poly1305" }
Dobbiamo cambiare 127.0.0.1
a 0.0.0.0
, quindi il server Shadowsocks-libev ascolterà sull'indirizzo IP pubblico. Quindi cambia server_port
ad altri numeri di porta come 8888. La password è stata generata casualmente, quindi puoi lasciarla così com'è.
Salva e chiudi il file. Quindi riavvia il servizio shadowsocks-libev per rendere effettive le modifiche.
sudo systemctl restart shadowsocks-libev.service
Abilita l'avvio automatico all'avvio.
sudo systemctl enable shadowsocks-libev.service
Controlla il suo stato. Assicurati che sia in esecuzione.
systemctl status shadowsocks-libev.service
Se vedi il seguente errore.
This system doesn't provide enough entropy to quickly generate high-quality random numbers. The service will not start until enough entropy has been collected.
Puoi correggere questo errore installando rng-tools
.
sudo apt-get install rng-tools
Quindi esegui
sudo rngd -r /dev/urandom
Ora puoi avviare il servizio Shadowsocks-libev.
Fase 2:Configura Firewall
Se stai utilizzando il firewall iptables sul tuo server, devi consentire il traffico verso la porta TCP e UDP su cui Shadowsocks è in ascolto. Ad esempio, se la porta 8888 è utilizzata da Shadowsocks, eseguire il comando seguente:
sudo iptables -I INPUT -p tcp --dport 8888 -j ACCEPT sudo iptables -I INPUT -p udp --dport 8888 -j ACCEPT
Se stai utilizzando il firewall UFW, esegui i seguenti comandi:
sudo ufw allow 8888
Se utilizzi AWS o Google Cloud, devi configurare il firewall nel pannello di controllo basato sul Web.
Fase 3:installa e configura il client Shadowsocks-libev
Desktop Ubuntu
Il shadowsocks-libev
il pacchetto contiene sia il software del server che il software client. Sul desktop Ubuntu 20.04, 18.04, esegui i seguenti comandi per installare Shadowsocks-libev.
sudo apt update sudo apt install shadowsocks-libev
Sul desktop Ubuntu 16.04, esegui i seguenti comandi per installare Shadowsocks-libev.
sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev -y sudo apt update sudo apt install shadowsocks-libev
Shadowsocks-libev (il server) si avvierà automaticamente dopo essere stato installato. Devi fermare il server Shadowsocks sul desktop Ubuntu.
sudo systemctl stop shadowsocks-libev
Inoltre, disabilita l'avvio automatico all'avvio.
sudo systemctl disable shadowsocks-libev
Il binario del client Shadowsocks è denominato ss-local
. C'è un modello di unità di servizio systemd per questo: /lib/systemd/system/[email protected]
. Prima di avviare il client, è necessario creare il file di configurazione lato client. Possiamo copiare la configurazione del server Shadowsocks-libev nel file di configurazione del client.
sudo cp /etc/shadowsocks-libev/config.json /etc/shadowsocks-libev/location-of-your-server.json
Puoi sostituire location-of-your-server
con qualcosa come OFS, LAX. Quindi modifica il file di configurazione del client.
sudo nano /etc/shadowsocks-libev/location-of-your-server.json
Cambia l'indirizzo del server con l'indirizzo IP pubblico del tuo server e aggiungi la seguente riga per dire al client di rimanere in ascolto su 127.0.0.1.
"local_address":"127.0.0.1",
Quindi il file di configurazione del client sarà simile a questo:
{ "server":"your-server-ip-address", "mode":"tcp_and_udp", "server_port":8888, "local_address":"127.0.0.1", "local_port":1080, "password":"ACRrobo9ymXb", "timeout":60, "method":"chacha20-ietf-poly1305" }
Salva e chiudi il file. Quindi possiamo avviare il client con:
sudo systemctl start [email protected]location-of-your-server.service
E abilita l'avvio automatico all'avvio.
sudo systemctl enable [email protected]location-of-your-server.service
Controlla il suo stato. Assicurati che sia in esecuzione.
systemctl status [email protected]location-of-your-server.service
Ora il processo ss-local è in ascolto su 127.0.0.1:1080 sul tuo desktop Ubuntu ed è connesso al tuo server Shadowsocks.
Desktop Windows
Gli utenti Windows possono scaricare questo client Shadowsocks. Una volta installato, puoi aggiungere un nuovo server nel software client. Specificare l'indirizzo IP del server, la porta e la password. Fai clic su Apply
pulsante
Se disponi di più server proxy, puoi fare clic su Add
pulsante per aggiungere più server proxy. Tieni presente che utilizzi un solo server proxy alla volta.
Fase 4:Configura il browser Web per utilizzare il proxy Socks
Per fare in modo che il tuo programma utilizzi un proxy socks, il programma deve supportare il proxy socks. Programmi come Firefox, Google Chrome e Dropbox consentono agli utenti di utilizzare il proxy. Ti mostrerò come configurare Firefox e Google Chrome.
Firefox
In Firefox, vai a Modifica> Preferenze> Generale (o Strumenti -> Opzioni -> Generale ). Quindi scorri verso il basso e fai clic su Impostazioni in Proxy di rete . Nelle Impostazioni di connessione finestra, seleziona configurazione proxy manuale . Quindi seleziona CALZINI v5 perché Shadowsocks è un proxy Socks5. Inserisci 127.0.0.1
nel campo SOCKS Host e 1080
nel campo portuale. Assicurati di DNS proxy quando utilizzi SOCKS v5 è abilitato. Fai clic su OK per applicare queste modifiche.
Google Chrome
Sebbene tu possa configurare il proxy per Google Chrome e il browser Chromium dalla riga di comando, ti consiglio di installare l'estensione Proxy SwitchyOmega per gestire i proxy.
Una volta installata l'estensione in Google Chrome, configura un server proxy come segue:
- Scegli il
SOCKS5
protocollo. - Imposta
127.0.0.1
come indirizzo del server. - Imposta
1080
come numero di porta.
Applicare le modifiche. Quindi fai clic sull'icona delle estensioni nell'angolo in alto a destra e fai clic su Proxy SwithyOmega
.
Per impostazione predefinita, SwithyOmega utilizza le impostazioni proxy del sistema operativo. Dobbiamo cambiarlo da system proxy
a proxy
.
Ora il tuo proxy dovrebbe funzionare.
Fase 5:test di perdita DNS
Vai su dnsleaktest.com. Vedrai l'indirizzo IP del tuo server Shadowsocks, che indica che il tuo proxy funziona.
Fare clic sul test standard. Assicurati che il tuo ISP locale non sia nei risultati del test.
Proxy nella riga di comando
Per consentire ai programmi della riga di comando di utilizzare il proxy, puoi installare tsocks
.
sudo apt install tsocks
Quindi modifica il file di configurazione.
sudo nano /etc/tsocks.conf
Trova la riga seguente:
server = 192.168.0.1
Cambialo in
server = 127.0.0.1
Salva e chiudi il file. Ora puoi consentire al tuo programma da riga di comando di utilizzare il proxy Shadowsocks in questo modo:
sudo tsocks apt update
C'è anche un programma simile chiamato proxychains.
Abilita apertura rapida TCP
Puoi velocizzare Shadowsocks abilitando l'apertura rapida del TCP. TCP è un protocollo orientato alla connessione, il che significa che i dati possono essere scambiati solo dopo che è stata stabilita una connessione, che avviene tramite l'handshake a tre vie. In altre parole, tradizionalmente, i dati possono essere scambiati solo dopo il completamento dell'handshake a tre vie. TCP fast open (TFO) è un meccanismo che consente lo scambio di dati prima del completamento dell'handshake a tre vie, risparmiando fino a 1 tempo di andata e ritorno (RTT).
Il supporto per l'apertura rapida TCP è unito al kernel Linux dalla versione 3.7 e abilitato per impostazione predefinita dalla versione 3.13. Puoi controllare la versione del tuo kernel eseguendo:
uname -r
Per controllare la configurazione di apertura rapida TCP sul tuo server Ubuntu, esegui
cat /proc/sys/net/ipv4/tcp_fastopen
Può restituire 4 valori.
- 0 significa disabilitato.
- 1 significa che è abilitato per la connessione in uscita (come client).
- 2 significa che è abilitato per la connessione in entrata (come server).
- 3 significa che è abilitato sia per la connessione in uscita che per quella in entrata.
Tutti i miei Ubuntu VPS (Virtual Private Server) hanno restituito 1
dopo aver eseguito il comando precedente. Vogliamo che tcp_fastopen sia impostato su 3 sul nostro server. Per ottenere ciò, possiamo modificare il file di configurazione sysctl.
sudo nano /etc/sysctl.conf
Quindi incolla la seguente riga alla fine del file.
net.ipv4.tcp_fastopen=3
Ricarica le impostazioni sysctl per rendere effettive le modifiche.
sudo sysctl -p
Quindi dovrai anche abilitare l'apertura rapida TCP nel file di configurazione di Shadowsocks.
sudo nano /etc/shadowsocks-libev/config.json
Aggiungi la riga seguente.
"fast_open": true
Quindi il tuo file di configurazione del server Shadowsocks sarà simile a questo:
{ "server":"your-server-ip-address", "server_port":8388, "local_port":1080, "password":"focobguph", "timeout":60, "method":"chacha20-ietf-poly1305", "fast_open": true }
Nota che l'ultima riga di configurazione non ha virgole. Salva e chiudi il file. Quindi riavvia il server Shadowsocks.
sudo systemctl restart shadowsocks-libev
Controlla se è in esecuzione. (Un errore nel file di configurazione può impedirne il riavvio.)
systemctl status shadowsocks-libev
Devi anche modificare il file di configurazione del client Shadowsocks e riavviarlo per abilitare l'apertura rapida TCP sul desktop di Ubuntu.
Abilita TCP BBR
TCP BBR è un algoritmo di controllo della congestione TCP che può migliorare drasticamente la velocità di connessione. Dai un'occhiata al seguente tutorial.
- Come aumentare facilmente le prestazioni della rete Ubuntu abilitando TCP BBR
Per un maggiore utilizzo su Shadowsocks, controlla il manuale.
man shadowsocks-libev
Risoluzione dei problemi
Di tanto in tanto, il mio proxy Shadowsocks-libev smette di funzionare e il seguente errore viene visualizzato sul lato server quando controllo lo stato con systemctl
.
ERROR: server recv: Connection reset by peer
Sul lato client, l'errore restituito da systemctl
è:
ERROR: remote_recv_cb_recv: Connection reset by peer
Non so perché succede, ma riavviando shadowsocks-libev
il servizio sul server può risolvere questo problema.
sudo systemctl restart shadowsocks-libev
Non voglio riavviare manualmente il servizio ogni volta, quindi aggiungo un cron job per farlo periodicamente.
sudo crontab -e
Metti la riga seguente alla fine del file.
0 */3 * * * /bin/systemctl restart shadowsocks-libev
Questo riavvierà il servizio ogni 3 ore. Vale a dire, il riavvio avviene alle 00:00, 3:00, 6:00, 9:00 e così via. Si noti che l'ora è determinata da cron. Non è determinato calcolando da quanto tempo è in esecuzione il servizio.
Se vedi il seguente errore nel log di Shadowsocks-libev.
ERROR: unable to resolve www.youtube.com
Ciò significa che il server Shadowsocks-libev non può risolvere correttamente il DNS. È utile specificare un server DNS in /etc/shadowsocks-libev/config.json
file. Basta aggiungere la seguente riga nel file e riavviare il servizio shadowsocks-libev.
"name_server":"1.1.1.1",
Se hai il tuo risolutore DNS in esecuzione sul server Shadowsocks, puoi specificare 127.0.0.1 come server dei nomi.
"name_server":"127.0.0.1",
Ricorda che nel file JSON, l'ultima riga non termina con una virgola.
Questo è tutto! Spero che questo tutorial ti abbia aiutato a installare il proxy Shadowsocks-libev su Ubuntu. Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere altri suggerimenti e trucchi 🙂