自动触发强制门户协议页面显示

自动触发强制门户协议页面显示

我使用 Hostapd 和 Dnsmasq 设置了一个 WiFi 热点。一切运行良好,但我试图触发您在连接到酒店或咖啡店的强制门户后可能会看到的那种条款和条件页面。大多数现代设备在连接到其中一个强制门户网络后都会立即自动调出此条款和条件页面,这正是我希望在连接到热点后发生的事情。

据我了解,设备通常会通过检查特定网站是否返回可预测的响应来检测这一点。例如,Google 似乎会测试连接,http://clients1.google.com如果它收到除“generate204”之外的任何响应,它就会触发强制门户协议页面。我找到了两种将所有流量(大概是这些特定域)重定向到设备上运行的 Web 服务器的方法……

将以下行添加到/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

当手动在浏览器中输入 URL 时,两者都成功将所有流量重定向到10.0.0.1(这是本地 Web 服务器的正确地址),但连接到接入点后页面不会自动打开。

我也尝试过手动添加特定 Google URL 的条目,例如:

address=/clients1.google.com/10.0.0.1

进入/etc/dnsmasq.conf却没有运气。我已经没有主意了,没有任何建议。

答案1

要使您的强制门户正常工作,iptables 将流量重定向到的强制门户 Web 服务器需要向客户端发送 302 重定向,以处理任何不针对您的强制门户主机名的请求。您可以将其放在默认虚拟主机中,并从第二个虚拟主机提供您的强制门户网页。

相关内容