Частые причины
-
🌐
DNS-перехват не работает
Captive Portal полагается на перенаправление DNS для нераспознанных доменов. Если DNS-сервер не запущен или настроен неправильно, перенаправление не сработает.
-
📡
Устройство использует HTTPS или DNS over HTTPS
Современные устройства, использующие зашифрованный DNS или предзагрузку HTTPS-страниц, могут полностью обходить Captive Portal, предотвращая его автоматический запуск.
-
⚠️
Кэширование браузера или ОС
Страницы Captive Portal могут не появляться, если браузер закэшировал результаты DNS или пропустил перенаправление из-за настроек безопасности.
-
🔧
Сервер Captive Portal не инициализирован
Если веб-сервер или DNS-сервер на ESP32 не запускается корректно, портал не может перехватывать запросы или обслуживать страницу настройки.
Симптомы
Точка доступа ESP32 подключается, но нет перенаправления
Устройство подключается к точке доступа ESP32, но страница Captive Portal или перенаправление не появляется.
IP-адрес открывает страницу, но не автоматически
Ручной ввод 192.168.4.1 работает, но браузер или ОС не показывают уведомление о Captive Portal.
Captive Portal работает на одних устройствах, но не на других
Поведение различается на Android, iOS, Windows или macOS из-за разных методов обнаружения Captive Portal.
Портал перестаёт работать после глубокого сна или перезагрузки
Веб-сервер или DNS-службы не переинициализируются после пробуждения или сброса, что ломает функциональность портала.
Решения
Убедитесь, что DNS-сервер и веб-сервер запущены
Подтвердите, что оба вызова DNSServer.start() и server.begin() выполняются после включения режима точки доступа и до входа в основной цикл.
Используйте ручное перенаправление как запасной вариант
Проинструктируйте пользователей перейти по адресу http://192.168.4.1 вручную, если автоматическое перенаправление не сработает.
Не полагайтесь на HTTPS для перенаправления
Captive Portal не может перехватывать HTTPS-трафик из-за шифрования. Убедитесь, что начальные запросы идут к HTTP-ресурсам.
Переинициализируйте сервисы после пробуждения или сброса
Если используются режимы сна, перезапустите DNS и веб-сервер после пробуждения, чтобы портал снова стал доступен.
Подробнее
Captive Portal на ESP32 не перенаправляет или не работает
Если ваш ESP32 запускает Captive Portal (например, через WiFiManager или пользовательскую настройку AP+DNS), но устройства не перенаправляются или портал не появляется автоматически, вы, скорее всего, столкнулись с распространённой проблемой перехвата DNS или совместимости платформ.
Captive Portal полагается на несколько допущений о поведении браузера, сетевых запросах и клиентской ОС — и небольшие ошибки конфигурации могут помешать порталу появиться или работать как ожидалось.
Что такое Captive Portal?
Captive Portal — это временная точка доступа Wi-Fi, которая:
- Автоматически отображает веб-страницу настройки при подключении клиентов
- Использует перехват DNS для перенаправления всех доменных запросов на локальную веб-страницу
- Работает в режиме точки доступа (AP) ESP32, обычно по IP
192.168.4.1
Это полезно для настройки учётных данных или параметров устройства, когда нет известной Wi-Fi сети.
Типичные симптомы и что они означают
📶 Точка доступа ESP32 подключается, но портал не появляется
Ваш телефон или ноутбук подключается к точке доступа ESP32, но всплывающее окно или перенаправление не происходит. Ввод esp32.local не работает, и только 192.168.4.1 открывает страницу.
Это говорит о том, что DNS-перенаправление не функционирует или ОС обходит обнаружение Captive Portal.
📱 Работает на Android, не работает на macOS
Операционные системы используют разные эвристики для обнаружения Captive Portal. Например:
- Android отправляет запрос к
connectivitycheck.gstatic.com - iOS использует
captive.apple.com - Windows проверяет
www.msftconnecttest.com
Если эти запросы кэшированы или используют HTTPS (который нельзя перехватить), система не вызовет всплывающее окно портала.
🧯 Портал перестаёт работать после перезагрузки или сна
Если вы используете глубокий сон или перезагружаете плату без переинициализации DNS-сервера и веб-сервера, портал становится недоступным до ручного сброса.
Причины проблем с Captive Portal
🌐 DNS-сервер перехвата отсутствует или не запущен
Если DNS-сервер не запущен, поиск доменов не будет перенаправляться на 192.168.4.1. Это ломает автоматическое срабатывание портала.
Убедитесь, что:
dnsServer.start(53, "*", WiFi.softAPIP());
вызывается после WiFi.softAP().
Также убедитесь, что:
server.begin();
вызывается для веб-сервера.
⚙️ Браузер использует HTTPS или зашифрованный DNS
Captive Portal не может перехватывать зашифрованный трафик (HTTPS или DoH). Если браузер устройства переходит на https://example.com, ESP32 не может ответить — рукопожатие тихо завершается ошибкой.
Рекомендуйте пользователям перейти по адресу:
http://192.168.4.1
вручную, чтобы обойти проблемы с HTTPS.
🧱 ОС или файрвол блокирует DNS-перенаправление
Некоторые мобильные устройства или браузеры с пользовательскими настройками DNS (например, DNS over HTTPS) не будут подчиняться стандартным техникам Captive Portal на основе DNS.
Таким пользователям потребуется ручное перенаправление или QR-код.
Практические исправления
✅ Убедитесь, что веб-сервер и DNS-сервер инициализированы
Ваша функция setup() должна включать:
WiFi.softAP("ESP32_Setup");
dnsServer.start(53, "*", WiFi.softAPIP());
server.on("/", handleRoot);
server.begin();
Избегайте вызова server.begin() до включения режима AP.
✅ Добавьте инструкцию ручного подключения
Отобразите это в Serial Monitor или на внешнем экране:
Please connect to "ESP32_Setup" and go to http://192.168.4.1
Вы также можете отображать QR-код для http://192.168.4.1, чтобы упростить доступ.
✅ Правильно обрабатывайте сон/сброс
Если ESP32 переходит в глубокий сон или выполняет программный сброс, повторно вызовите WiFi.softAP(), dnsServer.start() и server.begin() после пробуждения.
Дополнительные советы
-
Избегайте использования
esp32.localвнутри Captive Portal —.localтребует mDNS и не будет надёжно работать без интернета. -
Отключите изоляцию точек доступа (AP isolation) или разделение клиентов в сетях с Captive Portal на роутере.
-
Рассмотрите использование WiFiManager, который реализует множество лучших практик для Captive Portal на ESP32.
Заключение
Captive Portal хрупки, потому что зависят от:
- Распознавания точки доступа операционной системой устройства
- Корректной работы DNS-перехвата
- Перехода пользователей на правильную страницу
Обеспечив работу обоих серверов (DNS и HTTP), избегая перенаправлений через HTTPS и направляя пользователей к IP точки доступа (192.168.4.1), вы сделаете Captive Portal на ESP32 значительно надёжнее на всех платформах.
Быстрая навигация
Дополнительные ресурсы
Всё ещё есть проблема с ESP32? Давайте решим её вместе.
Наш интерактивный мастер устранения неполадок проведёт вас через распространённые проблемы ESP32 и их решения шаг за шагом.
Регистрация не требуется. Начните решать проблемы прямо сейчас!