Решение проблем
Частые проблемы по симптомам, как каждая из них выглядит в панели и что с ней делать.
На этой странице
Найдите симптом, посмотрите, как он выглядит в панели, и выполните шаги. Большинство ответов начинается на странице ноды: её баннер, вкладки Профили, События, Логи и Доктор, а также страница «Здоровье».
Команды на ноде выполняются от root. Служба агента — mistgate-node, её лог в журнале:
journalctl -u mistgate-node -n 100 --no-pagerНода не выходит на связь#
Как это выглядит
- Ждём агента: ноду добавили, но агент ещё ни разу не подключился. Баннер пишет, до какого времени действует команда установки, или что она устарела.
- Хостер моргнул (серый): нет связи меньше 10 минут. Короткие провалы обычно на стороне хостера; алертов пока нет.
- Недоступна: нет связи 10 минут и дольше. Открывается алерт «Нода недоступна», пишется событие «перестала отвечать».
Что делать
-
Откройте панель хостера и проверьте, что сервер запущен.
-
Если запущен, зайдите по SSH и перезапустите агента (баннер даёт эту команду для копирования):
systemctl restart mistgate-node && journalctl -u mistgate-node -n 50 --no-pager -
Проверьте, что нода достаёт до панели: агент всегда подключается сам, по адресу из своей команды установки (
--panel host:port, по умолчанию порт 443). Его может не пускать исходящий файрвол на ноде или входящий на сервере панели. -
На стороне панели точке подключения агентов нужен TLS: публичный адрес должен работать с
--acme-domainили--tls-cert, либо у панели должен быть отдельный--agent-listen. См. «Конфигурацию». -
Если в логе написано, что для агента не выполнен
enrollили нода выведена из флота, агент завершается, и systemd его не перезапускает. Подключите его заново Новой командой установки со страницы ноды. -
Для далёкой или медленной ноды увеличьте Разрывать связь с агентом после и Таймаут подключения агента в Настройках ноды.
Ноде, у которой команда установки устарела, нужна Новая команда установки; старая больше не сработает.
Подключение ноды не проходит#
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 доктор тоже покажет. Диалог добавления профиля на ноду заранее проверяет порт и сертификат и предлагает свободный порт.
Клиенты подключаются, но трафик не идёт#
Как это выглядит
- Проверки проходят с ошибками (туннель поднимается, одна тестовая страница не открывается) или не проходят с «Туннель работает, а выход ноды в интернет нет» или «Тестовые сайты отвечают ошибкой».
- Алерт объясняет это в причине; люди говорят «подключено, но ничего не открывается».
Что проверить
- Собственный резолвер ноды — пункт доктора Резолвер сервера. Имена для проверки разрешает нода; если они не разрешаются, примените Исправить резолвер.
- DNS для трафика пользователей в Настройках ноды — резолверы для трафика ваших пользователей. Пусто — резолвер самого сервера.
- WARP: если не проходят только профили с выходом через WARP, см. «WARP не работает».
- AmneziaWG: пункт доктора Бэкенд AmneziaWG предупреждает, когда файрвол хоста отбрасывает пересылаемый трафик (часто из-за Docker на том же сервере).
- Пункты доктора Чужие правила файрвола и Следы других VPN: чужое правило nat или перенаправления может съедать трафик.
- Пункт доктора IPv6: адрес IPv6, который не соединяется наружу, заставляет подвисать сайты с IPv6-записями.
Если проверки зелёные, а не подключается один человек, посмотрите на него: статус (отключён, срок истёк, квота выбрана) и устройства на странице «Пользователи». См. «Пользователи и группы».
Хостер режет UDP#
Hysteria2 и AmneziaWG работают поверх UDP, а некоторые хостеры режут UDP на части портов или целиком.
Как это выглядит
- Проверка не проходит с «Нет рукопожатия: UDP-трафик, скорее всего, не доходит».
- «„<профиль>“ не отвечает на порту N, а другой профиль этой ноды отвечает: хостер режет UDP-порт N».
- «Жива, но трафик не идёт»: «похоже, хостер режет этот UDP-порт» или, на 443 или нескольких портах, «похоже, хостер режет входящий UDP целиком».
- Для AmneziaWG статус профиля на вкладке Профили ноды различает два случая: «До порта не дошёл ни один пакет: хостер или фаервол режет этот UDP-порт» и «Пакеты приходят, но рукопожатие не завершается: параметры обфускации на ноде и в конфиге различаются».
Что делать
- Проверьте файрвол или группу безопасности в панели хостера: UDP-порты профиля (и его диапазон прыжков) должны быть открыты для входящего трафика.
- Перенесите профиль на другой порт этой ноды: Сменить порт на вкладке Профили ноды.
- Если закрыты все порты, напишите в поддержку хостера или перенесите ноду.
Проверка использует основной порт профиля, а не диапазон прыжков по портам, поэтому закрытый диапазон прыжков здесь не виден.
Часы уходят#
Как это выглядит
- Пункт доктора Часы: «Внимание» при расхождении с часами панели больше 2 секунд или без синхронизации NTP, «Проблема» — больше 30 секунд.
- События ноды: «часы сервера расходятся с панелью на N с», когда расхождение больше 30 секунд.
На неверных часах ломаются сертификаты, коды из приложения-аутентификатора и рукопожатия WireGuard.
Что делать на ноде:
timedatectl set-ntp true
timedatectlЕсли коды для входа в админку не подходят, проверьте часы сервера панели и телефона: код принимается только в пределах одного 30-секундного шага в любую сторону.
Нет модуля ядра AmneziaWG#
Как это выглядит
- У профиля на ноде: «AmneziaWG не запустился на ноде: посмотри „Бэкенд AmneziaWG“ в настройках ноды».
- Пункт доктора Бэкенд AmneziaWG сообщает, что рабочего бэкенда нет; Заголовки ядра перечисляет, чего не хватает для модуля.
Что делать
-
Проще всего: переключите Бэкенд AmneziaWG ноды на Авто (модуль ядра, если он уже загружен, иначе userspace) или Userspace. Userspace модуль не нужен, нужен только
/dev/net/tun. -
Чтобы работать на модуле ядра, выберите Модуль ядра. Свежий агент соберёт модуль сам после вашего подтверждения; пока модуль не готов, AmneziaWG работает в userspace. Иначе выполните сборку на ноде сами; без
--yesкоманда только печатает план: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 при этом закрываются: напрямую в интернет они трафик не выпускают.
Что делать
- В карточке WARP: Перезапустить WARP и посмотреть рукопожатие, проверки и последнюю ошибку. Перечитать у Cloudflare обновляет данные аккаунта.
- На паузе: нажмите Возобновить.
- «WARP не может работать на этом хосте»: таблицу маршрутов, приоритет правила или имя интерфейса WARP занял другой инструмент (например, старая настройка
wg-quick). Уберите его конфигурацию. - Нет бэкенда: на ноде нет ни модуля ядра WireGuard, ни
/dev/net/tun; выполнитеmistgate-node install, чтобы получить актуальный служебный файл. - «Профили с выходом через 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 |
Укажите оба флага или ни одного. |