У меня есть точка доступа Wi-Fi с помощью 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
безуспешно. У меня закончились идеи, любые предложения.
Чтобы ваш скрытый портал работал, веб-сервер адаптивного портала должен который iptables перенаправляет трафик, необходимо отправить 302 редирект обратно клиенту для любого запроса, который не относится к имени хоста вашего адаптивного портала. Вы можете поместить его в виртуальный хост по умолчанию и обслуживать веб-страницу своего адаптивного портала со второго виртуального хоста.