MAATRIX / Блог / Psiphon: свой сервер вместо публичной сети

Psiphon: свой сервер вместо публичной сети

MAATRIX

Публичная сеть Psiphon удобна тем, что не требует вообще ничего настраивать — поставил приложение и подключился. Но у этого удобства есть цена: вы попадаете в общую ротацию из тысяч узлов, скорость непредсказуема, часть серверов уже занесена в списки блокировок именно потому, что она публичная и известная. Если вам нужен предсказуемый канал с гарантированной полосой и без чужих пользователей на том же узле, единственный выход — поднять собственный сервер Psiphon на своём VPS. Это не самый простой путь по сравнению с Shadowsocks или WireGuard, но у него своя ниша, и в статье разберём, как это сделать и на что реально можно рассчитывать.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что такое Psiphon и чем свой сервер отличается от публичной сети

Psiphon — open source проект обхода блокировок с открытым кодом сервера и клиента (репозиторий Psiphon-Labs/psiphon-tunnel-core на GitHub). В его основе — туннелирование трафика поверх обфусцированного SSH (протокол OSSH) с дополнительными слоями маскировки: meek (проксирование через CDN, имитирующее обычный HTTPS-трафик к известным доменам), QUIC-транспорт и ряд других техник.

Публичная сеть Psiphon Inc. — это не один сервер, а федерация из тысяч узлов по всему миру. Официальные приложения (Android, Windows, iOS) при старте скачивают актуальный список серверов, автоматически перебирают их и переключаются, если один заблокирован или перегружен. Это даёт устойчивость к блокировкам ценой непредсказуемости: вы не выбираете сервер, не знаете, кто ещё сидит на том же IP, и упираетесь в общие лимиты — бесплатная версия показывает рекламу и ограничивает скорость, а нагрузка на конкретный узел зависит от того, сколько пользователей на него сейчас направил алгоритм балансировки.

Собственный сервер — это противоположная модель. Вы поднимаете один конкретный узел (демон psiphond) на своём VPS, знаете его IP, контролируете, кто на нём находится, и получаете всю полосу сервера себе. Но при этом вы выходите из федеративной сети: официальный клиент Psiphon не умеет подключаться к произвольному стороннему серверу через интерфейс приложения — это осознанное ограничение авторов ради защиты от злоупотреблений. Чтобы использовать свой узел, нужен собственный клиент, собранный из того же открытого кода, с конфигом, который прямо указывает на ваш сервер. Ниже — как это работает по шагам.

Требования к серверу и подготовка VPS

Для сервера подходит обычный VPS с публичным IPv4, 1-2 vCPU и 1-2 ГБ RAM для небольшой нагрузки — сам демон компактен и не требователен к ресурсам, узкое место обычно в канале, а не в CPU. Понадобится:

  • Ubuntu 22.04/24.04 или Debian 12 — примеры ниже для них;
  • root-доступ или sudo;
  • открытый исходящий и входящий трафик на порт, который вы выберете под OSSH (произвольный, часто маскируют под 443 или 8080);
  • установленный git и компилятор Go (собирать демон будем из исходников — готовых пакетов в репозиториях дистрибутивов нет).

Если сервер будет обслуживать реальных пользователей, а не тестовый стенд, стоит сразу продумать файрвол и систему логирования — вернёмся к этому в разделе про безопасность.

apt update && apt install -y git curl ufw

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Установка и сборка psiphond

Готовых бинарников сервера проект не публикует — собирать нужно из исходников. Сначала ставим Go (актуальную версию 1.22+ смотрите на go.dev/dl — проект требует свежий тулчейн, старые версии Go могут не собрать код):

curl -LO https://go.dev/dl/go1.23.4.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile
source ~/.profile
go version

Клонируем репозиторий и собираем серверный демон:

git clone https://github.com/Psiphon-Labs/psiphon-tunnel-core.git
cd psiphon-tunnel-core/psiphon/server
go build -o psiphond

Если сборка падает на несовпадении версий модулей — сначала выполните go mod tidy в директории сервера и повторите go build. Проект активно развивается, поэтому точный набор зависимостей и структура каталогов могут немного отличаться от того, что описано здесь — ориентируйтесь на README.md в корне репозитория и в psiphon/server/, они обновляются вместе с кодом.

Конфигурация сервера: протоколы и обфускация

У psiphond есть режим генерации конфигурации, который создаёт файл настроек сервера и парный «server entry» — описание сервера, которое потом скармливается клиенту. Общая схема:

./psiphond generate --help

смотрите актуальный список флагов именно в вашей версии — обычно среди них есть указание внешнего IP сервера, каталога для конфигов и списка включаемых протоколов. После генерации в рабочей директории появляется примерно такой набор файлов:

server.config       # конфигурация демона в JSON
server_entry.dat     # данные для клиента (IP, порты, ключи)
psiphond.log          # лог работы

Сама server.config — JSON с параметрами вроде порта для OSSH, включённых обфусцированных транспортов, пути к GeoIP-базе (если хотите ограничивать доступ по странам) и правил трафика. Пример упрощённой структуры (ключи могут отличаться в зависимости от версии, сверяйтесь с тем, что реально сгенерировал ваш билд):

{
  "ServerIPAddress": "203.0.113.10",
  "SSHPrivateKey": "...",
  "OSSHListenPort": 8080,
  "WebServerPort": 0,
  "LogFilename": "/var/log/psiphond/psiphond.log"
}

Минимальная рабочая конфигурация — это OSSH (обфусцированный SSH-туннель): он не требует стороннего CDN и по сути близок к тому, что вы получаете от Shadowsocks или Xray — трафик маскируется под случайные байты, а не под конкретный протокол. Если хотите добавить meek (маскировку под HTTPS-запрос к известному домену через CDN), это отдельный уровень настройки с собственным фронтинг-доменом и TLS-сертификатом — на практике для одиночного сервера это усложнение, которое редко оправдано: meek в первую очередь нужен федеративной сети Psiphon Inc. для обхода блокировок по SNI на масштабе, а не одиночному узлу.

Генерация клиентского конфига и подключение

Здесь и есть главное практическое отличие от «просто установить приложение». Официальные Android/Windows/iOS-клиенты Psiphon рассчитаны на подключение к федеративной сети и не дают в интерфейсе поля «свой сервер». Чтобы подключиться именно к вашему узлу, нужно собрать клиент из того же открытого репозитория — например, консольный клиент (ConsoleClient в исходниках) — и передать ему конфиг с вашим server_entry.dat:

cd psiphon-tunnel-core/ConsoleClient
go build -o psiphon-client

Клиентский конфиг — JSON с полями вроде PropagationChannelId, SponsorId (для собственного развёртывания можно использовать тестовые/произвольные значения, это идентификаторы для статистики, а не ключи авторизации) и списком серверов (TargetServerEntry или подобное поле — снова смотрите актуальную схему конфига в README вашей версии, она периодически меняется). Запуск:

./psiphon-client -config client.config

После успешного подключения клиент поднимает локальный SOCKS5-прокси (обычно 127.0.0.1:1080), через который можно направить браузер или системный трафик. Если вам привычнее готовое приложение, а не консольный клиент — учитывайте, что для мобильных платформ пересборка потребует Android Studio/Xcode и подписи собственного пакета, это заметно больше работы, чем настройка Shadowsocks или Xray на том же VPS, где готовые клиенты для всех платформ уже есть.

Безопасность, файрвол и мониторинг

Голый VPS с открытым портом — цель для сканеров с первых минут. Базовый набор мер:

  • ограничьте файрволом доступ ко всему, кроме порта OSSH и SSH-порта управления сервером;
  • вынесите порт управления SSH на нестандартный номер и по возможности ограничьте его конкретными IP;
  • заведите отдельного непривилегированного пользователя для psiphond, не запускайте демон от root;
  • настройте systemd-юнит для автозапуска и перезапуска при падении;
  • добавьте ротацию логов (logrotate) — при активном трафике лог демона растёт быстро.

Пример unit-файла:

[Unit]
Description=Psiphon Server
After=network.target

[Service]
User=psiphon
WorkingDirectory=/opt/psiphon
ExecStart=/opt/psiphon/psiphond run
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
ufw allow 8080/tcp
ufw allow 22/tcp
ufw enable
systemctl daemon-reload
systemctl enable --now psiphond

Для защиты порта управления от перебора подойдёт fail2ban с правилом под ваш SSH-порт. Мониторить полосу и число активных соединений удобно через vnstat и ss -tn state established, а если хотите более наглядную картину — Uptime Kuma не заточен под Psiphon специально, но покажет, жив ли сервис и порт вообще.

Арендуйте сервер под свои задачи!

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли подключиться к своему серверу через обычное приложение Psiphon из Google Play?

Нет. Официальные клиенты жёстко привязаны к федеративной сети Psiphon Inc. и не принимают произвольный server entry через интерфейс. Для своего сервера нужен клиент, собранный из открытого кода, с конфигом, указывающим на ваш узел.

Сколько клиентов выдержит один сервер?

Зависит от канала VPS и профиля трафика (просмотр видео против браузинга — совсем разная нагрузка), точных цифр без тестов на конкретном железе называть не стоит. Начинайте с 1-2 vCPU, следите за загрузкой сети через vnstat и масштабируйте по факту.

Чем это лучше обычного Shadowsocks или Xray на том же VPS?

Транспортно OSSH решает похожую задачу — маскирует трафик под случайные байты. Основное преимущество Psiphon как проекта — экосистема meek/fronting для сценариев, где блокируют по SNI и нужен CDN-фронтинг, но на одиночном сервере это усложнение редко себя оправдывает. Если нужен именно простой обфусцированный туннель, Shadowsocks или Xray с VLESS+Reality настраиваются быстрее и имеют больше готовых клиентов.

Нужен ли отдельный домен?

Нет, для базового OSSH-режима достаточно IP-адреса сервера. Домен понадобится, только если вы настраиваете meek с TLS-фронтингом.

Легально ли поднимать такой сервер?

Технология сама по себе нейтральна — это открытый протокол туннелирования. Правовой статус обхода блокировок и использования VPN-подобных сервисов различается по юрисдикциям, и это вопрос местного законодательства, а не технической настройки — уточняйте его самостоятельно для своей ситуации.

Что делать, если провайдер сервера блокирует нестандартные порты?

Смените порт OSSH на 443 или 80 — обфусцированный трафик на этих портах не будет выглядеть как HTTP/HTTPS для DPI, но пройдёт через типовые правила файрвола хостера и провайдера клиента, которые часто разрешают только эти порты наружу.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →