酒店、机场咖啡厅的互联网接入通常受强制门户控制,首次使用时会强制您进入特定网页,例如付款页面或接受服务条款或身份验证/授权页面。无论是无线连接还是有线连接,您都会看到这种情况。
这是如何运作的?
答案1
它当然因无线产品供应商而异,但根据我的经验,它通常是这样的:
- 您的笔记本电脑可以通过无线方式连接到智能接入点,该接入点可能连接到集中管理站。
- 您的第一个 Web 请求被拦截,并使用标头回复,
Location:
该标头会将您重定向到登录/策略页面(例如http://hotelwireless.net/login)。这可能直接存在于智能接入点上,也可能存在于中央管理站上。 - 完成身份验证后,您的 MAC 地址将被添加到允许的客户端列表中,以便将来的请求能够正确路由到 Internet 或可访问的 Intranet 资源。
至于如何称呼它,我听到最多的是将其称为“强制门户”或“无线接入门户”。
答案2
首先,为了实现重定向,您需要一个内联身份验证器(访问控制器)。就您的主题而言,如果您选择 AP 的中央管理,您将需要一个无线局域网控制器。或者,您也可以放置一个具有 Wall garden 功能的强制门户类型的网络访问控制器。
NAS 通过混杂模式原始套接字监控进入下行链路(客户端)的流量,当检测到浏览器发起的未经身份验证的客户端流量时,会向其提供 HTTP 重定向作为响应。因此,浏览器在接收时会重定向到我们的 CAPTIVE 门户主页,该主页可以内联托管在身份验证器上,也可以开箱即用地托管在某些外部 Web 服务器上。
此页面的唯一作用是向用户提供输入凭据的 UI。输入的凭据将转发回身份验证器守护程序(如 coova chilli 中的 chilli),然后这些凭据将作为 radius 请求传递到 RADIUS 服务器或可以在本地检查。身份验证成功后,身份验证器上的客户端状态将被标记为授权,并授予客户端访问权限。
如何实现重定向
最广泛使用的方法是拦截用户发起的 HTTP 请求,并将 302 代码作为对客户端的响应。在 chilli 中,它通过以下函数完成
http_redirect2() {
cat < < EOF
HTTP/1.1 302 Redirect
Location: $1
Set-Cookie: PORTAL_SESSIONID=$PORTAL_SESSIONID
Set-Cookie: COOVA_USERURL=$COOVA_USERURL
Connection: close
EOF
exit
}
这种重定向可以通过实用控制的 tun tap 接口轻松实现,客户端接口会拦截客户端流量。进一步的重定向也可以通过 DNS 投毒实现,但如果响应缓存在客户端浏览器中,有时可能会导致问题。可以根据问题域更具体地完成进一步的操作。如果您愿意,我可以为您提供帮助。
答案3
对此有很好的描述https://www.arubanetworks.com/vrd/GuestAccessAppNote/wwhelp/wwhimpl/js/html/wwhelp.htm。
以下是其中的一部分:
强制门户身份验证流程
强制门户是第 3 层身份验证,要求设备连接到网络并获取 IP 地址和相关 DNS 信息,然后才能通过强制门户进行身份验证。以下步骤说明了使用原生 ArubaOS 进行强制门户身份验证时的整个强制门户流程:
1. 与访客 SSID 关联的设备被分配一个初始角色(示例配置中的访客登录角色)。此初始角色允许 DHCP,因此用户将获得一个 IP 地址。
2. 用户打开浏览器并向某个目的地(例如 www.bbc.com)发出 HTTP(或 HTTPS)请求。
3. 设备中的解析器发送 DNS 请求以解析 www.bbc.com。初始角色(来宾登录角色)允许 DNS 服务,因此解析器可以与 DNS 服务器通信。
4. DNS 服务器向 www.bbc.com 回复正确的地址。
5. 解析器根据 DNS 回复告诉浏览器使用哪个 IP 地址。
6、浏览器向www.bbc.com地址的80端口发起TCP连接。
7. 控制器拦截连接,并伪造 HTTP 进程的初始 TCP 握手。此时,客户端浏览器认为它正在与 bbc.com 服务器通信。
8. 当浏览器发送该网页的 HTTP GET 请求时,控制器回复说 bbc.com 已“暂时移动”至 。
9.浏览器关闭连接。
10. 浏览器尝试连接,但它首先需要发送该地址的 DNS 请求。
11. 实际 DNS 服务器响应无法解析 https://securelogin.arubanetworks.com,但控制器会拦截该回复并更改数据包,称 securelogin.arubanetworks.com 位于控制器本身的 IP 地址。请记住,DNS 服务器必须回复查询。只有这样,控制器才能伪造 DNS 服务器的回复。发送 DNS 请求而未收到回复是不够的,因为没有回复,控制器永远不会帮助客户端解析 securelogin.arubanetworks.com。
12. 浏览器启动与控制器地址的 HTTPS 连接,控制器以强制门户登录页面做出响应,访客可在该页面进行身份验证。
13. 身份验证成功后,将为用户分配后身份验证角色(示例配置中的 auth-guest 角色)。这是强制门户配置文件中的默认角色。
14. 认证成功后,浏览器会重定向到 DNS 最初解析的地址 bbc.com。或者,如果配置了欢迎页面,浏览器会重定向到欢迎页面。
15. 为了成功重定向到原始网页,控制器会伪造来自 bbc.com 的回复,告知客户端 bbc.com 已“永久移动”至 bbc.com。此步骤可纠正强制门户登录过程中发生的“临时重新定位”。
16. 这会导致客户端重新查询 DNS 以获取 www.bbc.com 的地址。
17.浏览器开始与实际的bbc.com服务器通信。