Arc*_*T3K 5 linux wifi authentication hostapd
基于hostapd,我正在构建一个强制门户。
通常,任何客户端操作系统都会检查 URL 是否可访问;如果不是:客户端操作系统声明它是俘虏,并显示一个弹出浏览器窗口。弹出窗口用于登录、演示或其他。
我想显示这样一个弹出窗口来展示我机器的服务,但我不明白。不过我已经避开了净前锋。所有连接都在机器 localhost 网站中重定向。
为什么我没有得到这样的弹出窗口?如何获得?我应该如何/在哪里在我的本地主机上实现它?
类似的想法:
当弹窗发生时,它的内容是如何定义的?例如,一家餐厅强制门户要求在您的笔记上提供您的秘密号码;这个页面存储在哪里?操作系统如何知道要在弹出窗口中显示的 URL?
要显示强制门户,您需要停止所有互联网流量并向302 redirect
客户端的浏览器提供。为此,您需要有一个防火墙(如iptables
)将所有流量重定向到网络服务器(如nginx
、apache
等),其中网络服务器以302 redirect
登录页面的 url 进行响应。
我在我的博客上写了一篇很长的文章,介绍如何使用 Raspberry Pi 执行此操作。它基本上可以归结为iptables 块/重定向到网络服务器:
iptables -t nat -A wlan0_Unknown -p tcp --dport 80 -j DNAT --to-destination 192.168.24.1
Run Code Online (Sandbox Code Playgroud)
然后网络服务器 ( nginx
) 重定向到登录页面:
# For iOS
if ($http_user_agent ~* (CaptiveNetworkSupport) ) {
return 302 http://hotspot.localnet/hotspot.html;
}
# For others
location / {
return 302 http://hotspot.localnet/;
}
Run Code Online (Sandbox Code Playgroud)
iOS 一定很困难,因为它需要 WISP 设置。hotspot.html
内容如下:
<!--
<?xml version="1.0" encoding="UTF-8"?>
<WISPAccessGatewayParam xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.wballiance.net/wispr_2_0.xsd">
<Redirect>
<MessageType>100</MessageType>
<ResponseCode>0</ResponseCode>
<VersionHigh>2.0</VersionHigh>
<VersionLow>1.0</VersionLow>
<AccessProcedure>1.0</AccessProcedure>
<AccessLocation>Andrew Wippler is awesome</AccessLocation>
<LocationName>MyOpenAP</LocationName>
<LoginURL>http://hotspot.localnet/</LoginURL>
</Redirect>
</WISPAccessGatewayParam>
-->
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9580 次 |
最近记录: |