FAQ и устранение неполадок

Ответы на частые вопросы и быстрые решения проблем, с которыми пользователи сталкиваются чаще всего.

На HTTPS-сайтах возникают ошибки сертификата

Устройство или инструмент не доверяет корневому сертификату (CA) BlankTrail Proxy. Установите его с помощью кнопки «Корневой сертификат (CA)» в дашборде, затем перезапустите браузер или инструмент. В Windows установщик обычно делает это за вас; на других устройствах сертификат нужно установить вручную.

«Порт уже занят» или ошибка 409

Отказ открыть порт (POST /api/v1/ports/open) приходит с кодом 409 — кроме отладочного порта захвата: его отвергает сам обработчик, ДО менеджера портов, и код там 403. Причин много — читайте текст ответа, он называет причину прямо. Ниже частые; сменой номера порта лечатся только первые две.

Текст ответаЧто делать
port N is already openЭтот номер уже открыт В САМОМ приложении. Возьмите другой — или тот, что предлагает дашборд (то же делает GET /api/v1/ports/suggest).
port N is busy: listen tcp …: bind: …Номер держит ПОСТОРОННЯЯ программа: слушатель не поднялся, а хвост после «bind:» — дословное сообщение операционной системы. Возьмите другой номер — или тот, что предлагает дашборд (GET /api/v1/ports/suggest).
serving suspended: license inactiveЛицензия неактивна: подписка кончилась либо сутки не было связи с сервером авторизации. Порт не откроется ни под каким номером — нужно восстановить связь или продлить подписку.
port limit reachedИсчерпан предел одновременно открытых портов на вашем тарифе. Закройте лишние порты или перейдите на старший тариф.
the debug fingerprint port requires a Pro license🔴 Единственная строка этой таблицы, которая приходит с кодом 403, а не 409: отказ выдаёт обработчик открытия порта, до менеджера портов. Отладочный порт захвата доступен с тарифа Pro. Обычный порт откроется, отладочный — нет.

Список не исчерпывающий: тем же кодом 409 и сырым текстом менеджера портов приходят и другие отказы — port N is already being opened (этот же номер открывают прямо сейчас), serving suspended during open: license inactive — port not started (лицензия отвалилась посреди открытия), а также отказы перехвата: системный перехват уже занят другим портом, приложение уже перехватывается другим портом.

Порт пропал сам, хотя я его открыл

Порт без трафика закрывается САМ через 30 минут — это общий тайм-аут простоя. Отсчёт начинается с момента открытия, а не с последнего запроса: открыть порт, уйти настраивать свой скрипт и вернуться через час — и порта уже нет, при этом с приложением всё в порядке.

  • Отдельному порту можно задать своё время: PUT /api/v1/port/{port}/idle с телом {"seconds": 0} — не закрывать никогда, {"seconds": null} — вернуться к общему тайм-ауту.
  • Общий тайм-аут меняется ручкой PUT /api/v1/idle_timeout и в config.yaml ключом portmanager.idle_timeout.
  • 🔴 Обращение к ЛЮБОЙ ручке этого порта считается активностью и сбрасывает отсчёт. Мониторинг, дергающий GET /status раз в минуту, не даст порту закрыться никогда — а сценарий, который открывает порт заранее, наоборот, его потеряет.
  • Для контейнеров и серверов есть штатное лекарство: список portmanager.startup_ports в config.yaml. Такие порты продукт открывает сам и держит открытыми, а после восстановления связи с сервером авторизации переоткрывает.

Моя лицензия не активируется

Сначала очевидное: email и пароль — от учётной записи blanktrail.com, у машины есть доступ в интернет, а при включённом двухфакторном подтверждении нужно завершить шаг с тикетом.

Внимание🔴 Если в сообщении сказано «auth server unavailable», а сеть заведомо в порядке — проверьте ЧАСЫ машины. Клиент сверяет время выданного токена со своими часами и терпит расхождение до ПЯТИ МИНУТ в любую сторону. Разошлись сильнее — токен отвергается: часы, отставшие больше чем на пять минут, видят его «выпущенным в будущем»; ушедшие вперёд больше чем на пять минут — уже просроченным, потому что токен живёт пять минут. В обоих случаях гейт докладывает недоступность сервера, то есть уводит чинить сеть при полностью исправном сервере. Лекарство — синхронизация времени (NTP). Расхождение меньше пяти минут клиент поглощает сам, и активацию оно не ломает.

Лицензия привязана к УСТРОЙСТВУ, и мест у неё ограниченное число. Отсюда несколько разных отказов, у каждого своё лекарство — текст приходит в дашборд, в подсказку трея и в ответ GET /api/v1/license/status.

Текст отказаЧто случилось и что делать
device limit reachedМест лицензии больше нет. Освободите устройство в личном кабинете — обычно это прежняя машина или переустановленная система, которая считается новым устройством.
another copy of this device is runningВторая копия того же устройства уже работает: например, клонированная виртуальная машина или запущенный дважды продукт.
device key mismatchУстановка была переопознана в другом месте. Обычно это перенос состояния между машинами без переноса ключей — активируйте заново.
device key required — reinstall the clientКлюч устройства потерян: файл состояния повреждён или удалён. Переустановите клиента.
device deactivated in your accountУстройство отключено в личном кабинете — включите его обратно или освободите место.
client build is below the minimum allowedСборка слишком старая. Обновите клиента — как это сделать, написано в ответе про обновление.
subscription expiredПодписка кончилась: продлите её в личном кабинете.
no active license for this accountУ учётной записи нет действующей лицензии — вы вошли не в тот аккаунт или лицензия ещё не куплена.

Проблема сохраняется? Обратитесь в поддержку из своей учётной записи и приложите отчёт: дашборд собирает его сам (кнопка отчёта об ошибке), и в нём уже есть журналы и состояние портов.

Прокси отдаёт 403 на часть сайтов

Если в шапке дашборда под названием тарифа стоит строка «Ограничено доменами: …», у вас сервисный тариф: порт пускает только на перечисленные домены, а на любой другой адрес отвечает 403 Forbidden с пустым телом (по SOCKS5 — «connection not allowed by ruleset», UDP ASSOCIATE не выдаётся вовсе). Это не поломка прокси и не вина вышестоящего выхода — менять апстрим бесполезно. Тот же список приходит полем allowed_domains в ответе GET /api/v1/license/status. Запись без префикса покрывает домен и все его поддомены, запись с «=» в начале — только точное имя, голый IP не совпадает никогда. Нужны другие домены — их меняют в личном кабинете вместе с тарифом.

Забыл пароль от дашборда

Пароль сбрасывается повторной активацией лицензии: откройте на САМОЙ МАШИНЕ адрес /recover, войдите учётной записью blanktrail.com — и там же задайте новый пароль дашборда. Переустанавливать продукт не нужно, состояние сохраняется.

ВниманиеВосстановление работает ТОЛЬКО с самой машины — с адреса 127.0.0.1. Управляющий сервер слушает все интерфейсы, и сосед по сети не должен уметь сбросить пароль чужой установки: успешный сброс заодно перепривязывает лицензию. Если машина удалённая, пробросьте порт к себе, например ssh -L 8891:127.0.0.1:8891 you@host, и откройте http://127.0.0.1:8891/recover уже у себя.

Ключ API паролем дашборда не управляется: он живёт отдельно, и если потерян именно он — его выдаёт GET /api/v1/auth/apikey, а перевыпускает POST /api/v1/auth/apikey/rotate.

Сайт требует пройти проверку — что делать?

Если обычного HTTP-запроса не хватает и сайт показывает заслон, за дело берётся Challenge Breaker: он проходит проверку сам, возвращает готовую сессию на тот же порт, и приложение продолжает работать обычными запросами. Включается для каждого порта в диалоге «Изменить» и требует MITM. Доступен с тарифа Pro; сколько процессов решателя занято, видно на вкладке «Обзор».

Как убедиться, что прокси не даёт утечек?

Перед открытием порта используйте предварительную проверку на утечки в диалоге «Открыть порт» или API /upstream/test с проверкой «leak». Она сравнивает DNS-резолвер с IP-адресом выхода и проверяет наличие обходного маршрута через IPv6, поэтому «протекающий» выход выявляется заранее.

Где найти мой API-ключ?

Откройте дашборд, нажмите на значок шестерёнки, чтобы открыть «Настройки», и скопируйте показанный там API-ключ. Там же его можно перевыпустить, если он мог быть раскрыт. Отправляйте его в заголовке X-API-Key при вызовах API.

Прокси-порт требует логин и пароль

Если в настройках включена авторизация на прокси-портах, адрес в вашем приложении обязан нести учётные данные — иначе соединение отвергается, и выглядит это как «прокси не работает».

Пример (curl)
# без авторизации
curl -x socks5://127.0.0.1:20134 https://example.com

# с авторизацией на прокси-порте
curl -x socks5://proxyuser:proxypass@127.0.0.1:20134 https://example.com
  • В рекомендованной команде запуска Docker пароль прокси ставится ПО УМОЛЧАНИЮ — контейнер отдаёт порты наружу, и открытый прокси без пароля был бы открытым прокси для всей сети.
  • Та же оговорка относится к настройке «принимать соединения из локальной сети»: включив её, вы отдаёте порт соседям по сети, и пароль перестаёт быть формальностью.
  • Логин и пароль задаются на странице настроек дашборда или ручкой PUT /api/v1/settings/network полями proxy_auth_enabled, proxy_auth_user и proxy_auth_pass. Включить проверку без пары логин-пароль нельзя.

Как обновиться?

Приложение само НАХОДИТ обновление, но не ставит его: когда выходит новая версия, в дашборде появляется полоса «Доступна новая версия» с кнопкой. Пока на неё не нажали, продолжает работать прежняя версия.

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

Два состояния, в которых кнопка не сработает и это не поломка. «Нужна ручная установка» — подмена файла на этой машине невозможна (например, приложение лежит там, куда нельзя писать); рядом появляется ссылка на скачивание, и установщик нужно запустить руками. «Обновление не удалось» — рядом стоит кнопка «Повторить». Обычно попытка срывается ДО подмены файла (скачивание, проверка подписи), и тогда прежняя версия на диске не тронута. Реже подмена уже прошла, а перезапуститься не вышло: приложение к этому моменту уже свернуло работу, а на диске лежит НОВАЯ версия — после ручного запуска поедет именно она. Поэтому, увидев это состояние, перезапустите приложение и сверьте версию: в дашборде или через GET /api/v1/update/status (поле current).

В Windows можно вместо этого повторно запустить установщик и выбрать «Обновить — сохранить лицензию, настройки и пароль». В Linux обновления приходят через службу пакетов. Проверить состояние из кода: GET /api/v1/update/status, запустить — POST /api/v1/update.

Как получить помощь?

Войдите в свою учётную запись на blanktrail.com и откройте поддержку (Telegram или веб-чат). Если вы столкнулись с ошибкой в приложении, в диалоге «Настройки» есть пункт «Сообщить об ошибке», который с вашего согласия отправляет нашей команде обезличенный диагностический пакет.