8.2.11 Настраиваем VPN на базе Shadowsocks
Shadowsocks — лёгкий прокси‑VPN с шифрованием, помогающий обойти фаерволы и QoS‑ограничения. В статье разберём установку и настройку shadowsocks‑libev на Ubuntu 24.04, а также подключение клиентов.
Кейсы сипользования
- обход блокировок сайтов и сервисов;
- устранение высоких задержек или ограничений PPTP/L2TP/OpenVPN;
- необходимость шифровать трафик без тяжёлых TLS‑туннелей.
Shadowsocks использует асинхронный I/O, шифрует поток данным алгоритмом AEAD и работает как SOCKS5‑прокси, что делает его быстрее классических VPN‑решений.
Подготовка сервера
Системные требования
- Заказанная услуга виртуального сервера или выделенного сервера.
- CPU: минимум 2 vCPU;
- RAM: минимум 1 ГБ;
- SSD: минимум 10 ГБ;
- ОС: Ubuntu 24.04 LTS;
- root или sudo‑доступ;
- Открытый UDP/TCP‑порт (по умолчанию — 8388).
Перед установкой убедитесь, что система актуальна. Команда ниже обновит кэш пакетов и установит последние исправления безопасности и баг‑фиксы:
sudo apt update && sudo apt upgrade -y
Установка shadowsocks‑libev
В официальном репозитории universe Ubuntu 24.04 уже есть актуальный пакет shadowsocks‑libev, поэтому дополнительное добавление PPA не требуется ([LinuxBabe][2]). Выполните:
sudo apt install -y shadowsocks-libev
Если система сообщает, что пакет не найден, значит репозиторий universe отключён. Активируйте его и повторите установку:
sudo add-apt-repository universe && sudo apt update
Создание конфигурации сервера
По умолчанию служба ищет настройки в /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
Проверяем состояние и контролируем логи:
sudo systemctl status shadowsocks-libev-server@config
journalctl -u shadowsocks-libev-server@config -f
Статус Active: active (running) подтверждает корректный запуск ([idroot][3]).
Настройка брандмауэра
Чтобы клиенты могли подключаться, откройте выбранный порт для TCP и UDP. С ufw
это выглядит так:
UFW
sudo ufw allow 8388/tcp
sudo ufw allow 8388/udp
sudo ufw reload
iptables
При использовании iptables
напрямую:
sudo iptables -A INPUT -p tcp --dport 8388 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 8388 -j ACCEPT
Подключение клиента
Ниже описаны базовые сценарии подключения к серверу.
Windows / macOS
-
Скачайте официальное приложение с shadowsocks.org.
-
Нажмите Add → Manual Settings и введите:
- Server IP — адрес вашего VPS.
- Server Port —
8388
. - Password —
password
. - Encryption —
aes-256-gcm
.
- Сохраните и активируйте профиль — значок клиента станет зелёным.
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
- Установите ShadowSocks из Google Play/App Store.
- Нажмите
+
→ Manual Settings либо отсканируйте QR‑код. - Введите те же параметры сервера.
- Активируйте VPN‑режим — ключ появится в статус‑баре.
Сгенерировать QR‑код удобно прямо на сервере:
qrencode -t ansiutf8 "ss://$(echo -n aes-256-gcm:<PASSWORD>!@<SERVER_IP>:8388 | base64 -w0)#Shadowsocks"
Замените слудующие значений:
- <PASSWORD> – Ваш надёжный пароль;
- <SERVER_IP> – ip Вашего сервера.
Проверка работы
Тест скорости канала
Команда ниже скачает веб‑страницу теста Cloudflare через SOCKS5‑прокси — так вы оцените реальную пропускную способность туннеля:
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 |
Ссылки и документация
- Официальный сайт Shadowsocks — https://shadowsocks.org
- GitHub
shadowsocks-libev
— https://github.com/shadowsocks/shadowsocks-libev