8.2.11 Налаштування VPN на базі Shadowsocks

The Host Banner Shadowsocks

Shadowsocks — легкий проксі‑VPN із шифруванням, який допомагає обходити фаєрволи та обмеження QoS. У цій статті розглянемо встановлення й налаштування shadowsocks‑libev на Ubuntu 24.04, а також підключення клієнтів.

Кейси використання

  • обхід блокувань сайтів та сервісів;
  • зниження високих затримок або обмежень PPTP/L2TP/OpenVPN;
  • необхідність шифрувати трафік без важких TLS‑тунелів.

Shadowsocks використовує асинхронний I/O, шифрує потік даними за допомогою AEAD‑алгоритмів та працює як SOCKS5‑проксі, що робить його швидшим за класичні VPN‑рішення.

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

Системні вимоги

Перед встановленням переконайтесь, що система оновлена. Команда нижче оновить кеш пакетів і встановить актуальні виправлення:

Оновлення системи
sudo apt update && sudo apt upgrade -y

update and upgrade system

Встановлення shadowsocks‑libev

В Universe‑репозиторії Ubuntu 24.04 вже є актуальний пакет shadowsocks‑libev, тому додатковий PPA не потрібен. Виконайте:

Встановлення пакета
sudo apt install -y shadowsocks-libev

installation

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

sudo add-apt-repository universe && sudo apt update

Створення конфігурації сервера

За замовчуванням служба читає налаштування з /etc/shadowsocks-libev. Створимо файл config.json, де вкажемо адресу, порт, пароль і метод шифрування:

/etc/shadowsocks-libev/config.json
sudo nano /etc/shadowsocks-libev/config.json
{
  "server": "0.0.0.0",       // слухати всі інтерфейси
  "server_port": 8388,       // порт Shadowsocks
  "password": "password",    // надійний пароль клієнта
  "timeout": 60,             // тайм‑аут (сек.) очікування пакета
  "method": "aes-256-gcm",   // AEAD‑алгоритм шифрування
  "fast_open": true          // TCP Fast Open для зниження затримок
}
  • password — встановіть унікальний довгий пароль, спільний для всіх клієнтів.
  • method — використовуйте AEAD‑алгоритми (наприклад, aes-256-gcm), захищені від MITM‑атак.
  • fast_open — прискорює перше з’єднання, якщо ядро підтримує TFO (cat /proc/sys/net/ipv4/tcp_fastopen).

Запуск та автозапуск служби

Systemd‑юнит shadowsocks-libev-server@<name> читає конфігурації з /etc/shadowsocks-libev/<name>.json. За замовчуванням ім’я — config. Запустіть і увімкніть сервіс в автозавантаження:

Запуск та автозапуск
sudo systemctl enable --now shadowsocks-libev-server@config

Symlink

Перевірте стан і переглядайте логи:

sudo systemctl status shadowsocks-libev-server@config
journalctl -u shadowsocks-libev-server@config -f

service status

Статус Active: active (running) підтверджує коректний запуск.

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

Щоб клієнти могли підключатись, відкрийте відповідний порт для TCP та UDP:

UFW

UFW правила
sudo ufw allow 8388/tcp
sudo ufw allow 8388/udp
sudo ufw reload

ufw

iptables

sudo iptables -A INPUT -p tcp --dport 8388 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 8388 -j ACCEPT

Підключення клієнта

Ось базові сценарії підключення до сервера.

Windows / macOS

  1. Завантажте офіційний клієнт із shadowsocks.org.

  2. Додайте профіль вручну:

    • Server IP — IP-адреса VPS
    • Server Port8388
    • Passwordpassword
    • Encryptionaes-256-gcm

Set client

  1. Збережіть і активуйте профіль — іконка клієнта стане зеленою.

Linux (ss-local)

На робочих станціях Linux рекомендовано використовувати ss-local — він створює локальний SOCKS5‑порт і шифрує трафік до сервера:

sudo apt install shadowsocks-libev
ss-local -s <SERVER_IP> -p 8388 -k <PASSWORD> -m aes-256-gcm -l 1080

Замініть наступні значення:

  • <PASSWORD> – Ваш надійний пароль;
  • <SERVER_IP> – ip Вашого сервера.

Налаштуйте програми або браузер на використання SOCKS5-проксі 127.0.0.1:1080.

Android / iOS

  1. Встановіть ShadowSocks з Google Play або App Store.
  2. Натисніть +Manual Settings або відскануйте QR-код.
  3. Введіть ті ж параметри сервера.
  4. Активуйте VPN-режим — у статус-барі з’явиться ключ.

Згенерувати QR-код можна прямо на сервері:

qrencode -t ansiutf8 "ss://$(echo -n aes-256-gcm:<PASSWORD>@<SERVER_IP>:8388 | base64 -w0)#Shadowsocks"

Замініть наступні значення:

  • <PASSWORD> – Ваш надійний пароль;
  • <SERVER_IP> – ip Вашого сервера.

Перевірка роботи

Тест швидкості каналу

Команда нижче завантажить тестову сторінку Cloudflare через SOCKS5‑проксі — це допоможе оцінити реальну пропускну здатність тунелю:

speedtest через проксі
curl --socks5 127.0.0.1:1080 https://speed.cloudflare.com

Перевірка DNS‑витоків

Відкрийте у браузері https://dnsleaktest.com (або https://browserleaks.com/dns) і запустіть Extended Test. Якщо IP‑адрес вашого провайдера немає у списку — DNS-запити проходять через Shadowsocks.

Типові проблеми
Симптом Можлива причина Швидке рішення
connection timeout при підключенні Порт 8388 закритий у брандмауері Перевірте правила UFW/iptables
Низька швидкість Вимкнено fast_open або слабкий метод Ввімкніть "fast_open": true, використовуйте aes-256-gcm
Сервіс не стартує Помилка синтаксису JSON-конфігурації sudo journalctl -u shadowsocks-libev-server@config — показує рядок помилки
Failed to parse JSON при запуску Помилка синтаксису в config.json jq . /etc/shadowsocks-libev/config.json, виправте і перезапустіть сервіс
port already in use Порт 8388 зайнятий іншим процесом sudo lsof -i :8388, змініть порт і перезапустіть Shadowsocks

Посилання та документація