Shadowsocks клиент на Ubuntu: установка, настройка и запуск

Команда ss-local выдаёт ошибку «command not found» после попытки запустить Shadowsocks-клиент на Ubuntu — это значит, что пакет либо не установлен, либо установлен вариант без консольных утилит. В Ubuntu доступны несколько реализаций клиента: пакет shadowsocks-libev из официального репозитория, Python-версия shadowsocks через pip и графические клиенты вроде Shadowsocks-Qt5 или Electron-ssr. Ниже разберём установку каждого варианта, настройку конфигурации и типичные ошибки при подключении.

Shadowsocks работает как локальный SOCKS5-прокси: клиент принимает трафик приложений на локальном порту, шифрует его и пересылает на удалённый сервер. Поэтому настройка состоит из двух частей — запуск самого клиента и указание системе или браузеру использовать локальный прокси.

Что понадобится перед установкой

Прежде чем ставить клиент, убедитесь, что у вас есть параметры подключения к серверу Shadowsocks. Без них клиент бесполезен: он не содержит встроенных серверов.

  • 🌐 Адрес сервера — IP или доменное имя удалённого сервера.
  • 🔌 Порт сервера — числовой порт, который слушает сервер (задаётся администратором сервера).
  • 🔑 Пароль — общий ключ для шифрования трафика.
  • 🛡️ Метод шифрования — например, chacha20-ietf-poly1305 или aes-256-gcm; он должен совпадать с настройкой на сервере.

Получить эти данные можно у поставщика доступа или из конфигурации вашего собственного сервера. Некоторые провайдеры выдают ссылку формата ss://, из которой параметры можно импортировать в графические клиенты.

Установка shadowsocks-libev из репозитория

Самый простой способ — пакет shadowsocks-libev, который есть в штатных репозиториях Ubuntu. Это легковесная реализация на C, включающая клиент ss-local, сервер ss-server и утилиту туннелирования ss-tunnel.

sudo apt update

sudo apt install shadowsocks-libev

После установки проверьте наличие клиента командой which ss-local. Если путь вывелся — пакет встал корректно. Если команда не найдена, проверьте, не прервалась ли установка с ошибкой зависимостей, и повторите sudo apt install -f.

Для свежих версий протокола иногда требуется более новая сборка, чем та, что лежит в стабильном репозитории. В этом случае ориентируйтесь на официальный репозиторий проекта на GitHub — там описана сборка из исходников и подключение PPA, если он поддерживается для вашей версии Ubuntu.

Настройка конфигурационного файла

Клиент ss-local читает параметры из JSON-файла. Пакет shadowsocks-libev обычно создаёт пример конфигурации по пути /etc/shadowsocks-libev/config.json. Откройте его в редакторе и приведите к такому виду:

{

"server": "адрес_сервера",

"server_port": 8388,

"local_address": "127.0.0.1",

"local_port": 1080,

"password": "ваш_пароль",

"timeout": 300,

"method": "chacha20-ietf-poly1305"

}

Значения server, server_port, password и method подставьте из своих данных подключения. Параметр local_port — это порт локального SOCKS5-прокси; именно на 127.0.0.1:1080 (или другой указанный порт) вы будете направлять трафик приложений, а не на адрес сервера.

⚠️ Внимание: метод шифрования на клиенте должен точно совпадать с методом на сервере. Несовпадение — самая частая причина ситуации, когда клиент запущен, но трафик не проходит.

☑️ Проверка конфигурации Shadowsocks

Выполнено: 0 / 5

Запуск клиента и автозапуск через systemd

Для разового запуска выполните в терминале:

ss-local -c /etc/shadowsocks-libev/config.json

Если конфигурация корректна, клиент запустится в фоне и начнёт слушать локальный порт. Проверить это можно командой ss -tlnp | grep 1080 — в выводе должна появиться строка с адресом 127.0.0.1:1080.

Для постоянной работы удобнее запустить клиент как службу. В пакете shadowsocks-libev предусмотрен systemd-юнит; обычно он называется shadowsocks-libev.service и использует конфиг из /etc/shadowsocks-libev/config.json. Управление стандартное:

sudo systemctl enable shadowsocks-libev

sudo systemctl start shadowsocks-libev

sudo systemctl status shadowsocks-libev

Точное имя юнита может отличаться в зависимости от версии пакета — посмотрите список файлов пакета командой dpkg -L shadowsocks-libev | grep service. Если служба не стартует, журнал ошибок смотрите через journalctl -u shadowsocks-libev -e.

📊 Какой клиент Shadowsocks вы используете на Ubuntu?
shadowsocks-libev (консольный)
Python-версия через pip
Графический клиент (Qt5/Electron)
Только планирую установить

Графические клиенты и альтернативные варианты

Если консоль не подходит, существуют GUI-обёртки. Shadowsocks-Qt5 — клиент с графическим интерфейсом, позволяющий добавлять серверы вручную или через ссылку ss://, переключаться между профилями и видеть статус подключения. Устанавливается он обычно из PPA или из AppImage/пакета с GitHub-страницы проекта; доступность конкретного способа зависит от актуальности репозитория, поэтому сверяйтесь с инструкцией проекта.

Второй вариант — Python-реализация, ставится командой pip install shadowsocks. Она предоставляет аналогичные утилиты sslocal и ssserver. Учтите: в новых версиях Ubuntu pip может блокировать установку в системный Python (ошибка externally-managed-environment) — в этом случае используйте виртуальное окружение или pipx.

КлиентИнтерфейсУстановкаКому подходит
shadowsocks-libevКонсольaptСерверы, автозапуск, минимум ресурсов
shadowsocks (Python)Консольpip / pipxТестирование, нестандартные методы
Shadowsocks-Qt5GUIPPA / пакет с GitHubДесктоп, несколько профилей
Electron-ssr и аналогиGUIПакет с GitHubПодписки, импорт ss://
Что такое ss

// ссылка и как её прочитать:Ссылка формата ss:// содержит закодированные в base64 параметры: метод шифрования, пароль, адрес и порт сервера. После декодирования строка имеет вид method:password@host:port. GUI-клиенты декодируют её автоматически при импорте.

Направление трафика через локальный прокси

Запущенный клиент сам по себе не перенаправляет трафик системы — вам нужно указать приложениям использовать SOCKS5-прокси. В браузере Firefox это делается в настройках сети: выберите ручную настройку прокси, укажите SOCKS-хост 127.0.0.1 и порт 1080, отметьте SOCKS v5 и при желании «Проксировать DNS при использовании SOCKS v5».

Для всей системы в Ubuntu можно задать прокси через Параметры → Сеть → Сетевой прокси, выбрав ручной режим и указав SOCKS-хост. Однако не все приложения подчиняются системным настройкам — консольные утилиты часто требуют отдельной настройки или обёрток вроде proxychains.

sudo apt install proxychains

в /etc/proxychains.conf укажите: socks5 127.0.0.1 1080

proxychains curl ifconfig.me

Если в ответ команда вернула IP вашего сервера, а не реальный адрес — цепочка работает. Это самая быстрая проверка всей связки «клиент + прокси».

Типичные ошибки и их диагностика

Разберём симптомы, с которыми чаще всего сталкиваются при настройке клиента на Ubuntu.

  • «command not found: ss-local» — пакет не установлен или установлена Python-версия, где утилита называется sslocal. Проверьте dpkg -l | grep shadowsocks.
  • 🔁 Клиент запущен, но сайты не открываются — приложение не настроено на прокси либо неверно указан локальный порт в настройках браузера.
  • Ошибка «address already in use» — локальный порт 1080 уже занят другим процессом. Найдите его через ss -tlnp | grep 1080 и завершите или смените local_port в конфиге.
  • 🔐 Таймауты при верном адресе сервера — возможная причина: несовпадение метода шифрования или пароля, либо порт сервера закрыт файрволом на стороне сервера.
  • 📄 Клиент падает сразу после запуска — проверьте синтаксис JSON: лишняя запятая после последнего параметра — частая ошибка ручного редактирования.
⚠️ Внимание: не публикуйте свой config.json на форумах при поиске помощи — пароль и адрес сервера в нём указаны в открытом виде. Перед публикацией заменяйте их на заглушки.

Для глубокой диагностики запустите ss-local в переднем плане с флагом подробного лога -v — в выводе будет видно, устанавливается ли соединение с сервером и на каком этапе происходит сбой.

FAQ: частые вопросы

Чем Shadowsocks отличается от обычного VPN?

Shadowsocks — это прокси-протокол с шифрованием, а не полноценный VPN. Он не создаёт виртуальный сетевой интерфейс и не маршрутизирует весь трафик системы по умолчанию: прокси используют только те приложения, где он явно настроен. Это даёт гибкость, но требует ручной настройки программ.

Какой метод шифрования выбрать?

Выбирайте тот, который настроен на вашем сервере — клиент и сервер должны совпадать. Из современных вариантов обычно используются chacha20-ietf-poly1305 и aes-256-gcm. Устаревшие методы вроде rc4-md5 считаются небезопасными, и многие клиенты их уже не поддерживают.

Можно ли направить через Shadowsocks весь трафик системы?

Да, но не штатными средствами клиента. Для этого применяют прозрачное проксирование через ss-redir (входит в shadowsocks-libev) в связке с правилами iptables. Это более сложная настройка, и ошибки в правилах могут нарушить сетевое соединение — делайте её только с пониманием принципов работы netfilter.

Почему pip не устанавливает shadowsocks на новой Ubuntu?

В свежих выпусках Ubuntu Python-окружение помечено как управляемое системой, и pip отказывается ставить пакеты глобально (ошибка externally-managed-environment). Решение — создать виртуальное окружение командой python3 -m venv или использовать pipx install shadowsocks.

Как проверить, что трафик действительно идёт через сервер?

Настройте прокси в браузере и откройте любой сервис определения IP-адреса. Если отображается адрес вашего Shadowsocks-сервера — подключение работает. Альтернатива без браузера: curl --socks5 127.0.0.1:1080 ifconfig.me в терминале.