Триггерный помощник портала без подключения к интернету

1891
LivePIX

Я ищу решение для запуска встроенного помощника портала на 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
Просто комментарий от года после вашего вопроса. Вы спросили: «Если есть другой способ отплатить кому-то, кто нашел рабочее решение, пожалуйста, дайте мне знать». На самом деле, голосование и принятие ответа дает некоторые ответы на вопросы респонденту, поэтому вам просто нужно принять ответ, который имеет решение. Это также полезно для таких людей, как я, которые ищут решение проблемы, подобной вашей, и, если есть принятый ответ, знают, что решение работает;) frarugi87 6 лет назад 0

2 ответа на вопрос

0
Dyusk

Обычно обнаружение портала не работает, пытаясь получить доступ к странице через 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
djsmiley2k

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

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