Brook VPN на Ubuntu 24.04: установка
Если вы уже пытались поднять Shadowsocks или Xray и утонули в JSON-конфигах с десятком полей, где одна опечатка в method рвёт всё соединение — Brook сделан ровно для этой боли. Это прокси-протокол, который умещается в один бинарник и один параметр — пароль. Ниже — установка сервера на Ubuntu 24.04 и клиента, без лишних слов.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Brook и зачем он нужен
Brook — открытый (GPL-3.0) прокси-инструмент от разработчика txthinking, который существует с 2016 года и специально спроектирован как «максимально простая» альтернатива Shadowsocks. У него нет отдельного файла конфигурации в привычном смысле — весь сервер запускается одной командой с двумя-тремя флагами. Протокол шифрует трафик через TLS-подобный слой (у Brook есть режим wsserver/wssserver поверх WebSocket и TLS), что затрудняет DPI-детект по сравнению с голым Shadowsocks.
Ключевая идея Brook — «zero config feel»: не нужно подбирать метод шифрования, генерировать сертификаты вручную для базового режима, разбираться с плагинами obfs. Именно поэтому это неплохой вариант, когда:
- вы поднимаете прокси на слабом VPS и не хотите тратить время на тюнинг;
- нужно быстро дать доступ 2-3 своим устройствам без сложной инфраструктуры;
- Shadowsocks в вашей локации уже палится DPI, а разворачивать полноценный Xray с XTLS-Reality кажется избыточным для личных нужд.
Обратная сторона простоты — у Brook меньше гибкости: нет такой тонкой настройки маскировки под легитимный трафик, как в Reality, и сообщество/документация заметно меньше, чем у Shadowsocks или WireGuard. Для одного человека или небольшой команды это нормальный компромисс, для продакшн-инфраструктуры с высокими требованиями к антицензурности — не лучший выбор.
Когда Brook уместнее Shadowsocks
Сравнение не в пользу однозначного победителя — это разные акценты.
| Критерий | Brook | Shadowsocks |
|---|---|---|
| Установка | один бинарник, без конфиг-файла | нужен JSON-конфиг + выбор cipher |
| Порог входа | минимальный | средний (метод шифрования, plugin obfs) |
| Маскировка под HTTPS | есть штатный режим WebSocket+TLS | нужен отдельный плагин (v2ray-plugin) |
| Экосистема клиентов | Windows/macOS/Linux/Android/iOS, меньше форков | огромная — GUI на все платформы |
| Устойчивость к DPI | средняя, зависит от режима | средняя, зависит от версии/плагина |
| Активность разработки | стабильно, но нишево | широкая, много форков (shadowsocks-rust, sslocal) |
| Документация на русском | почти нет | много статей и гайдов |
Если вы уже читали про установку Shadowsocks на VPS и хотите чего-то с меньшим числом движущихся частей — Brook стоит попробовать. Если нужна максимальная совместимость с готовыми клиентами и обилие гайдов на случай проблем — Shadowsocks или VLESS остаются более отлаженным путём.
Арендуйте сервер под свои задачи!
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверПодготовка сервера
Понадобится чистый VPS на Ubuntu 24.04 с root-доступом (или sudo) и открытым портом наружу. Возьмём для примера порт 9999/tcp — вы можете выбрать любой свободный.
Обновите систему и поставьте базовые утилиты:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget unzip
Проверьте, что порт не занят и не заблокирован firewall'ом:
sudo ss -tulpn | grep 9999
sudo ufw status
Если используете UFW, откройте порт заранее:
sudo ufw allow 9999/tcp
sudo ufw allow 9999/udp
Установка Brook на сервер
Официальный способ — установочный скрипт, который сам определяет архитектуру и ставит актуальный релиз в /usr/bin/brook:
curl -L https://build.brook.icu/download/brook/linux/amd64 -o /usr/bin/brook
chmod +x /usr/bin/brook
brook -v
Для ARM-серверов (например, Oracle Ampere) замените amd64 на arm64 в пути. Если ссылка недоступна из вашей сети напрямую, скачайте бинарник через свой уже настроенный туннель или зеркало GitHub Releases проекта txthinking/brook.
Проверка, что бинарник рабочий, должна вывести номер версии — что-то вроде 20xxxx, релизы Brook датируются по дате сборки, а не по семантическому версионированию.
Запуск сервера: три режима
Простой режим (server/client, TCP+UDP)
Самый быстрый старт — команда server:
brook server -l :9999 -p ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ
Флаг -l — адрес и порт для прослушивания, -p — пароль. Это уже полноценный сервер: без сертификатов, без cipher suite. Из плюсов — предельная простота, из минусов — такой трафик проще детектировать DPI как «что-то нестандартное», потому что нет маскировки под HTTPS.
WebSocket + TLS (wsserver/wssserver) — рекомендуемый вариант
Для маскировки под обычный HTTPS-трафик используйте wssserver, который поднимает Brook поверх TLS. Понадобится домен, указывающий A-записью на IP сервера, и сертификат. Если у вас уже есть домен и Let's Encrypt через certbot:
sudo apt install -y certbot
sudo certbot certonly --standalone -d vpn.example.com
Запуск сервера с сертификатом:
brook wssserver -l :443 \
-p ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ \
-d vpn.example.com \
--cert /etc/letsencrypt/live/vpn.example.com/fullchain.pem \
--certkey /etc/letsencrypt/live/vpn.example.com/privkey.pem
Такой трафик на порту 443 внешне выглядит как обычный HTTPS-сайт, что усложняет блокировку по паттернам DPI — хотя стопроцентной гарантии не даёт ни один протокол, включая Reality.
systemd-сервис, чтобы Brook пережил перезагрузку
Создайте юнит:
sudo nano /etc/systemd/system/brook.service
Содержимое:
[Unit]
Description=Brook Proxy Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/brook wssserver -l :443 -p ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ -d vpn.example.com --cert /etc/letsencrypt/live/vpn.example.com/fullchain.pem --certkey /etc/letsencrypt/live/vpn.example.com/privkey.pem
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
Включите и запустите:
sudo systemctl daemon-reload
sudo systemctl enable --now brook
sudo systemctl status brook
Строка active (running) в статусе означает, что сервер поднят и будет автоматически стартовать при перезагрузке.
Настройка клиента
Linux/macOS через CLI
Скачайте бинарник для своей платформы тем же способом, что и на сервере (замените linux/amd64 на darwin/amd64 для Intel Mac или darwin/arm64 для Apple Silicon), затем поднимите локальный SOCKS5-прокси:
brook wssclient -s vpn.example.com:443 -p ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ --socks5 127.0.0.1:1080
Команда для простого режима (без TLS) выглядит так:
brook client -s IP_СЕРВЕРА:9999 -p ВАШ_НАДЁЖНЫЙ_ПАРОЛЬ --socks5 127.0.0.1:1080
После запуска настройте приложения (браузер, curl, системный прокси) на SOCKS5 127.0.0.1:1080. Проверить, что всё работает:
curl -x socks5h://127.0.0.1:1080 https://ifconfig.me
Команда должна вернуть внешний IP вашего сервера, а не локальный.
Windows и мобильные клиенты
Для Windows разработчики предлагают GUI-клиент Brook (доступен в релизах на GitHub) — он принимает те же три параметра: адрес сервера, пароль, режим. Для Android есть отдельное приложение в Google Play и на GitHub Releases (apk), для iOS — под тем же именем в App Store. Во всех клиентах логика одна: вписать сервер, порт, пароль, выбрать протокол (Brook Protocol / WS / WSS) — конфигурация занимает буквально минуту, в этом и весь смысл Brook.
Проверка и диагностика
Если клиент не подключается, пройдите по списку:
- Порт открыт снаружи. Проверьте с другой машины:
nc -zv IP_СЕРВЕРА 443. Если недоступен — смотрите firewall на сервере и в панели провайдера (некоторые хостинги ставят security group отдельно от ufw). - Пароль совпадает посимвольно. Brook не выдаёт внятной ошибки при несовпадении пароля — просто не будет валидного соединения. Скопируйте пароль, а не вводите вручную.
- Сертификат валиден. Для
wssserverпроверьте срок действия:sudo certbot certificates. Certbot по умолчанию настраивает автопродление, но стоит убедиться, что таймер активен:systemctl list-timers | grep certbot. - Логи сервиса. Смотрите живые логи:
sudo journalctl -u brook -f. Ошибки биндинга порта или чтения сертификата будут видны сразу. - DNS-резолвинг домена.
dig vpn.example.com +shortдолжен вернуть IP вашего сервера — если резолвится не туда, TLS-хендшейк не пройдёт.
Отдельно стоит проверить утечку DNS-запросов после подключения — Brook сам по себе не управляет системным DNS, это остаётся на совести настроек клиента.
Арендуйте сервер под свои задачи!
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Brook безопаснее Shadowsocks?
Оба протокола шифруют трафик, но у Brook меньше кода и меньше поверхность для атак за счёт минимализма реализации. Формальных независимых аудитов безопасности у Brook, в отличие от некоторых форков Shadowsocks, не проводилось — учитывайте это для критичных сценариев.
Можно ли использовать Brook вместо полноценного VPN с маршрутизацией всего трафика?
Из коробки Brook поднимает SOCKS5/HTTP-прокси, а не сетевой интерфейс. Для режима "весь трафик через туннель" нужен tun2socks поверх Brook-прокси, либо системная настройка прокси в ОС — это менее прозрачно, чем WireGuard или OpenVPN с полноценным интерфейсом.
Что выбрать — простой режим или wssserver?
Для личного использования на нейтральном порту простого режима достаточно. Если сеть провайдера активно блокирует нестандартный TCP-трафик по паттернам, wssserver на 443 порту с валидным сертификатом маскируется лучше.
Brook работает через Docker?
Да, официального образа нет, но бинарник легко заворачивается в минимальный контейнер — просто скопируйте /usr/bin/brook в образ и пропишите ENTRYPOINT. Для большинства задач systemd-юнит проще в обслуживании.
Чем Brook отличается от Outline?
Outline — это управляемая обёртка над Shadowsocks с готовым GUI-сервером (Docker) и Manager-приложением для раздачи ключей команде. Brook — более низкоуровневый инструмент без панели управления, зато без Docker-зависимости и с меньшим потреблением ресурсов на слабых VPS.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →