Ako nastaviť proxy server Shadowsocks-libev na CentOS


Tento tutoriál vám ukáže, ako nastaviť proxy server Shadowsocks na CentOS. Shadowsocks je ľahký, rýchly a bezpečný proxy server Socks5 na obídenie internetovej cenzúry. Naučíme sa, ako nastaviť serverovú stranu a ako nakonfigurovať desktopového klienta na CentOS. Existuje mnoho implementácií Shadowsocks, tento tutoriál vám ukáže, ako používať Shadowsocks-libev, pretože

  • Je napísaný v C, veľmi rýchly aj na low-end boxe.
  • Dobre sa udržiava.
  • Je to implementácia s najbohatšími funkciami. Podporované sú rýchle otvorenie TCP, viacpoužívateľské rozhranie API, režim presmerovania, režim tunela, prenos UDP, šifry AEAD a doplnky.

Predpoklady

Na dokončenie tohto návodu budete potrebovať:

  • VPS (virtuálny súkromný server). Odporúčam Vultr. Ponúkajú 512 miliónov pamäťových vysokovýkonných VPS len za 2,5 $mesačne, čo je ideálne pre váš súkromný proxy server.
  • Potom nainštalujte CentOS do svojho VPS.

Aktualizácia: Nový plán Vultr 2,5 $/mesiac zahŕňa iba adresu IPv6. V dátovom centre v New Yorku (NJ) si môžete vybrať plán 3,5 USD/mesiac, aby ste mali adresy IPv4 aj IPv6.

Krok 1: Nainštalujte server Shadowsocks-libev na CentOS

SSH na váš vzdialený server CentOS. Shadowsocks-libev nie je súčasťou úložiska CentOS. Odporúča sa nainštalovať ho z obchodu Snap. Ak chcete nainštalovať softvér z obchodu Snap, musíme nainštalovať démona snapd.

sudo dnf install -y epel-release
sudo dnf update -y
sudo dnf install -y snapd

Spustite a povoľte službu snapd systemd:

sudo systemctl start snapd.service
sudo systemctl enable snapd.service

Potom nainštalujte Shadowsocks-libev.

sudo snap install shadowsocks-libev

Po nainštalovaní môžete spustiť nasledujúci príkaz, ktorý zobrazí podrobné informácie o snape shadowsocks-libev.

snap info shadowsocks-libev

Ako vidíte, k dispozícii je 5 príkazov. Predtým, ako použijeme príkaz na spustenie servera Shadowsocks-libev, musíme vytvoriť konfiguračný súbor pomocou textového editora príkazového riadka, ako je Nano. Nainštalujte Nano pomocou:

sudo dnf install nano

Vytvorte konfiguračný súbor.

sudo nano /var/snap/shadowsocks-libev/common/server-config.json

Do tohto súboru pridajte nasledujúce riadky.

{
    "server":["[::0]", "0.0.0.0"],
    "mode":"tcp_and_udp",
    "server_port":8888,
    "local_port":1080,
    "password":"o+4LmywwopNXSUhA7Wf8wg==",
    "timeout":60,
    "name_server":"8.8.8.8",
    "method":"chacha20-ietf-poly1305"
}

Kde :

  • server: zadajte adresu počúvania. [::0] umožňuje počúvať na všetkých dostupných adresách IPv6 a 0.0.0.0 umožňuje počúvať na všetkých dostupných adresách IPv4.
  • režim: Použite režim TCP aj UDP.
  • server_port: zadajte port, ktorý nepoužíva iný proces na serveri, napríklad 8888.
  • local_port: port 1080 sa bežne používa ako lokálny port pre server SOCKS proxy.
  • heslo: Pomocou tohto príkazu môžete vygenerovať bezpečné náhodné heslo: openssl rand -base64 16.
  • časový limit: 60 sekúnd.
  • name_server: Shadowsocks môžu prinútiť klientov, aby používali špecifikovaný server DNS ako 8.8.8.8. Môžete ho tiež zmeniť na 1.1.1.1, takže klienti budú používať server DNS Cloudflare.
  • metóda: špecifikujte šifrovací algoritmus. chacha20-ietf-poly1305 je veľmi rýchly bezpečný algoritmus.

Uložte a zatvorte súbor. (Ak chcete uložiť súbor v textovom editore Nano, stlačte Ctrl+O a potom potvrďte stlačením Enter. Ak chcete ukončiť, stlačte Ctrl+X. )

Krok 2: Spustite server Shadowsocks-libev ako službu Systemd

Server Shadowsocks-libev môžeme spustiť manuálne, ale je pohodlnejšie vytvoriť preň servisnú jednotku systemd, aby sa mohol automaticky spustiť pri zavádzaní. Na vytvorenie služby systemd použite textový editor Nano.

sudo nano /etc/systemd/system/shadowsocks-libev.service

Do tohto súboru pridajte nasledujúce riadky.

[Unit]
  Description=Shadowsocks-Libev Server
  After=network-online.target
    
[Service]
  Type=simple
  ExecStart=/usr/bin/snap run shadowsocks-libev.ss-server -c /var/snap/shadowsocks-libev/common/server-config.json
  Restart=always
  RestartSec=2
    
[Install]
 WantedBy=multi-user.target

Uložte a zatvorte súbor. Potom spustite službu shadowsocks-libev.

sudo systemctl start shadowsocks-libev.service

Povoliť automatické spustenie pri štarte.

sudo systemctl enable shadowsocks-libev.service

Skontrolujte jej stav. Uistite sa, že beží.

systemctl status shadowsocks-libev.service

Ak ste urobili chybu v súbore služby shadowsocks-libev systemd, opravte ju a znova načítajte systemd.

sudo systemctl daemon-reload

Potom môžete reštartovať službu shadowsocks-libev.

sudo systemctl restart shadowsocks-libev.service

Ak sa zobrazí nasledujúca 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.

Túto chybu môžete opraviť inštaláciou rng-tools.

sudo dnf install rng-tools

Potom bežte

sudo rngd -r /dev/urandom

Teraz môžete spustiť službu Shadowsocks-libev.

Krok 3: Nakonfigurujte bránu firewall

Musíte povoliť prevádzku na portoch TCP a UDP, na ktorých Shadowsocks počúva. Ak napríklad Shadowsocks používa port 8888, spustite nasledujúci príkaz:

sudo firewall-cmd --permanent --add-port=8888/tcp
sudo firewall-cmd --permanent --add-port=8888/udp

Potom znova načítajte firewall, aby sa zmena prejavila.

sudo systemctl reload firewalld

Krok 3: Nainštalujte a nakonfigurujte klienta Shadowsocks-libev

Pracovná plocha CentOS

Balík shadowsocks-libev obsahuje serverový aj klientsky softvér. Binárny súbor klienta Shadowsocks má názov ss-local. Rovnakým spôsobom ho nainštalujte na pracovnú plochu CentOS.

Najprv nainštalujte démona snapd.

sudo dnf install -y epel-release
sudo dnf update -y
sudo dnf install -y snapd

Spustite a povoľte službu snapd systemd:

sudo systemctl start snapd.service
sudo systemctl enable snapd.service

Potom nainštalujte Shadowsocks-libev z obchodu Snap.

sudo snap install shadowsocks-libev

Pred spustením klienta musíme vytvoriť konfiguračný súbor na strane klienta pomocou textového editora príkazového riadka, ako je Nano. Nainštalujte Nano pomocou:

sudo dnf install nano

Vytvorte konfiguračný súbor klienta.

sudo nano /var/snap/shadowsocks-libev/common/client-config.json

Do tohto súboru pridajte nasledujúce riadky.

{
    "server":"your-server-ip-address",
    "mode":"tcp_and_udp",
    "server_port":8888,
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"o+4LmywwopNXSUhA7Wf8wg==",
    "timeout":60,
    "name_server":"8.8.8.8",
    "method":"chacha20-ietf-poly1305"
}

Kde :

  • server: zadajte IP adresu vášho servera.
  • režim: Použite režim TCP aj UDP.
  • server_port: zadajte port, na ktorom server Shadowsocks-libev počúva.
  • local_address: Klient by mal počúvať na localhost.
  • local_port: port 1080 sa bežne používa ako lokálny port pre server SOCKS proxy.
  • heslo: Použite rovnaké heslo ako v konfiguračnom súbore servera.
  • časový limit: 60 sekúnd.
  • name_server: Klient nemusí zadať názvový server, ale ak použijete parameter name_server, musíte použiť rovnaký názvový server ako v konfiguračnom súbore servera.
  • metóda: špecifikujte šifrovací algoritmus. chacha20-ietf-poly1305 je veľmi rýchly bezpečný algoritmus.

Uložte a zatvorte súbor. (Ak chcete uložiť súbor v textovom editore Nano, stlačte Ctrl+O a potom potvrďte stlačením Enter. Ak chcete ukončiť, stlačte Ctrl+X. )

Potom musíme pre klienta vytvoriť jednotku systemd service unit, aby sa mohla automaticky spustiť v čase zavádzania.

sudo nano /etc/systemd/system/shadowsocks-client.service

Do tohto súboru pridajte nasledujúce riadky.

[Unit]
  Description=Shadowsocks-Libev Client
  After=network-online.target
    
[Service]
  Type=simple
  ExecStart=/usr/bin/snap run shadowsocks-libev.ss-local -c /var/snap/shadowsocks-libev/common/client-config.json
  Restart=always
  RestartSec=2
    
[Install]
 WantedBy=multi-user.target

Uložte a zatvorte súbor. Potom spustite shadowsocks-client.service.

sudo systemctl start shadowsocks-client.service

Povoliť automatické spustenie pri štarte.

sudo systemctl enable shadowsocks-client.service

Skontrolujte jej stav. Uistite sa, že beží.

systemctl status shadowsocks-client.service

Teraz klientsky proces Shadowsocks počúva na 127.0.0.1:1080 na vašej pracovnej ploche CentOS a je pripojený k vášmu serveru Shadowsocks.

Tipy na riešenie problémov

Ak sa klientsky proces Shadowsocks nespustí, môžete skontrolovať protokoly a zistiť, čo je zlé.

sudo journalctl -eu shadowsocks-client

V protokole som mal napríklad nasledujúcu chybu.

ERROR: 2:0: Unexpected `m` in object

Ukázalo sa, že som zabudol zabaliť IP adresu servera do dvojitých úvodzoviek v konfiguračnom súbore klienta.

Pracovná plocha systému Windows

Používatelia systému Windows si môžu stiahnuť tohto klienta Shadowsocks. Po nainštalovaní môžete do klientskeho softvéru pridať nový server. Zadajte IP adresu servera, port a heslo. Kliknite na tlačidlo Použiť

Ak máte niekoľko proxy serverov, môžete kliknúť na tlačidlo Pridať a pridať ďalšie proxy servery. Upozorňujeme, že naraz používate iba jeden proxy server.

Krok 4: Nakonfigurujte webový prehliadač na používanie Socks Proxy

Aby váš program používal Socks proxy, program musí podporovať Socks proxy. Programy ako Firefox, Google Chrome a Dropbox umožňujú používateľom používať proxy. Ukážem vám, ako nakonfigurovať Firefox a Google Chrome.

Firefox

Vo Firefoxe prejdite na Upraviť > Predvoľby > Všeobecné (alebo Nástroje -> Možnosti > -> Všeobecné). Potom prejdite nadol a kliknite na položku Nastavenia v časti Proxy siete. V okne Nastavenia pripojenia vyberte možnosť manuálna konfigurácia servera proxy. Potom vyberte SOCKS v5, pretože Shadowsocks je proxy server Socks5. Zadajte 127.0.0.1 do poľa SOCKS Host a 1080 do poľa portu. Uistite sa, že je povolený Proxy DNS pri používaní SOCKS v5. Kliknutím na tlačidlo OK použijete tieto úpravy.

Teraz sa Firefox pripojí k lokálnemu klientovi Shadowsocks, ktorý počúva na 127.0.0.1:1080, potom bude prevádzka smerovaná cez server Shadowsocks-libev.

Google Chrome

Aj keď môžete nakonfigurovať proxy pre prehliadač Google Chrome a Chromium z príkazového riadku, na správu serverov proxy vám odporúčam nainštalovať rozšírenie Proxy SwitchyOmega.

Po nainštalovaní rozšírenia do prehliadača Google Chrome nakonfigurujte server proxy takto:

  • Vyberte protokol SOCKS5.
  • Nastavte 127.0.0.1 ako adresu servera.
  • Nastavte 1080 ako číslo portu.

Použiť zmeny. Potom kliknite na ikonu rozšírenia v pravom hornom rohu a kliknite na Proxy SwithyOmega.

V predvolenom nastavení používa SwithyOmega nastavenia proxy operačného systému. Musíme ho zmeniť z systém proxy na proxy.

Teraz sa Google Chrome pripojí k miestnemu klientovi Shadowsocks, ktorý počúva na 127.0.0.1:1080, potom bude prenos smerovaný cez server Shadowsocks-libev.

Krok 5: Test úniku DNS

Prejdite na stránku dnsleaktest.com. Uvidíte IP adresu servera Shadowsocks, čo znamená, že váš proxy server funguje.

Kliknite na Štandardný test. Uistite sa, že váš miestny ISP nie je vo výsledkoch testu.

Povoliť rýchle otvorenie TCP

Shadowsocks môžete urýchliť povolením rýchleho otvorenia TCP. TCP je protokol orientovaný na spojenie, čo znamená, že údaje je možné vymieňať až po nadviazaní spojenia, ktoré sa vykonáva prostredníctvom trojstranného podávania rúk. Inými slovami, údaje sa tradične dajú vymieňať až po dokončení trojstranného podávania rúk. TCP fast open (TFO) je mechanizmus, ktorý umožňuje výmenu dát pred dokončením trojstranného nadviazania spojenia, čím sa ušetrí až 1 spiatočný čas (RTT).

Podpora rýchleho otvorenia TCP je zlúčená s jadrom Linuxu od verzie 3.7 a štandardne povolená od verzie 3.13. Verziu jadra môžete skontrolovať spustením:

uname -r

Ak chcete skontrolovať konfiguráciu rýchleho otvorenia TCP na serveri CentOS, spustite

cat /proc/sys/net/ipv4/tcp_fastopen

Môže vrátiť 4 hodnoty.

  • 0 znamená vypnuté.
  • 1 znamená, že je povolené pre odchádzajúce pripojenie (ako klient).
  • 2 znamená, že je povolené pre prichádzajúce pripojenie (ako server).
  • 3 znamená, že je povolené pre odchádzajúce aj prichádzajúce pripojenie.

Všetky moje CentOS VPS (Virtual Private Server) vrátili 1 po spustení vyššie uvedeného príkazu. Na našom serveri chceme nastaviť tcp_fastopen na 3. Aby sme to dosiahli, môžeme upraviť konfiguračný súbor sysctl.

sudo nano /etc/sysctl.conf

Potom vložte nasledujúci riadok na koniec súboru.

net.ipv4.tcp_fastopen=3

Znova načítajte nastavenia sysctl, aby sa zmena prejavila.

sudo sysctl -p

Potom budete tiež musieť povoliť rýchle otváranie TCP v konfiguračnom súbore servera Shadowsocks.

sudo nano /var/snap/shadowsocks-libev/common/server-config.json

Pridajte nasledujúci riadok.

"fast_open": true

Takže váš konfiguračný súbor servera Shadowsocks bude vyzerať takto:

{
    "server":["[::0]", "0.0.0.0"],
    "mode":"tcp_and_udp",
    "server_port":8888,
    "local_port":1080,
    "password":"o+4LmywwopNXSUhA7Wf8wg==",
    "timeout":60,
    "name_server":"8.8.8.8",
    "method":"chacha20-ietf-poly1305",
    "fast_open": true
}

Všimnite si, že posledný konfiguračný riadok nekončí čiarkou. Všetky ostatné riadky v bloku {...} by mali končiť čiarkou. Uložte a zatvorte súbor. Potom reštartujte server Shadowsocks.

sudo systemctl restart shadowsocks-libev.service

Skontrolujte, či beží. (Chyba v konfiguračnom súbore môže zabrániť jeho reštartovaniu.)

systemctl status shadowsocks-libev

Musíte tiež upraviť konfiguračný súbor klienta Shadowsocks a reštartovať ho, aby ste umožnili rýchle otvorenie TCP na pracovnej ploche CentOS.

Povoliť TCP BBR

TCP BBR je algoritmus riadenia preťaženia TCP, ktorý môže výrazne zvýšiť rýchlosť pripojenia. Ak ho chcete povoliť na serveri CentOS, upravte súbor /etc/sysctl.conf.

sudo nano /etc/sysctl.conf

Na koniec súboru pridajte nasledujúce dva riadky.

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

Uložte a zatvorte súbor. Potom znova načítajte konfigurácie sysctl.

sudo sysctl -p

Teraz skontrolujte používaný algoritmus kontroly preťaženia.

sysctl net.ipv4.tcp_congestion_control

Výkon :

net.ipv4.tcp_congestion_control = bbr

Gratulujem! Úspešne ste povolili TCP BBR na serveri CentOS.

Zabaliť sa

To je všetko! Dúfam, že vám tento návod pomohol nainštalovať proxy server Shadowsocks-libev na CentOS. Ako vždy, ak ste považovali tento príspevok za užitočný, prihláste sa na odber nášho bezplatného bulletinu a získajte ďalšie tipy a triky 🙂

Shadowsocks je priamy proxy. Chcete vedieť, čo je forward proxy? Prečítajte si prosím nasledujúci článok:

  • Rozdiely medzi dopredným proxy a spätným proxy

Súvisiace články