Команда 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
Запуск клиента и автозапуск через 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.
Графические клиенты и альтернативные варианты
Если консоль не подходит, существуют 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-Qt5 | GUI | PPA / пакет с 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 в терминале.