2

Я ищу решение для запуска встроенного помощника портала на Android 4.0-7 и iOS 7-10 при подключении к локальной сети без подключения к Интернету.

Наше приложение запускается с веб-сервера в локальной сети. Мы хотели бы, чтобы наши пользователи (которые обычно будут новичками) имели возможность получить доступ к приложению в минимально возможном количестве шагов. В настоящее время система работает, подключившись к сети WiFi, открыв браузер и введя URL-адрес. Мы хотели бы сократить это до одного шага (подключение к сети WiFi) с помощью браузера, автоматически открываемого встроенным помощником портала, встроенным в Android и iOS.

Я не ищу стандартную настройку портала.

Эта система должна запускать помощников портала в Android и iOS без отправки запроса на подлинные серверы, управляемые Google или Apple. Нет подключения к интернету, ни сейчас, ни когда-либо.

Система основана на Debian, HOSTAPD и DNSMASQ работают с DHCP и разрешением DNS. Веб-сервер NGINX с PHP7.0.

Если решение может быть достигнуто с использованием других пакетов, доступных для Debian, например, BIND или чего-либо, что могло бы заменить то, что мы используем сейчас. У меня проблема с изменением конфига.

Я никогда раньше не регистрировался в суперпользователе, только скрывался в тени и спокойно учился у фантастических участников. Из-за этого у меня нет репутации предлагать в качестве награды. Если есть другой способ отплатить кому-то, кто нашел рабочее решение, пожалуйста, дайте мне знать.

2 ответа2

0

Обычно обнаружение портала не работает, пытаясь получить доступ к странице через HTTP и проверяя, что возвращаемая страница соответствует ожидаемой.

Например, Android подключится к http://clients1.google.com/generate_204 , который просто возвращает HTTP-статус 204 . Предположительно, iOS-клиенты работают аналогичным образом.

Чтобы открыть ваше приложение описанным вами способом, вам просто нужно перенаправить все HTTP-запросы, которые еще не направлены на ваш сервер приложений. Таким образом, клиенты никогда не получат ожидаемый результат.

Этого можно достичь, используя NAT с iptables если в качестве шлюза для клиентов установлена система Debian. Это можно сделать с помощью правила, аналогичного следующему, где APPSERVER - это IP-адрес вашего сервера приложений:

iptables -t nat -D PREROUTING ! -d APPSERVER -p tcp –-dport 80 -j DNAT –to-destination APPSERVER

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

0

Лучшее, что я смог найти, - это ответ о сбое сервера (в любом случае, какой сайт лучше подходит для этого вопроса): здесь

По сути, вы запускаете готовое приложение / контейнер, который делает всю работу за вас.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .