采用 Radius+BRAS+Portal 组建WIFI认证系统

到了一个地方打开手机搜索Wifi信号,找到 CMCC然后连接,这个时候访问任何网站都会跳转到一个登录页面(上面写着免费WIFI几个小时体验),填写手机号,收到认证短息,设置完密码, 再次登录就可以正常上网了。

上面的流程应该是非常常见的一种WiFi认证上网方式,其中一大部分就是下面要讲的 BRAS+Radius+Portal实现Wifi认证系统。由于工作需要,所以还是梳理下,方面以后查询。

概念

  • BRAS 这是一种设备的名称,类似防火墙。只让通过认证的账户连接互联网,没有认证的账户会自动转义到Portal上,让用户注册或者登录。它是用户是否能上网的开关。这里是华为的设备。
  • Radius 广泛用于3A认证的一种协议,用来做认证,授权,和计费。例如你上了多久的网,用了多少流量等等都是通过这个协议存储到Radius服务器上,这里采用的是开源的FreeRadius。
  • Portal 说白了就是个网站,用来注册用户和输入密码的地方。
  • Portal协议 Portal和BRAS交互的协议,这里用的是华为portal协议2.0
  • DNS代理 由于没有认证的状态下,用户和互联网是隔离的,DNS请求也是无法正常返回的,没有了dns网页都没法打开,所以配置了一个DNS代理(这是容易忘记的地方)
  • MySQL 这里所有用户信息和计费信息都存储在Mysql中

流程

网络拓扑不是很清楚,主要从应用层来说明下。

未认证

没认证

当你手机连上的Wifi,还没有认证的时候,不管你再浏览器中访问什么网站都会通过 302状态码跳转到登录界面(Portal)。

Portal认证

认证的过程从用户的角度来看,就是个类似登录网站的过程,如果没有注册,就用手机验证码的方式注册个帐号,注册过的就登录输入用户名密码登录下。 如果信息都正确,就谈出来个界面,写着 “认证成功”类似的话。

注册

注册

注册是个用户信息写入的过程,通过Portal网站把用户信息写入到MySQL数据库中。

认证

这里涉及到的东西多一些
认证

  1. 用户提交认证信息到 Portal 服务端
  2. Portal服务端 通过 Portal协议 跟 BRAS交互,认证信息到了BRAS
  3. BRAS 在拿着认证信息 通过 Radius协议 跟 Radius服务器交互(最终的认证是在Radius服务器中)
  4. 如果 Radius 认证通过 BRAS 放行这个 设备(一般通过IP),通知 Portal服务端 认证通过, 用户就可以上网了。否则通知 Portal服务端 认证失败, 用户仍然无法上网。

正常上网

上网

认证成功就能正常上网了,BRAS会计时把计费信息传给 Radius服务器,存储到MySQL。 例如流量用完了,或者免费时间到了,会有下线的操作,下线信息BRAS会回传给Portal服务器,这里不说了。

后话

宏观的流程还是比较简单的,但是真正实施起来还是挺麻烦的,既有网络层的设备配置和调试,也有应用层的协议实现等。