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 не требуется ([LinuxBabe][2]). Выполните:

Установка пакета
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 для снижения RTT
}
  • 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) подтверждает корректный запуск ([idroot][3]).

Настройка брандмауэра

Чтобы клиенты могли подключаться, откройте выбранный порт для TCP и UDP. С ufw это выглядит так:

UFW

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

ufw

iptables

При использовании 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. Нажмите AddManual Settings и введите:

    • Server IP — адрес вашего VPS.
    • Server Port — 8388.
    • Password — password.
    • Encryption — aes-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 / Address already in use Порт 8388 занят другим процессом sudo lsof -i :8388, измените server_port и перезапустите Shadowsocks

Ссылки и документация