简介
openwrt中实现portal的应用主要有wifidog和coovachilli等。下面就分别介绍两个应用程序的实现原理。
wifidog实现原理简介
通过iptables的nat表的重定向规则用以重定向http请求到wifidog的web服务器,
然后web服务发送http 302重定向到portal主页,从而实现portal弹出功能。当客户端认证
通过后,增加取消该客户端冲向的规则用以实现portal认证通过的正常上网功能。
优点:高效、便于扩展。
缺点:暂不支持https的重定向。
coovachilli的实现原理简介
coovachilli通过接管wifi接口的所有数据,当发现未认证通过的的客户端的http请求时返回portal主页,其他请求则丢弃。 当客户端认证通过后则转发请求。从而实现Portal功能。
优点:可实现精确的数据包的控制。
缺点:对性能影响较大、暂不支持https。
介绍以上两种portal的实现程序,其实也并没有什么卵用。今天我想给大家介绍一种新portal实现,该实现应该算是wifidog的升级扩展版,但比wifidog更简单。
实现功能说明
1、实现对http和https弹出portal的支持。(以来支持https的web服务器,可以基于uhttpd修改)。
2、支持免认证的IP地址集合。(也就是portal白名单)
3、支持对认证客户端基于时间和流量做控制。
整体架构说明
整体架构图 原图连接:https://www.processon.com/view/link/55e48812e4b02026c200e796
数据流向图 原图连接https://www.processon.com/view/link/55e48830e4b02026c200e804