База знань Проста інструкція по роботі з сервісом Профітсервер
головний База знань Посібник Shadowsocks (shadowsocks-rust / shadowsocks-libev): VPS, Windows, macOS, Linux, Android, iPhone

Посібник Shadowsocks (shadowsocks-rust / shadowsocks-libev): VPS, Windows, macOS, Linux, Android, iPhone


Shadowsocks — це легкий зашифрований проксі-протокол на основі SOCKS5, спочатку розроблений для обходу формування та блокування трафіку у звичайних мережах. На відміну від повноцінного VPN, він проксіює лише той трафік, який програма явно надсилає йому, майже не має протокольних накладних витрат і добре працює навіть на обмежених з'єднаннях. Він не намагається імітувати справжнє рукостискання TLS, як це робить VLESS+Reality — його перевагою є простота, широка підтримка клієнтів (маршрутизатори, телефони, браузери) та дуже низька затримка, але ціною дещо легшої ідентифікації за шаблоном трафіку в ретельно перевіреній мережі.

Існує дві активно підтримувані реалізації сервера:

  • shadowsocks-rust — сучасна еталонна реалізація від організації shadowsocks, написана на Rust. Вона підтримує новіше сімейство шифрів AEAD-2022, активно розробляється та є реалізацією, яку детально встановлює та налаштовує цей посібник.
  • shadowsocks-libev — стара реалізація на C. Вона досі підтримується для виправлення помилок, постачається як готовий пакет apt з власними юнітами systemd і є гарним вибором, якщо вам потрібна найпростіша інсталяція без ручної обробки бінарних файлів. У цьому посібнику її розглядають як альтернативний шлях інсталяції в розділі 3.

У цьому посібнику описано, як налаштувати сервер вручну через командний рядок, без використання веб-панелі чи Docker. Щоразу, коли з’являється поле «IP-адреса», замініть його фактичною IP-адресою вашого VPS.

Що вам знадобиться: VPS з Ubuntu 22.04/24.04 або Debian 11/12, root-доступ, IP-адреса вашого VPS та вільний порт UDP/TCP (у цьому посібнику використовується порт 8388, порт Shadowsocks за замовчуванням).

Ще немає сервера? Дивіться, як замовити сервер та оплатити його.

Спочатку порівнюєте це з іншими варіантами самостійного розміщення? Дивіться Посібник з Xray VLESS Reality Guide для альтернативи на основі камуфляжу TLS, Посібник з розгортання сервера AmneziaWG для варіанта на основі WireGuard або налаштування Hysteria2 та TUIC для двох інших сучасних проксі-протоколів.

Зміст
Згорнути

Підключення до сервера

Windows (PuTTY)

Відкрийте PuTTY, введіть IP-адресу вашого VPS у поле «Ім’я хоста», встановіть порт на 22 та увійдіть як root, використовуючи пароль, який вам надіслав електронною поштою ваш VPS-провайдер.

IP-адреса сервера: ваша IP-адреса

увійти як: root

Пароль: ваш пароль

Детальний покроковий огляд підключення через PuTTY/SSH див. у статті Як підключитися до сервера Linux через SSH.

Конфігурація сеансу PuTTY для доступу SSH. SSH-термінал PuTTY після підключення до VPS. Успішний вхід до VPS через SSH.

Linux / macOS (термінал)

ssh root@your_IP_address

Усі команди нижче виконуються на сервері, в тому ж SSH-сеансі — це охоплює розділи з 2 по 7, а також перевірки на стороні сервера в розділі 13. Розділи 8–12 (встановлення та налаштування клієнтських програм) виконуються на вашому власному пристрої Windows/macOS/Linux/Android/iOS, оскільки саме на цьому пристрої має працювати проксі-сервер; у кожному з цих розділів чітко зазначено, які рядки, якщо такі є, все ще стосуються сервера.

Підготовка сервера

Оновити систему

Перш ніж встановлювати щось, оновіть список пакетів та оновіть встановлені пакети:

apt update -y && apt upgrade -y
Команда, яка використовується для оновлення встановлених пакетів. Вивід оновлення пакета. Повідомлення про оновлення ядра, що відображається під час оновлення пакета Запит на перезапуск служб, що відображається під час оновлення пакета.

Якщо це оновлює ядро, перед продовженням варто перезавантажити комп'ютер. (Щоб ознайомитися з apt та тим, як працюють менеджери пакетів Linux, див. розділ Менеджери пакетів Linux .) Зверніться до:

cat /var/run/reboot-required
Команда, яка використовується для перевірки необхідності перезавантаження. Вивід перевірки на необхідність перезавантаження.

Якщо файл існує, спочатку перезавантажте комп'ютер за допомогою команди «reboot», зачекайте ~30 секунд, а потім підключіться знову.

Встановіть інструменти, які використовуються в цьому посібнику

apt install -y curl wget tar xz-utils ufw qrencode

Для отримання та розпакування архіву випуску shadowsocks-rust потрібні curl/wget та tar/xz-utils; ufw – це брандмауер, налаштований нижче; qrencode перетворює готове посилання клієнта на сканований QR-код у розділі 7.

Команда, яка використовується для встановлення необхідних утиліт сервера.

Налаштування брандмауера (UFW)

Щоб дізнатися більше про правила UFW, див. статтю Налаштування брандмауера в Linux.

Відкрийте два потрібні вам порти: 22/tcp для SSH (пропустіть це правило, і ви ризикуєте втратити доступ до сервера) та 8388, як tcp, так і udp — Shadowsocks проксіює як TCP-з’єднання, так і UDP-асоціації (корисно для DNS та деяких ігор/додатків), тому обидва напрямки порту мають бути відкриті.

ufw allow 22/tcp
ufw allow 8388/tcp
ufw allow 8388/udp
ufw --force enable
ufw status

Усі три правила повинні відображатися як ALLOW у виведеному стані ufw. Якщо пізніше ви зміните порт у config.json, оновіть ці правила відповідно.

Стан UFW, що показує налаштовані правила SSH та Shadowsocks.

Встановлення серверного програмного забезпечення

Виберіть один із двох варіантів нижче. Рекомендовано варіант A (shadowsocks-rust): це активно розроблювана реалізація, яка підтримує сучасні шифри AEAD-2022, що використовуються далі в цьому посібнику. Варіант B (shadowsocks-libev) – гарний вибір, якщо ви бажаєте використовувати простий пакет apt із готовим модулем systemd і вам не потрібен AEAD-2022.

Варіант A — shadowsocks-rust (рекомендовано)

Shadowsocks-rust не постачає пакет apt із поточними релізами, тому його встановлюють шляхом завантаження попередньо зібраного статичного бінарного файлу з релізів проєкту на GitHub. Отримайте останній тег релізу з API GitHub та завантажте відповідний архів Linux x86_64:

SS_VER=$(curl -s https://api.github.com/repos/shadowsocks/shadowsocks-rust/releases/latest | grep -Po '"tag_name": "\K[^"]*')
echo "Latest version: $SS_VER"
cd /root
wget "https://github.com/shadowsocks/shadowsocks-rust/releases/download/${SS_VER}/shadowsocks-${SS_VER}.x86_64-unknown-linux-gnu.tar.xz"
Команда, що використовується для завантаження архіву випуску shadowsocks-rust.

Якщо ваш VPS працює на платформі arm64, а не x86_64 (перевірте за допомогою `uname -m`), замініть x86_64-unknown-linux-gnu на aarch64-unknown-linux-gnu у назві файлу вище.

Розпакуйте архів та встановіть бінарні файли на всю систему:

tar -xf shadowsocks-*.tar.xz
install -m 755 ssserver ssservice ssmanager ssurl /usr/local/bin/
rm -f shadowsocks-*.tar.xz ssserver ssservice ssmanager ssurl sslocal 2>/dev/null
Команда, що використовується для розпакування та встановлення бінарних файлів shadowsocks-rust.

Перевірте наявність бінарного файлу та встановлену версію:

ssserver --version
Встановлена ​​версія ssserver.

Створіть каталог, в якому зберігатиметься файл конфігурації:

mkdir -p /etc/shadowsocks-rust
Створення каталогу конфігурації shadowsocks-rust.

У цьому посібнику встановлюється фіксована версія, а не створюються скрипти інсталятора в bash. Щоб оновити систему пізніше, повторно виконайте дві команди вище з новим пошуком SS_VER, зупиніть службу, замініть двійковий файл і перезапустіть її (Розділ 6).

Варіант B — shadowsocks-libev (альтернативний пакет apt)

Shadowsocks-libev включено до репозиторію universe Ubuntu (Ubuntu 16.10+) та основного репозиторію Debian (Debian 8+), тому сторонній PPA не потрібен у версіях 22.04/24.04 або Debian 11/12:

apt install -y shadowsocks-libev
Команда, яка використовується для встановлення shadowsocks-libev з репозиторію пакетів.

Якщо apt повідомляє, що пакет не знайдено, репозиторій всесвіту вимкнено; увімкніть його та повторіть спробу:

add-apt-repository universe && apt update && apt install -y shadowsocks-libev

Пакет встановлює власні модуль systemd (shadowsocks-libev.service для конфігурації за замовчуванням, плюс [email protected] для іменованих конфігурацій для кожного екземпляра) та автоматично створює /etc/shadowsocks-libev/config.json — у розділах 4–6 зазначено команди та шляхи до файлів, специфічні для libev, поряд з командами rust. Решта розділів клієнта цього посібника (7–13) застосовуються ідентично до будь-якої реалізації сервера, оскільки обидві використовують один і той самий протокол Shadowsocks/SIP002 на мережі.

Генерація пароля та вибір шифру

Автентифікація Shadowsocks — це єдиний спільний пароль плюс шифр (метод шифрування), про який повинні узгодити обидві сторони — немає окремого UUID, пари ключів чи сертифіката для керування.

Сімейства шифрів

  • AEAD-2022 (рекомендовано, лише shadowsocks-rust): 2022-blake3-aes-128-gcm, 2022-blake3-aes-256-gcm, 2022-blake3-chacha20-poly1305. Новіший дизайн (SIP022) з посиленим захистом від повторного відтворення та підтримкою кількох користувачів, які спільно використовують один порт. Пароль має бути рядком base64, що точно дорівнює довжині ключа шифру (16 байт для 128-бітних варіантів, 32 байти для 256-бітного варіанту).
  • Класичний AEAD (підтримується як rust, так і libev): aes-256-gcm, aes-128-gcm, chacha20-ietf-poly1305. Широко сумісний зі старими клієнтами та з shadowsocks-libev; пароль може бути будь-якою парольною фразою, оскільки вона передається через функцію виведення ключа, а не використовується безпосередньо як ключовий матеріал.

У цьому посібнику для сервера shadowsocks-rust використовується 2022-blake3-aes-256-gcm, оскільки це найпотужніший та найновіший варіант, і кожен клієнт, рекомендований пізніше (v2rayN, v2rayNG, Shadowrocket, Streisand, ShadowsocksX-NG), підтримує його. Якщо ви встановили shadowsocks-libev у Розділі 3, використовуйте замість нього chacha20-ietf-poly1305 або aes-256-gcm, оскільки libev не реалізує AEAD-2022.

Згенерувати ключ (shadowsocks-rust)

ssservice genkey -m "2022-blake3-aes-256-gcm"
Команда, яка використовується для генерації випадкової парольної фрази для shadowsocks-libev.

Це виведе рядок base64 — це ваш пароль. Скопіюйте його в безпечне місце; ви вставите його як у конфігурацію сервера в розділі 5, так і в посилання клієнта в розділі 7.

Згенеровано випадкову парольну фразу.

Виберіть парольну фразу (shadowsocks-libev)

Для класичних шифрів AEAD, що використовуються shadowsocks-libev, працює будь-який достатньо довгий випадковий рядок, оскільки він проходить через PBKDF/HKDF, а не використовується як необроблений ключ. Згенеруйте його за допомогою:

openssl rand -base64 32

Написання конфігурації сервера

Тіньові шкарпетки-іржа

Відкрийте файл конфігурації для редагування:

nano /etc/shadowsocks-rust/config.json

Вставте шаблон нижче, підставивши свій власний пароль з розділу 4 (і порт з розділу 2, якщо ви змінили його з 8388):

{
    "server": "0.0.0.0",
    "server_port": 8388,
    "password": "YOUR-GENERATED-KEY-HERE",
    "method": "2022-blake3-aes-256-gcm",
    "mode": "tcp_and_udp",
    "timeout": 300,
    "nofile": 51200
}

Натисніть Ctrl+O (WriteOut), щоб зберегти файл, Enter, щоб підтвердити ім'я файлу, а потім Ctrl+X, щоб вийти з nano.

Важливі поля: server прослуховує всі інтерфейси (0.0.0.0); server_port – це порт, відкритий у розділі 2; password/method – це облікові дані та шифр з розділу 4; mode дозволяє ретрансляцію як TCP, так і UDP; timeout – це час очікування простою з'єднання в секундах; nofile збільшує ліміт файлових дескрипторів для зайнятих серверів.

Перевірте JSON та чи приймає його бінарний файл, перш ніж підключати його до systemd:

ssserver -c /etc/shadowsocks-rust/config.json --help >/dev/null && echo "binary OK"
python3 -m json.tool /etc/shadowsocks-rust/config.json >/dev/null && echo "JSON OK"

Створіть модуль systemd (shadowsocks-rust)

Бінарний реліз не містить модуля systemd, тому створіть його:

nano /etc/systemd/system/ssserver.service
[Unit]
Description=Shadowsocks-Rust Server
Documentation=https://github.com/shadowsocks/shadowsocks-rust
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks-rust/config.json
Restart=on-failure
RestartSec=5s
LimitNOFILE=51200
User=root
 
[Install]
WantedBy=multi-user.target

Збережіть та вийдіть, як описано вище, а потім накажіть systemd отримати новий файл модуля:

systemctl daemon-reload

Shadowsocks-libev

Пакет apt вже створив файл /etc/shadowsocks-libev/config.json зі стандартною конфігурацією (лише для зворотного зв'язку, випадковий пароль) та власним модуль systemd. Відкрийте його для редагування:

Команда, яка використовується для відкриття конфігураційного файлу shadowsocks-libev.
nano /etc/shadowsocks-libev/config.json

Замініть вміст на:

{
    "server":"0.0.0.0",
    "server_port":8388,
    "password":"YOUR-PASSPHRASE-HERE",
    "method":"chacha20-ietf-poly1305",
    "mode":"tcp_and_udp",
    "timeout":300
}
Приклад конфігурації shadowsocks-libev.

Конфігурація за замовчуванням використовує server: ["::1", "127.0.0.1"] (лише для зворотного зв'язку); зміна його на "0.0.0.0" робить сервер доступним з публічної IP-адреси — не пропускайте це, якщо ви скопіювали стоковий файл замість шаблону вище.

Запуск служби та ввімкнення автозапуску

Тіньові шкарпетки-іржа

systemctl enable --now ssserver
systemctl status ssserver --no-pager

Статус має показувати активний (виконується). Переконайтеся, що щось дійсно прослуховує порт (обидва протоколи):

Сервер прослуховує TCP та UDP порт 8388.
ss -lntp | grep ':8388'
ss -lunp | grep ':8388'

Якщо служба не запускається, найшвидший спосіб дізнатися причину – це переглянути журнал systemd (загальну інформацію про читання журналів Linux див. у статті Як читати журнали Linux і де їх знайти ):

journalctl -u ssserver -n 50 --no-pager

Shadowsocks-libev

systemctl restart shadowsocks-libev
systemctl enable shadowsocks-libev
systemctl status shadowsocks-libev --no-pager

Перевірте порт і логи так само, як і для shadowsocks-rust, підставляючи назву служби:

Команди, що використовуються для перезапуску, увімкнення та перевірки служби shadowsocks-libev. Стан служби Shadowsocks-libev: активна (працює).
ss -lntp | grep ':8388'
ss -lunp | grep ':8388'
journalctl -u shadowsocks-libev -n 50 --no-pager

Побудова каналу з’єднання клієнта

Клієнти Shadowsocks імпортують одне посилання для спільного доступу ss:// (формат URL-адреси SIP002), а не конфігураційний файл. Посилання кодує шифр і пароль як base64 у частині userinfo URL-адреси:

ss://base64(method:password)@your_IP_address:port#label

Зберіть частину base64 на сервері (це дозволить уникнути будь-яких друкарських помилок, пов'язаних з ручним кодуванням):

METHOD="2022-blake3-aes-256-gcm"
PASSWORD="YOUR-GENERATED-KEY-HERE"
USERINFO=$(echo -n "${METHOD}:${PASSWORD}" | base64 -w0)
echo "ss://${USERINFO}@your_IP_address:8388#My-SS-Server"

Приклад виводу (з ключем-заповнювачем):

Приклад згенерованого посилання ss:// (ілюстрація).
ss://MjAyMi1ibGFrZTMtYWVzLTI1Ni1nY206eHl6X2V4YW1wbGVfa2V5X2hlcmU=@your_IP_address:8388#My-SS-Server

Текст після # — це просто мітка відображення, яку ви можете вільно перейменувати в будь-якому клієнті. Для сервера shadowsocks-libev замініть METHOD="chacha20-ietf-poly1305" (або aes-256-gcm) та його парольну фразу з розділу 4. 

Перетворіть його на QR-код, щоб мобільні клієнти могли сканувати його безпосередньо:

qrencode -o ~/ss-client.png "ss://${USERINFO}@your_IP_address:8388#My-SS-Server"

Скопіюйте PNG-файл на свій комп'ютер за допомогою scp, запустіть його з терміналу комп'ютера (або PowerShell у Windows), а не з сервера:

scp root@your_IP_address:~/ss-client.png .

Підключення з Windows

Усе, що описано в цьому розділі, відбувається на вашому ПК з Windows, а не через SSH — клієнт має працювати на пристрої, який фактично використовуватиме проксі-сервер.

Встановлення v2rayN

v2rayN — це безкоштовний, активно підтримуваний клієнт із графічним інтерфейсом, вбудованою підтримкою Shadowsocks, а також VLESS, VMess, Trojan та інших. Завантажте останню версію зі сторінки проекту.

Візьміть 64-розрядний ZIP-архів Windows (автономна збірка не потребує окремого середовища виконання .NET, як у останніх версіях v2rayN), розпакуйте його будь-де та запустіть v2rayN.exe.

Імпорт сервера

Скопіюйте посилання ss://, створене в розділі 7, у буфер обміну (або скопіюйте QR-код у форматі PNG за допомогою scp та відкрийте його), потім у v2rayN виберіть Сервери → Імпортувати URL-адреси з буфера обміну (або проскануйте QR-код за допомогою вбудованого сканера). Новий профіль сервера з’явиться у списку з міткою, яку ви встановили після символу #.

Клацніть правою кнопкою миші на профілі та виберіть його як активний, потім увімкніть системний проксі-сервер (або режим TUN для маршрутизації всієї машини) на панелі інструментів головного вікна.

Підключення з macOS

Усе, що описано в цьому розділі, відбувається на вашому Mac, а не через SSH.

Встановлення ShadowsocksX-NG

ShadowsocksX-NG — це давно існуючий клієнт Shadowsocks з графічним інтерфейсом для macOS; поточна лінійка релізів містить як рідну збірку Apple Silicon, так і Intel. Завантажте найновіший файл .dmg зі сторінки релізів.

Відкрийте файл .dmg та перетягніть ShadowsocksX-NG до розділу «Програми», а потім запустіть його — він з’явиться як значок у рядку меню.

 

Імпорт сервера

Скопіюйте посилання ss:// з розділу 7 у буфер обміну, потім натисніть значок меню → Сервери → Параметри сервера → + внизу ліворуч і виберіть «Імпортувати з монтажного столу» (або відскануйте QR-код за допомогою «Сканувати QR-код з екрана» після відкриття PNG). Виберіть новий профіль у спадному меню, потім перемкніть «Shadowsocks: Увімкнено» та виберіть режим маршрутизації «PAC Auto» або «Глобальний» у тому ж меню.

Підключення з робочого столу Linux

Усе, що описано в цьому розділі, відбувається на вашій власній машині з Linux, а не на VPS.

Встановіть локальний клієнт

Якщо ви встановили shadowsocks-rust на сервер у Розділі 3, той самий архів випуску містить sslocal, локальний проксі-клієнт SOCKS5/HTTP. Завантажте та встановіть його так само, як і бінарний файл сервера (налаштуйте суфікс OS/arch для вашого робочого столу, якщо це не x86_64-unknown-linux-gnu):

SS_VER=$(curl -s https://api.github.com/repos/shadowsocks/shadowsocks-rust/releases/latest | grep -Po '"tag_name": "\K[^"]*')
wget "https://github.com/shadowsocks/shadowsocks-rust/releases/download/${SS_VER}/shadowsocks-${SS_VER}.x86_64-unknown-linux-gnu.tar.xz"
tar -xf shadowsocks-*.tar.xz
sudo install -m 755 sslocal /usr/local/bin/

Налаштувати та запустити

Створіть невеликий локальний конфігураційний файл, який прослуховуватиме 127.0.0.1:1080 як SOCKS5-проксі:

mkdir -p ~/.config/shadowsocks-rust
cat > ~/.config/shadowsocks-rust/local.json << 'EOF'
{
    "server": "your_IP_address",
    "server_port": 8388,
    "password": "YOUR-GENERATED-KEY-HERE",
    "method": "2022-blake3-aes-256-gcm",
    "local_address": "127.0.0.1",
    "local_port": 1080,
    "mode": "tcp_and_udp"
}
EOF
sslocal -c ~/.config/shadowsocks-rust/local.json

Вкажіть у налаштуваннях браузера або мережевих систем проксі-сервер SOCKS5 за адресою 127.0.0.1:1080. Для графічного інтерфейсу, форки Nekoray або ShadowsocksX-Qt5 можуть імпортувати те саме посилання ss:// з розділу 7 та керувати sslocal замість того, щоб запускати його вручну.

Підключення з Android

Все тут відбувається на вашому пристрої Android, а не через SSH.

Встановлення клієнта

Два хороших варіанти:

  • Shadowsocks для Android — офіційний клієнт від організації shadowsocks. Встановіть його з Google Play (пошук за запитом «Shadowsocks») або завантажте APK безпосередньо зі сторінки релізів проєкту, якщо Play недоступний у вашій локації. область.
  • v2rayNG — Android-аналог v2rayN, що підтримує Shadowsocks разом із VLESS/VMess/Trojan; корисно, якщо вам потрібен один додаток для кількох протоколів. типи.

Імпорт сервера

В будь-якому з додатків: натисніть кнопку +, виберіть «Імпортувати з буфера обміну» після копіювання посилання ss:// з розділу 7 або «Відсканувати QR-код» і наведіть камеру на PNG. Натисніть на імпортований профіль, щоб вибрати його, а потім натисніть кнопку підключення. Android вперше запитає дозвіл VPN — схваліть його для встановлення тунелю. 

Підключення з iOS

Все тут відбувається на вашому iPhone або iPad, не через SSH.

Встановлення клієнта з підтримкою Shadowsocks

Shadowrocket — найпоширеніший клієнт для iOS з підтримкою Shadowsocks; це платний додаток, доступний у більшості магазинів. Знайдіть його в App Store або відкрийте.

Streisand — це безкоштовна альтернатива з відкритим кодом, яка також підтримує Shadowsocks разом із VLESS, Trojan та іншими протоколами.

Каталоги App Store відрізняються залежно від магазину/регіону та можуть змінюватися з часом; якщо жодного з них немає у вашому, знайдіть в App Store «Shadowsocks» або «V2Box».

Імпорт сервера

Скопіюйте посилання ss:// у буфер обміну, відкрийте клієнт та скористайтеся опцією «Додати/Імпортувати з буфера обміну» або проскануйте QR-код із розділу 7 за допомогою вбудованого сканера клієнта. Увімкніть новий профіль; iOS вперше запитуватиме дозвіл на налаштування VPN, який вам потрібно буде підтвердити за допомогою Face ID, Touch ID або вашого пароля.

Перевірка підключення

Коли тунель активовано з розділу 8, 9, 10, 11 або 12, поверніться на свій пристрій (не до SSH-сеансу) та відкрийте будь-яку перевірку «яка моя IP-адреса» у браузері — відображена адреса має збігатися з IP-адресою вашого VPS, your_IP_address.

Щоб перевірити з боку сервера, перевірте журнал systemd на наявність активності з'єднань та підтвердьте встановлені сесії на порту (використовуйте ssserver для журналу rust або shadowsocks-libev для журналу libev):

journalctl -u ssserver -n 50 --no-pager
ss -tnp | grep ':8388'

Посилання:

Поле

значення

Адреса

публічна IP-адреса вашого VPS

порт

8388 (той самий порт, що відкрився в Розділі 2)

Пароль

ключ/парольна фраза, згенерована в розділі 4

Метод

2022-blake3-aes-256-gcm (rust) або chacha20-ietf-poly1305 (libev) — мають точно збігатися з обох сторін

режим

tcp_and_udp — дозволяє проксування через TCP та ретрансляцію UDP (DNS, деякі ігри)

Підключати

у цьому посібнику не використовується — для роботи Shadowsocks не потрібен SNI, сертифікат чи транспортний плагін

Висновок

Дотримання цього посібника залишає ваш VPS з власним сервером Shadowsocks — або shadowsocks-rust із сучасним шифром AEAD-2022, або shadowsocks-libev з власного репозиторію Ubuntu/Debian — як службу systemd, яка переживає перезавантаження без будь-яких дій з вашого боку.

Додавання більшої кількості користувачів:

  • Найпростіше: згенеруйте другий пароль (розділ 4) та запустіть другий екземпляр ssserver/shadowsocks-libev на іншому порту з власним конфігураційним файлом та systemd-юнітом, а потім повторіть розділи 5–7 для цього порту.
  • shadowsocks-rust із шифром AEAD-2022 також підтримує спільне використання кількох користувачів одним портом та ключем виведення пароля через масив "users" у config.json (Extensible Identity Headers, SIP022) — див. розділ "Конфігурація" README shadowsocks-rust для отримання точного синтаксису, якщо вам потрібен облік трафіку для кожного користувача на одному порту.

Кілька звичок, яких варто дотримуватися після запуску сервера:

  • Регулярно оновлюйте сервер. Для shadowsocks-rust періодично повторюйте кроки завантаження та встановлення з розділу 3, шукаючи нову версію, а потім systemctl restart ssserver. Для shadowsocks-libev достатньо простої команди apt upgrade.
  • Зробіть резервну копію config.json у окремому місці поза сервером. Вона містить пароль кожного клієнта; його втрата означає повторне створення облікових даних для кожного пристрою.
  • Змініть пароль, якщо пристрій втрачено або клієнт скомпрометовано: згенеруйте новий (Розділ 4), оновіть config.json, перезапустіть службу та перебудуйте посилання клієнта (Розділ 7) для кожного пристрою, що залишився.

Якщо з'єднання не встановлюється, перевірте по порядку:

  • стан служби (systemctl status ssserver --no-pager або shadowsocks-libev) та журнал (journalctl -u ssserver -n 50 --no-pager)
  • правила брандмауера (статус ufw — порт має бути відкритий як для tcp, так і для udp)
  • що порт ще не прив'язаний до іншої служби (ss -lntp | grep ':8388' ​​має показувати лише ssserver/ss-server)
  • що пароль, метод і порт у клієнті точно відповідають config.json — один невідповідний символ непомітно призводить до невдалого завершення рукостискання, зазвичай це відображається як тайм-аут з'єднання, а не як явна помилка.
  • Цей режим на сервері встановлено на tcp_and_udp, якщо клієнту потрібен UDP (DNS-over-proxy, деякі ігри/додатки), а не лише tcp_only.

Порівнюєте Shadowsocks з іншими варіантами? Див. Посібник з Xray VLESS Reality Guide для протоколу на основі камуфляжу TLS, який важче ідентифікувати в мережі з високою фільтрацією, Посібник з розгортання сервера AmneziaWG та Як налаштувати Wireguard VPN на вашому сервері для альтернатив на основі WireGuard, або налаштування Hysteria2 та TUIC для двох протоколів, створених для мереж з втратами або з високою фільтрацією. Якщо вам потрібен лише простий проксі, а не повноцінне тунелювання, конфігурація 3proxy на CentOS/ArchLinux є набагато легшою альтернативою, а старіша конфігурація VPN-сервера на Linux: PPTP чи OpenVPN? охоплює протоколи, які простіше налаштувати, але набагато легше для DPI виявляти та блокувати. Щодо загального захисту сервера після запуску проксі-сервера, див. Користувачі Linux: керування та дозволи.

❮ Попередня стаття Посібник з реальності Xray VLESS: VPS, Windows, Mac, Android, iPhone
Наступна стаття ❯ Інцидент безпеки VMmanager 6: що сталося та що робити

Запитайте нас про VPS

Ми завжди готові відповісти на ваші запитання в будь-який час дня і ночі.