Tento tutoriál vám ukáže, jak nastavit proxy server Shadowsocks na Ubuntu. Shadowsocks je lehký, rychlý a bezpečný proxy server Socks5, který obchází internetovou cenzuru. Naučíme se, jak nastavit serverovou stranu a jak nakonfigurovat desktopového klienta na Ubuntu. Existuje mnoho implementací Shadowsocks, tento tutoriál vám ukáže, jak používat Shadowsocks-libev, protože
- Je napsán v jazyce C, velmi rychlý i na počítačích nižší třídy.
- Je dobře udržovaný.
- Je to implementace s nejbohatšími funkcemi. Podporovány jsou rychlé otevření TCP, víceuživatelské rozhraní API pro správu, režim přesměrování, režim tunelu, přenos UDP, šifry AEAD a zásuvné moduly.
Předpoklady
K dokončení tohoto kurzu budete potřebovat:
- VPS (virtuální soukromý server). Doporučuji Vultr. Nabízejí 512M paměti vysoce výkonné VPS za pouhých 2,5 $ měsíčně, což je ideální pro váš soukromý proxy server.
- Pak nainstalujte Ubuntu do svého VPS.
Krok 1:Instalace serveru Shadowsocks-libev na Ubuntu
SSH na váš vzdálený server Ubuntu. Shadowsocks-libev
je součástí úložiště Ubuntu od 17.04, takže jej můžete nainstalovat pomocí:
sudo apt update sudo apt install shadowsocks-libev
Uživatelé Ubuntu 16.04 jej mohou nainstalovat z PPA spuštěním následujících příkazů. software-properties-common
je potřeba, pokud chcete nainstalovat software z PPA. Na vašem serveru Ubuntu může chybět.
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
Sodíková krypto knihovna (libsodium) bude nainstalována spolu s shadowsocks-libev. Je to požadavek, pokud chcete používat bezpečnou a rychlou metodu šifrování ChaCha20-Poly1305. Po instalaci upravte konfigurační soubor.
sudo nano /etc/shadowsocks-libev/config.json
Výchozí obsah souboru je následující.
{ "server":["::1", "127.0.0.1"], "mode":"tcp_and_udp", "server_port":8388, "local_port":1080, "password":"ACRrobo9ymXb", "timeout":60, "method":"chacha20-ietf-poly1305" }
Musíme změnit 127.0.0.1
na 0.0.0.0
, takže server Shadowsocks-libev bude naslouchat na veřejné IP adrese. Poté změňte server_port
na jiná čísla portů, jako je 8888. Heslo bylo vygenerováno náhodně, takže ho můžete nechat tak, jak je.
Uložte a zavřete soubor. Poté restartujte službu shadowsocks-libev, aby se změny projevily.
sudo systemctl restart shadowsocks-libev.service
Povolit automatické spouštění při spouštění.
sudo systemctl enable shadowsocks-libev.service
Zkontrolujte jeho stav. Ujistěte se, že běží.
systemctl status shadowsocks-libev.service
Pokud se zobrazí následující chyba.
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.
Tuto chybu můžete opravit instalací rng-tools
.
sudo apt-get install rng-tools
Potom spusťte
sudo rngd -r /dev/urandom
Nyní můžete spustit službu Shadowsocks-libev.
Krok 2:Konfigurace brány firewall
Pokud na svém serveru používáte bránu firewall iptables, musíte povolit provoz na portech TCP a UDP, na kterých Shadowsocks naslouchá. Pokud například Shadowsocks používá port 8888, spusťte následující příkaz:
sudo iptables -I INPUT -p tcp --dport 8888 -j ACCEPT sudo iptables -I INPUT -p udp --dport 8888 -j ACCEPT
Pokud používáte firewall UFW, spusťte následující příkazy:
sudo ufw allow 8888
Pokud používáte AWS nebo Google Cloud, musíte nakonfigurovat firewall na webovém ovládacím panelu.
Krok 3:Instalace a konfigurace klienta Shadowsocks-libev
Ubuntu Desktop
shadowsocks-libev
Balíček obsahuje serverový i klientský software. Na ploše Ubuntu 20.04, 18.04 spusťte následující příkazy k instalaci Shadowsocks-libev.
sudo apt update sudo apt install shadowsocks-libev
Na ploše Ubuntu 16.04 spusťte následující příkazy k instalaci Shadowsocks-libev.
sudo add-apt-repository ppa:max-c-lv/shadowsocks-libev -y sudo apt update sudo apt install shadowsocks-libev
Shadowsocks-libev (server) se po instalaci automaticky spustí. Musíte zastavit server Shadowsocks na ploše Ubuntu.
sudo systemctl stop shadowsocks-libev
Také deaktivujte automatické spouštění při spouštění.
sudo systemctl disable shadowsocks-libev
Binární soubor klienta Shadowsocks se jmenuje ss-local
. Existuje pro to šablona systemd service unit: /lib/systemd/system/[email protected]
. Před spuštěním klienta musíme vytvořit konfigurační soubor na straně klienta. Můžeme zkopírovat konfiguraci serveru Shadowsocks-libev do konfiguračního souboru klienta.
sudo cp /etc/shadowsocks-libev/config.json /etc/shadowsocks-libev/location-of-your-server.json
location-of-your-server
můžete nahradit s něčím jako SFO, LAX. Poté upravte konfigurační soubor klienta.
sudo nano /etc/shadowsocks-libev/location-of-your-server.json
Změňte adresu serveru na veřejnou IP adresu vašeho serveru a přidejte následující řádek, který klientovi řekne, aby naslouchal na 127.0.0.1.
"local_address":"127.0.0.1",
Konfigurační soubor klienta tedy bude vypadat takto:
{ "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" }
Uložte a zavřete soubor. Poté můžeme klienta spustit pomocí:
sudo systemctl start [email protected]location-of-your-server.service
A povolit automatické spouštění při spouštění.
sudo systemctl enable [email protected]location-of-your-server.service
Zkontrolujte jeho stav. Ujistěte se, že běží.
systemctl status [email protected]location-of-your-server.service
Nyní proces ss-local naslouchá na 127.0.0.1:1080 na vaší ploše Ubuntu a je připojen k vašemu serveru Shadowsocks.
Plocha systému Windows
Uživatelé Windows si mohou stáhnout tohoto klienta Shadowsocks. Jakmile je nainstalován, můžete přidat nový server do klientského softwaru. Zadejte IP adresu serveru, port a heslo. Klikněte na Apply
tlačítko
Pokud máte několik proxy serverů, můžete kliknout na Add
tlačítko pro přidání dalších proxy serverů. Všimněte si, že používáte vždy pouze jeden proxy server.
Krok 4:Nakonfigurujte webový prohlížeč pro použití proxy serveru Socks
Aby váš program používal Socks proxy, musí program podporovat Socks proxy. Programy jako Firefox, Google Chrome a Dropbox umožňují uživatelům používat proxy. Ukážu vám, jak nakonfigurovat Firefox a Google Chrome.
Firefox
Ve Firefoxu přejděte na Upravit> Předvolby> Obecné (nebo Nástroje -> Možnosti -> Obecné ). Poté přejděte dolů a klikněte na Nastavení v Network Proxy . V Nastavení připojení vyberte možnost ruční konfigurace serveru proxy . Poté vyberte SOCKS v5 protože Shadowsocks je proxy server Socks5. Zadejte 127.0.0.1
v poli SOCKS Host a 1080
v přístavním poli. Ujistěte se, že Proxy DNS při použití SOCKS v5 je povoleno. Klikněte na OK k použití těchto úprav.
Google Chrome
I když můžete nakonfigurovat proxy pro Google Chrome a prohlížeč Chromium z příkazového řádku, pro správu proxy doporučuji nainstalovat rozšíření Proxy SwitchyOmega.
Po instalaci rozšíření do prohlížeče Google Chrome nakonfigurujte server proxy následovně:
- Vyberte
SOCKS5
protokol. - Nastavte
127.0.0.1
jako adresa serveru. - Nastavte
1080
jako číslo portu.
Použít změny. Poté klikněte na ikonu rozšíření v pravém horním rohu a klikněte na Proxy SwithyOmega
.
Ve výchozím nastavení používá SwithyOmega nastavení proxy operačního systému. Musíme to změnit ze system proxy
na proxy
.
Nyní by váš proxy měl fungovat.
Krok 5:Test netěsnosti DNS
Přejděte na dnsleaktest.com. Uvidíte IP adresu vašeho serveru Shadowsocks, což znamená, že váš proxy funguje.
Klepněte na Standardní test. Ujistěte se, že váš místní ISP není ve výsledcích testu.
Proxy v příkazovém řádku
Chcete-li, aby vaše programy příkazového řádku používaly proxy, můžete nainstalovat tsocks
.
sudo apt install tsocks
Poté upravte konfigurační soubor.
sudo nano /etc/tsocks.conf
Najděte následující řádek:
server = 192.168.0.1
Změňte jej na
server = 127.0.0.1
Uložte a zavřete soubor. Nyní můžete dovolit programu příkazového řádku používat server proxy Shadowsocks takto:
sudo tsocks apt update
Existuje také podobný program s názvem proxychains.
Povolit rychlé otevírání TCP
Shadowsocks můžete urychlit povolením rychlého otevírání TCP. TCP je protokol orientovaný na spojení, což znamená, že data lze vyměňovat pouze po navázání spojení, což se provádí pomocí třícestného handshake. Jinými slovy, tradičně lze data vyměňovat až po dokončení třístranného handshake. TCP fast open (TFO) je mechanismus, který umožňuje výměnu dat před dokončením třístranného navázání spojení, což ušetří až 1 zpáteční čas (RTT).
Podpora rychlého otevření TCP je začleněna do jádra Linuxu od verze 3.7 a ve výchozím nastavení povolena od verze 3.13. Verzi jádra můžete zkontrolovat spuštěním:
uname -r
Chcete-li zkontrolovat konfiguraci rychlého otevření TCP na vašem serveru Ubuntu, spusťte
cat /proc/sys/net/ipv4/tcp_fastopen
Může vrátit 4 hodnoty.
- 0 znamená zakázáno.
- 1 znamená, že je povoleno odchozí připojení (jako klient).
- 2 znamená, že je povoleno příchozí připojení (jako server).
- 3 znamená, že je povoleno pro odchozí i příchozí připojení.
Všechny mé Ubuntu VPS (Virtual Private Server) vrátily 1
po spuštění výše uvedeného příkazu. Chceme, aby byl tcp_fastopen na našem serveru nastaven na 3. Abychom toho dosáhli, můžeme upravit konfigurační soubor sysctl.
sudo nano /etc/sysctl.conf
Poté vložte následující řádek na konec souboru.
net.ipv4.tcp_fastopen=3
Znovu načtěte nastavení sysctl, aby se změna projevila.
sudo sysctl -p
Pak budete také muset povolit rychlé otevírání TCP v konfiguračním souboru Shadowsocks.
sudo nano /etc/shadowsocks-libev/config.json
Přidejte následující řádek.
"fast_open": true
Takže váš konfigurační soubor serveru Shadowsocks bude vypadat takto:
{ "server":"your-server-ip-address", "server_port":8388, "local_port":1080, "password":"focobguph", "timeout":60, "method":"chacha20-ietf-poly1305", "fast_open": true }
Všimněte si, že poslední konfigurační řádek neobsahuje čárku. Uložte a zavřete soubor. Poté restartujte server Shadowsocks.
sudo systemctl restart shadowsocks-libev
Zkontrolujte, zda běží. (Chyba v konfiguračním souboru může zabránit restartování.)
systemctl status shadowsocks-libev
Musíte také upravit konfigurační soubor klienta Shadowsocks a restartovat jej, abyste povolili rychlé otevření TCP na ploše Ubuntu.
Povolit TCP BBR
TCP BBR je algoritmus řízení přetížení TCP, který může výrazně zvýšit rychlost připojení. Podívejte se na následující tutoriál.
- Jak snadno zvýšit výkon sítě Ubuntu povolením TCP BBR
Další použití na Shadowsocks naleznete v příručce.
man shadowsocks-libev
Odstraňování problémů
Tu a tam můj proxy Shadowsocks-libev přestane fungovat a když zkontroluji stav pomocí systemctl
, na straně serveru se zobrazí následující chyba .
ERROR: server recv: Connection reset by peer
Na straně klienta chybu vrátil systemctl
je:
ERROR: remote_recv_cb_recv: Connection reset by peer
Nevím, proč se to děje, ale restartuji shadowsocks-libev
služba na serveru může tento problém vyřešit.
sudo systemctl restart shadowsocks-libev
Nechci službu pokaždé ručně restartovat, takže přidávám úlohu cron, která to za mě pravidelně provádí.
sudo crontab -e
Vložte následující řádek na konec souboru.
0 */3 * * * /bin/systemctl restart shadowsocks-libev
Tím se služba restartuje každé 3 hodiny. To znamená, že restart nastane ve 12:00, 3:00, 6:00, 9:00 a tak dále. Všimněte si, že čas je určen cronem. Není určeno výpočtem, jak dlouho služba běží.
Pokud se v protokolu Shadowsocks-libev zobrazí následující chyba.
ERROR: unable to resolve www.youtube.com
To znamená, že server Shadowsocks-libev nemůže úspěšně vyřešit DNS. Je užitečné zadat server DNS v /etc/shadowsocks-libev/config.json
soubor. Stačí do souboru přidat následující řádek a restartovat službu shadowsocks-libev.
"name_server":"1.1.1.1",
Pokud máte svůj vlastní DNS resolver spuštěný na serveru Shadowsocks, můžete jako jmenný server zadat 127.0.0.1.
"name_server":"127.0.0.1",
Pamatujte, že v souboru JSON poslední řádek nekončí čárkou.
A je to! Doufám, že vám tento tutoriál pomohl nainstalovat proxy Shadowsocks-libev na Ubuntu. Jako vždy, pokud pro vás byl tento příspěvek užitečný, přihlaste se k odběru našeho bezplatného zpravodaje a získejte další tipy a triky 🙂