# Смена сервера у клиента: что и как работает Клиент (учётка) в панели привязан к серверу. Если в панели открыть «Редактировать» и выбрать другой сервер, адрес меняется у клиента **автоматически только в наших приложениях**. Сторонние клиенты (PhobosWG и др.) ничего не знают о панели — им нужно заново импортировать ссылку `phobos://`. ## Кто подхватывает смену сервера | Клиент | Как узнаёт о смене | Задержка | |---|---|---| | Роутер (Keenetic/OpenWrt) | pull-агент `phobos-pull.sh` раз в минуту забирает `failover.conf`; `phobos-health.sh` видит рассинхрон (DESYNC) и переключает (SWITCH) | до ~1 мин | | iOS (build 7+), Android 1.4.5+ | подписка `# pca-sub` в ссылке: приложение читает `/api/phone-sub/<клиент>?token=…` | при запуске и по таймеру | | Windows 1.4.5+ | помощник `sub` читает `# pca-sub`, раз в минуту; при другом host/ключе переписывает `profile.conf` и переподключается | до ~1 мин | | Сторонние (PhobosWG и др.) | никак | переимпорт ссылки вручную | ## Как это устроено 1. Панель → Клиенты → «Редактировать» → «Сервер» (поле `client_assignments` в `settings.json`). 2. Панель добавляет WG-пир клиента на выбранный сервер и рассылает конфиг (`fanout_router_config`). 3. «Переход на другие серверы»: «Да, при блокировке» — выбранный сервер первый, остальные запасные; «Только этот сервер» (`client_pinned`) — в списке один выбранный сервер. 4. Список отдаётся роутеру (`failover.conf`) и телефонам/Windows (`/api/phone-sub`); первый в списке — назначенный. ## Что нужно, чтобы это работало - **Проверено 03.11.2026** (главная панель на ВМ + secondary на VPS): регистрация (`registered`), пир клиента появляется на secondary, «Сервер» меняет порядок в `/api/phone-sub` (назначенный первый), «Только этот сервер» оставляет один. Команда secondary в панели сама подставляет подсеть главной. - **Один сервер управления.** Остальные серверы ставятся как secondary командой из панели (раздел «Серверы»): общий список клиентов и адресов. Отдельная панель на втором VPS (полный `install.sh`) — это другая панель со своими клиентами, смена сервера между ними не работает. - Если всё же ставите независимые серверы — у каждого своя подсеть (`10.25.0.0/16`, `10.25.11.0/24`, …), иначе клиенты получат одинаковые IP и второй туннель на роутере не поднимется. Подсеть вида `10.25.11.0/16` установщик превращает в `10.25.11.0/24`. - В ссылке клиента должна быть строка `# pca-sub = …`. Старые ссылки без неё импортировать заново один раз. - Несколько учёток на одном роутере (по стране на учётку): у каждой «Только этот сервер», в beta/dev они ставятся в `/opt/etc/Phobos/acc/<учётка>/`. Не пробовать на канале stable (v1.4.7): там затрёт главную. ## Как проверить за минуту ```bash # что панель отдаёт клиенту (первый сервер = назначенный) curl -s "http://ПАНЕЛЬ:ПОРТ/api/phone-sub/КЛИЕНТ?token=ТОКЕН" # роутер: новый сервер и журнал переключения cat /opt/etc/Phobos/failover.conf | grep ^SERVER_1; tail /opt/etc/Phobos/health.log # Windows: журнал и профиль type C:\ProgramData\PCAPhobos\pcaphobos.log # «panel moved us to … -> reconnect» ``` ## Ограничения - Windows-помощник сравнивает host, ключ обфускатора и WG-ключ; смена только порта не вызывает переподключения. - Пока клиент оффлайн, он узнает о смене при следующем запуске/подключении.