Автоматический запуск отображения страницы соглашения по порталу
У меня есть настройка точки доступа WiFi с помощью Hostapd и Dnsmasq. Все работает отлично, но я пытаюсь вызвать страницу с условиями и положениями, которую вы можете увидеть в отеле или кафе после подключения к их порталу. Большинство современных устройств автоматически открывают эту страницу "Условия и положения" сразу после подключения к одной из этих сетей портала, что я хотел бы получить после подключения к моей точке доступа.
Насколько я понимаю, это обычно обнаруживается устройством, проверяя, возвращает ли конкретный веб-сайт предсказуемый ответ. Например, Google, кажется, проверяет соединение с http://clients1.google.com
и если он получит какой-либо ответ, кроме "generate204", он должен вызвать страницу соглашения о портале. Я нашел два способа перенаправить весь трафик (и, вероятно, эти конкретные домены) на веб-сервер, работающий на моем устройстве...
Один, добавив следующую строку в /etc/dnsmasq.conf
:
address=/#/10.0.0.1
а другой с помощью iptables
, Это запускается из скрипта при загрузке:
iptables -t nat -A PREROUTING -d 0/0 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.1
Оба успешно перенаправляют весь трафик на 10.0.0.1
(это правильный адрес для локального веб-сервера) при ручном вводе URL-адреса в браузер, но страница не открывается автоматически при подключении к точке доступа.
Я также попытался вручную добавить записи для определенных URL-адресов Google, таких как:
address=/clients1.google.com/10.0.0.1
в /etc/dnsmasq.conf
без удачи У меня закончились идеи, любые предложения.
1 ответ
Чтобы ваш портал работал, ваш веб-сервер портала, на который iptables перенаправляет трафик, должен отправить клиенту перенаправление 302 для любого запроса, который не относится к имени хоста вашего портала. Вы можете поместить это в виртуальный хост по умолчанию и обслуживать веб-страницу своего портала со второго виртуального хоста.