GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare il server proxy Shadowsocks-libev su Ubuntu

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 🙂


Ubuntu
  1. Come configurare un server LAMP Ubuntu/Debian

  2. Come configurare Nginx come proxy inverso su Ubuntu 20.04

  3. Come configurare WireGuard su Ubuntu 22.04

  4. Come installare Ansible su Ubuntu Server 21.04

  5. Come configurare un server TeamSpeak su Ubuntu 16.04

Come configurare CUPS Print Server su Ubuntu 20.04

Come installare il server SSH su Ubuntu 22.04

Come installare Webmin su Ubuntu 18.04 e Ubuntu 16.04 Server

Come configurare un server Apt-cacher?

Come installare il server proxy Squid su Ubuntu 18.04

Come installare il server Minecraft su Ubuntu 20.04