简介

    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

wKiom1Xkh3iAOJ0qAAFhLVvC6RA338.jpg    数据流向图 原图连接https://www.processon.com/view/link/55e48830e4b02026c200e804

wKioL1XkibDAHTCTAAFZKKqyyi8921.jpg