Установка Shadowsocks-Rust на сервер Debian

(и его производные а-ля Ubuntu, Mint, Deepin, AntiX и т.д.)

0. Предисловие

Я заранее предполагаю, что все команды будут выполняться от имени суперпользователя. Если нет, то тогда юзай sudo!

1. Настройка сервера

1.1 Необязательный, но полезный пердолинг (TCP BBR)
Чтобы включить TCP BBR сначала проверь версию ядра, сделать это можно с помощью команды:

uname -sr

Вывод будет следующий:

Linux ***

Если *** больше или равно 4.9, то можешь выполнять все действия в этом пункте. Если нет, то переходи к пункту 1.2, т.к. TCP BBR у тебя не заработает.
Далее вбивай в консоль следующее:

nano /etc/sysctl.conf

В открывшемся файле в самом конце вставляй следующие строки:

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

Сохраняй (Ctrl+O) и закрывай файл (Ctrl+X).
Перезагрузи sysctl, чтобы изменения вступили в силу.

sysctl -p

TCP BBR работает, если ты видишь что-то похожее:

net.ipv4.tcp_congestion_control = bbr

Если в строке вывода видишь BBR, то ты всё настроил правильно. Sehr gut!

1.2 Установка Shadowsocks Rust
Качай бинарник (архив с бинарником) с Github, его ты найдешь в https://github.com/shadowsocks/shadowsocks-rust/releases/
Последняя стабильная версия на момент написания гайда 1.11.2.
В консоль пиши следующее:

wget https://github.com/shadowsocks/shadowsocks-rust/releases/download/v1.11.2/shadowsocks-v1.11.2.x86_64-unknown-linux-gnu.tar.xz

Распакуй:

tar -xf shadowsocks-v1.11.2.x86_64-unknown-linux-gnu.tar.xz

Появятся три файла, из них тебе нужен ssserver, его копируй в /bin/

cp ssserver /usr/local/bin

Далее создаём конфиг для Shadowsocks

nano /etc/shadowsocks-rust.json

В конфиг вставляй вот это:

1
2
3
4
5
6
7
8
9
{
   "server": "0.0.0.0",
   "server_port": ВМЕСТО-ЭТОГО-ТЕКСТА-ПРОПИШИ-ПОРТ-НА-КОТОРОМ-БУДЕТ-ВИСЕТЬ-SHADOWSOCKS*,
   "password": "внутри_кавычек_нужен_любой_пароль_желательно_надёжный",
   "timeout": 300,
   "method": "chacha20-ietf-poly1305",
   "mode": "tcp_and_udp",
   "fast_open": false
}
    • звёздочка, если хочешь повесить шедоусокс повесить на привелегированный порт (от 1 порта до 1024 порта), то надо выделить бинарнику привелегии командой:
      setcap "cap_net_bind_service=+eip" /usr/local/bin/ssserver
      

Сохраняй (Ctrl+O) и закрывай файл (Ctrl+X).
Далее создай ДЕМОНА:

nano /usr/lib/systemd/system/shadowsocks-rust.service

В нутро ДЕМОНА вставь следующий текст:

[Unit]
Description=shadowsocks-rust service
After=network.target

[Service]
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks-rust.json
ExecStop=/usr/bin/killall ssserver
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=ssserver
User=nobody
Group=nogroup

[Install]
WantedBy=multi-user.target

Оживи ДЕМОНА:

systemctl enable shadowsocks-rust
systemctl start shadowsocks-rust

Проверь всё ли в порядки с ДЕМОНОМ, если всё горит зелёным и есть надпись Active, то всё ок.

systemctl status shadowsocks-rust

2. Настройка клиента (Я бесчестно украл данную инструкцию из гайда на shadowsocks-libev с medium, но добавил кое-что своё и даже для iOS)

Оригинал гайда:
https://f-gzhechko.medium.com/установка-ss-сервера-в-standalone-режиме-и-кастомизация-обфускаторов-1d173b3d5513
2.1: качаем клиента —
винда: https://github.com/shadowsocks/shadowsocks-windows/releases
никсы: повторяешь установку как на сервере, только вместо ssserver используешь sslocal

2.2.1: винда: запускаешь свежепоставленный клиент shadowsocks-windows, жмакаешь по самолетику в трее правой кнопкой, ставишь галочку start on boot далее добавляешь настройки в servers — edit servers

1
2
3
4
5
6
server addr — ip сервера
server port — порт_сервера
password — ПАРОЛЬ
encryption — chacha20-ietf-poly1305
remarks — че хочешь, название сервера которое будет отображаться в клиенте
proxy port — адрес порта на который ты будешь перенаправлять свой браузер или всю систему и прочее, по дефолту 1080, можешь оставить его

2.2.2 никсы: nano /etc/shadowsocks-rust.json и добавляешь

1
2
3
4
5
6
7
8
{"server":"ip_сервера",
"server_port":порт_сервера,
"local_port":1080,
"password":"вставляешь_пароль_скопированный_c_сервера",
"timeout":600,
"method":"chacha20-ietf-poly1305",
"reuse_port": true,
"mode": "tcp_and_udp"}

жмакаешь в соснолечке
ss-local -c /etc/shadowsocks-rust.json &
добавление символа & в команду заставляет процесс выполняться даже после закрытия через ctrl-c — так что он будет висеть в фоне пока ты его не убьешь или не перезагрузишься

2.2.2.1 в никсы как вариант добавляешь сервис, чтоб соединение было всегда и после ребута:
nano /etc/systemd/system/ss-local.service
вставляем это:

1
2
3
4
5
6
7
8
9
[Unit]
Description=Daemon to start Shadowsocks Client
Wants=network-online.target
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/ss-local -c /etc/shadowsocks-rust.json
[Install]
WantedBy=multi-user.target

и сохраняем-выходим-жмем
systemctl daemon-reload && systemctl enable ss-local.service && systemctl restart ss-local.service

2.2.3 Android: качаешь с Google Play или .apk
Все почти так же, как и на винде. В меню Apps VPN mode выбираешь нужные приложения, трафик которых будет заворачиваться через SS, или отключаешь этот режим чтобы весь трафик шел через SS.
На андроеде нужно отключить перенаправление всего ДНС-трафика (оно и отключено по дефолту) а так же самому установить днс-резолвер, опция “nameserver” прописанная на сервере для андроеда работать не будет. По дефолту там ДНС от гугла — можешь сделать финт ушами, и поставить какой-нибудь ДНС с блокировкой рекламы от adguard например, чтобы эффективно резать рекламу во всех приложениях.

2.2.4 iOS: покупаешь shadowrocket\kitsunebi или ищешь какой-то бешплатный аналог, например, 91VPN, Potatso Lite (оба поддерживают обфускаторы)

Edit
Pub: 11 Sep 2021 18:33 UTC
Edit: 20 Oct 2021 18:56 UTC
Views: 1798