mistgate Документация

Решение проблем

Частые проблемы по симптомам, как каждая из них выглядит в панели и что с ней делать.

На этой странице

Найдите симптом, посмотрите, как он выглядит в панели, и выполните шаги. Большинство ответов начинается на странице ноды: её баннер, вкладки Профили, События, Логи и Доктор, а также страница «Здоровье».

Команды на ноде выполняются от root. Служба агента — mistgate-node, её лог в журнале:

sh
journalctl -u mistgate-node -n 100 --no-pager

Нода не выходит на связь#

Как это выглядит

  • Ждём агента: ноду добавили, но агент ещё ни разу не подключился. Баннер пишет, до какого времени действует команда установки, или что она устарела.
  • Хостер моргнул (серый): нет связи меньше 10 минут. Короткие провалы обычно на стороне хостера; алертов пока нет.
  • Недоступна: нет связи 10 минут и дольше. Открывается алерт «Нода недоступна», пишется событие «перестала отвечать».

Что делать

  1. Откройте панель хостера и проверьте, что сервер запущен.

  2. Если запущен, зайдите по SSH и перезапустите агента (баннер даёт эту команду для копирования):

    sh
    systemctl restart mistgate-node && journalctl -u mistgate-node -n 50 --no-pager
  3. Проверьте, что нода достаёт до панели: агент всегда подключается сам, по адресу из своей команды установки (--panel host:port, по умолчанию порт 443). Его может не пускать исходящий файрвол на ноде или входящий на сервере панели.

  4. На стороне панели точке подключения агентов нужен TLS: публичный адрес должен работать с --acme-domain или --tls-cert, либо у панели должен быть отдельный --agent-listen. См. «Конфигурацию».

  5. Если в логе написано, что для агента не выполнен enroll или нода выведена из флота, агент завершается, и systemd его не перезапускает. Подключите его заново Новой командой установки со страницы ноды.

  6. Для далёкой или медленной ноды увеличьте Разрывать связь с агентом после и Таймаут подключения агента в Настройках ноды.

Ноде, у которой команда установки устарела, нужна Новая команда установки; старая больше не сработает.

Подключение ноды не проходит#

mistgate-node enroll печатает enroll: и причину.

Сообщение Причина Что делать
--panel, --sni, --ca-sha256 and --token are required Команда обрезалась при копировании. Скопируйте команду целиком ещё раз.
enrollment token unknown, expired or used Команда установки срабатывает один раз и действует час. Сделайте Новую команду установки на странице ноды.
the CA returned by the panel does not match --ca-sha256 или no certificate in the chain matches the pinned CA fingerprint Агент попал не на эту панель: неверный адрес или прокси, который сам завершает TLS. Проверьте --panel. Агенту нужен прямой TLS-путь до панели.
already enrolled; use --force to replace the identity В каталоге состояния уже есть удостоверение ноды. Добавьте --force к свежей команде или сначала уберите старую ноду.
too many failed attempts, try later Слишком много неудачных попыток с этого адреса за последнюю минуту. Подождите минуту.
node retired Ноду вывели из флота в панели. Добавьте сервер как новую ноду.
Ошибка соединения или таймаут Панель недоступна по этому адресу и порту. Проверьте DNS, файрволы и что панель говорит там по TLS (см. выше).

install нужен root и каталог состояния после enroll: сначала выполните enroll, с тем же --state-dir, если вы его меняли.

Если Получить команду установки в админке отвечает «panel address is not configured», панель не знает адреса, по которому агентам подключаться: выполните setup с --public-url или запустите serve с --agent-addr (см. CLI).

Профиль не запускается#

Как это выглядит

  • На вкладке Профили ноды у профиля написано Не запустился с причиной, а баннер ноды пишет «„<профиль>“ не запустился».
  • Проверка глазами клиента показывает «✕ не запущен»; пишется событие «„<профиль>“ не запустился».
Причина в админке Что делать
Порт N занят другой программой (…) Пункт доктора Занятые порты называет процесс. Остановите эту программу или перенесите профиль на свободный порт этой ноды: Сменить порт на вкладке «Профили». Посмотреть самому: ss -lupn 'sport = :443' (UDP) или ss -ltpn 'sport = :443' (TCP).
Не удалось получить сертификат: нужен домен с A-записью на IP ноды и открытые порты 80 и 443 Укажите Домен (SNI), A-запись которого смотрит на ноду, откройте TCP 80 и 443 на ноде или переключите профиль на самоподписанный сертификат. На IP-адрес Let's Encrypt сертификат не выдаёт.
Нет рабочего WARP на ноде См. «WARP не работает» ниже.
AmneziaWG не запустился на ноде См. «Нет модуля ядра AmneziaWG» ниже.
Агенту не хватает прав на сервере Прочитайте исходный текст ошибки под этой строкой и лог ноды. Агент работает в защищённой службе с небольшим набором прав; если нода установлена давно, mistgate-node install запишет актуальный служебный файл.

Когда порт освободился, Перезапустите профиль (или примените исправление доктора Перезапустить профиль).

Порт внутри диапазона прыжков другого профиля или занятый Caddy и другим веб-сервером на TCP 443 доктор тоже покажет. Диалог добавления профиля на ноду заранее проверяет порт и сертификат и предлагает свободный порт.

Клиенты подключаются, но трафик не идёт#

Как это выглядит

  • Проверки проходят с ошибками (туннель поднимается, одна тестовая страница не открывается) или не проходят с «Туннель работает, а выход ноды в интернет нет» или «Тестовые сайты отвечают ошибкой».
  • Алерт объясняет это в причине; люди говорят «подключено, но ничего не открывается».

Что проверить

  1. Собственный резолвер ноды — пункт доктора Резолвер сервера. Имена для проверки разрешает нода; если они не разрешаются, примените Исправить резолвер.
  2. DNS для трафика пользователей в Настройках ноды — резолверы для трафика ваших пользователей. Пусто — резолвер самого сервера.
  3. WARP: если не проходят только профили с выходом через WARP, см. «WARP не работает».
  4. AmneziaWG: пункт доктора Бэкенд AmneziaWG предупреждает, когда файрвол хоста отбрасывает пересылаемый трафик (часто из-за Docker на том же сервере).
  5. Пункты доктора Чужие правила файрвола и Следы других VPN: чужое правило nat или перенаправления может съедать трафик.
  6. Пункт доктора IPv6: адрес IPv6, который не соединяется наружу, заставляет подвисать сайты с IPv6-записями.

Если проверки зелёные, а не подключается один человек, посмотрите на него: статус (отключён, срок истёк, квота выбрана) и устройства на странице «Пользователи». См. «Пользователи и группы».

Хостер режет UDP#

Hysteria2 и AmneziaWG работают поверх UDP, а некоторые хостеры режут UDP на части портов или целиком.

Как это выглядит

  • Проверка не проходит с «Нет рукопожатия: UDP-трафик, скорее всего, не доходит».
  • «„<профиль>“ не отвечает на порту N, а другой профиль этой ноды отвечает: хостер режет UDP-порт N».
  • «Жива, но трафик не идёт»: «похоже, хостер режет этот UDP-порт» или, на 443 или нескольких портах, «похоже, хостер режет входящий UDP целиком».
  • Для AmneziaWG статус профиля на вкладке Профили ноды различает два случая: «До порта не дошёл ни один пакет: хостер или фаервол режет этот UDP-порт» и «Пакеты приходят, но рукопожатие не завершается: параметры обфускации на ноде и в конфиге различаются».

Что делать

  1. Проверьте файрвол или группу безопасности в панели хостера: UDP-порты профиля (и его диапазон прыжков) должны быть открыты для входящего трафика.
  2. Перенесите профиль на другой порт этой ноды: Сменить порт на вкладке Профили ноды.
  3. Если закрыты все порты, напишите в поддержку хостера или перенесите ноду.

Проверка использует основной порт профиля, а не диапазон прыжков по портам, поэтому закрытый диапазон прыжков здесь не виден.

Часы уходят#

Как это выглядит

  • Пункт доктора Часы: «Внимание» при расхождении с часами панели больше 2 секунд или без синхронизации NTP, «Проблема» — больше 30 секунд.
  • События ноды: «часы сервера расходятся с панелью на N с», когда расхождение больше 30 секунд.

На неверных часах ломаются сертификаты, коды из приложения-аутентификатора и рукопожатия WireGuard.

Что делать на ноде:

sh
timedatectl set-ntp true
timedatectl

Если коды для входа в админку не подходят, проверьте часы сервера панели и телефона: код принимается только в пределах одного 30-секундного шага в любую сторону.

Нет модуля ядра AmneziaWG#

Как это выглядит

  • У профиля на ноде: «AmneziaWG не запустился на ноде: посмотри „Бэкенд AmneziaWG“ в настройках ноды».
  • Пункт доктора Бэкенд AmneziaWG сообщает, что рабочего бэкенда нет; Заголовки ядра перечисляет, чего не хватает для модуля.

Что делать

  • Проще всего: переключите Бэкенд AmneziaWG ноды на Авто (модуль ядра, если он уже загружен, иначе userspace) или Userspace. Userspace модуль не нужен, нужен только /dev/net/tun.

  • Чтобы работать на модуле ядра, выберите Модуль ядра. Свежий агент соберёт модуль сам после вашего подтверждения; пока модуль не готов, AmneziaWG работает в userspace. Иначе выполните сборку на ноде сами; без --yes команда только печатает план:

    sh
    mistgate-node awg prepare-kernel
    mistgate-node awg prepare-kernel --yes

    Поддерживаются Debian и Ubuntu (apt), не в контейнере, без Secure Boot, с systemd. Сборка, запущенная панелью, пишет лог в журнал unit mistgate-awg-prepare.

  • Если доктор пишет, что служебный файл скрывает /dev/net/tun (устаревший unit), один раз выполните mistgate-node install.

См. AmneziaWG.

WARP не работает#

Как это выглядит

  • Карточка WARP ноды: Не работает, Нет бэкенда или На паузе.
  • Пункт доктора Выход через WARP сообщает о проблеме; у профиля написано «Нет рабочего WARP на ноде».
  • «Прямой профиль этой ноды работает, а „<профиль>“ нет: мёртв его выход через WARP».

Профили с выходом через WARP при этом закрываются: напрямую в интернет они трафик не выпускают.

Что делать

  1. В карточке WARP: Перезапустить WARP и посмотреть рукопожатие, проверки и последнюю ошибку. Перечитать у Cloudflare обновляет данные аккаунта.
  2. На паузе: нажмите Возобновить.
  3. «WARP не может работать на этом хосте»: таблицу маршрутов, приоритет правила или имя интерфейса WARP занял другой инструмент (например, старая настройка wg-quick). Уберите его конфигурацию.
  4. Нет бэкенда: на ноде нет ни модуля ядра WireGuard, ни /dev/net/tun; выполните mistgate-node install, чтобы получить актуальный служебный файл.
  5. «Профили с выходом через WARP не стартуют: у ноды нет аккаунта WARP»: зарегистрируйте или импортируйте аккаунт на ноде либо переключите эти профили на прямой выход.

Нода без IPv6 для WARP подходит. См. WARP.

Обновление откатилось#

Как это выглядит

  • На странице «Обновления» нода в состоянии Откатилась; Последнее обновление объясняет почему.
  • Раскатка на паузе, открыт алерт «Обновление ноды остановилось».
  • События ноды: «обновление откатилось».
Причина Что делать
Новая версия не подключилась и не применила настройки за 5 минут Прочитайте лог ноды за это время; исправьте связь или конфигурацию.
Программа — не тот релиз, который описан в манифесте Подписывайте с --built из того же коммита, из которого собраны бинарники.
Новая версия трижды подряд упала Прочитайте лог ноды.
Новая программа не запустилась (она собрана под эту машину?) Проверьте архитектуру бинарника для этой ноды.
Панель вернула прошлую версию: проверка глазами клиента после обновления не прошла См. «Здоровье» для профиля, который не проходит.
Панель вернула прошлую версию: профиль, который работал раньше, после обновления сломался Прочитайте ошибку профиля на ноде.

Устранив причину, продолжите или отмените раскатку и обновите ноду новой раскаткой. См. «Обновления».

Админка недоступна#

Симптом Что делать
По адресу открывается «Coming soon» или 404 Вы попали на ширму: в адресе админки есть секретная часть. Выполните mistgate setup на сервере панели: команда сохранит настройки и напечатает адрес админки.
Админка на отдельном адресе Она работает по обычному HTTP на адресе, заданном при настройке, обычно на loopback. Откройте SSH-туннель, например ssh -L 8081:127.0.0.1:8081 root@panel.example.com, затем http://localhost:8081/.
«Браузер отклонил passkey для этого адреса» Открывайте админку ровно по тому адресу, который напечатал setup: passkey привязаны к нему.
«Слишком много попыток» Вход по паролю закрыт на 15 минут. Подождите или выполните mistgate auth reset-login <логин> на сервере панели.
Потерян телефон или не осталось passkey mistgate auth reset-login, см. «Безопасность».
Проверка Cloudflare не проходит mistgate auth turnstile off на сервере панели.
Страница «Too Many Requests» Слишком много запросов из вашей сети; подождите время из Retry-After.
Ошибка сертификата в браузере С --acme-domain публичный адрес должен быть доступен на порту 443, а --acme-http (порт 80) отвечает на проверку HTTP-01 и перенаправляет на HTTPS. С --tls-cert панель перечитывает файл, когда он меняется.
Ничего не отвечает Проверьте службу и её лог на сервере панели (systemctl status, journalctl -u <ваш unit>).

Ошибки запуска mistgate serve и что они значат:

Сообщение Что делать
data dir: … (run `mistgate setup`) Каталога данных нет: на новом сервере выполните mistgate setup, иначе укажите существующий каталог в --data-dir.
master key: … (run `mistgate setup`) В каталоге данных нет master.key. На существующей установке восстановите его из копии и не запускайте setup: он создаст новый ключ, который не прочтёт хранимые секреты.
vault: … is accessible to group or others …; run chmod 600 on it Выполните chmod 600 для файла ключа.
--admin-listen conflicts with the stored admin address … Установка настроена на секретный хост или префикс; уберите --admin-listen.
--tls-cert and --tls-key go together Укажите оба флага или ни одного.

Править страницу на GitHub