分类 wifidog安装 下的文章

wlan网页登录认证原理

解答一:

它叫做 Captive portal,请自行wiki

算了,还是简单说一下吧
实现方法不止一种

方案一
DNS跳转,把客户端所有的dns请求都解析为认证服务器的ip,然后认证服务器上有404跳转
或者用dns url跳转,直接把dns解析为认证页面的地址

方案二
http跳转,对所有的http请求返回302或者301跳转,目标是认证页面。在网关上就可以实现

方案三
ip跳转,既把所有的ip包里的目标地址改为认证服务器,然后在认证服务器上做404跳转(因为用户有可能访问http://example.com/notexist这样在认证服务器上不存在的地址,所以需要404跳转),目标同样是认证页面,在网关上也可以实现。

解答二:

有个东西叫做bas(broadband access sever)做控制,ac一般透传vlan到bas,由bas控制用户。用户需要在bas通过aaa,否则是不能上网的,即使你有貌似合法的ip。

WLAN用户接入流程
流程描述:
1) 用户通过标准的DHCP协议,通过AC获取到规划的IP地址。
2) 用户打开IE,访问某个网站,发起HTTP请求。
3) AC截获用户的HTTP请求,由于用户没有认证过,就强制到Portal服务器。并在强制Portal URL中加入相关参数,具体请参见《中国移动WLAN业务PORTAL协议规范》。
4) Portal服务器向WLAN用户终端推送WEB认证页面。
5) 用户在认证页面上填入帐号、密码等信息,提交到Portal服务器。
6) Portal服务器接收到用户信息,向Radius发出用户信息查询请求。
7) Radius验证用户密码、查询用户信息,并向Portal返回查询结果及系统配置的单次连接最大时长(SessionTimeout)、手机用户及卡用户的套餐剩余时长信息(AvailableTime)。
8) 如查询成功,Portal服务器按照CHAP流程向AC请求Challenge。如果查询失败,Portal直接返回提示信息给用户,流程至此结束。
9) AC返回Challenge,包括Challenge ID和Challenge。
10) Portal将密码和Challenge ID及Challenge做MD5算法后的Challenge-Password,和帐号一起提交到AC,发起认证。
11) AC将Challenge ID、Challenge、Challenge-Password和帐号一起送到中央RADIUS用户认证服务器,由中央RADIUS用户认证服务器进行认证。
12) 中央RADIUS服务器根据用户信息判断用户是否合法(对于省内预付费卡用户,还需要判断用户接入地和归属地是否一致)。RADIUS对用户密码分别进行 静态密码和动态密码两次密码认证。如果其中一次成功,RADIUS向AC返回认证成功报文,并携带协议参数,以及用户的相关业务属性给用户授权。如果两次 都失败,RADIUS向AC返回认证失败报文。
13) AC返回认证结果给Portal服务器。(以及相关业务属性。)
14) Portal服务器根据认证结果,推送认证结果页面。如果成功,根据编码规则判断帐户的归属地,推送归属地定制的个性化页面,并将认证结果、系统配置的单 次连接最大时长、套餐剩余时长、自服务选项填入页面,和门户网站一起推送给客户,同时启动正计时提醒。如果失败,页面提示用户失败原因。
15) Portal服务器回应AC收到认证结果报文。如果认证失败,则流程到此结束。
16) 认证如果成功,AC发起计费开始请求给中央RADIUS用户认证服务器。
17) 中央RADIUS回应计费开始响应报文,并将响应信息返回给AC。用户上线完毕,开始上网。
18) 在用户上网过程中,为了保护用户计费信息,每隔一段时间AC就向中央RADIUS用户认证服务器报一个实时计费信息,包括当前用户上网总时长,以及用户总流量信息。
19) 中央RADIUS计费服务器回应实时计费确认报文给AC。
20) 当AC收到下线请求时,向RADIUS用户认证服务器发计费结束报文。
21) 中央RADIUS计费服务器回应AC的计费结束报文。

解答三:
wifidog
一. 用户上线

  1. 用户访问网络,通过iptables将未认证的用户dnat到wifidog进程,wifidog通过307报文将用户重定向到认证服务器

  2. 用户打开认证服务器登录页面,输入用户名密码,发送认证请求

  3. 认证成功的话服务器会发送302报文,携带token信息重定向到wifidog页面。认证失败的话会返回失败页面

  4. 用户携带token信息向wifidog发起认证请求,wifidog再向认证服务器发起请求,认证成功后授权,并将用户重定向到成功页面
    1.png

二. 保活和下线

  1. wifidog会定时向认证服务器发送保活消息

  2. 当用户主动请求下线后,wifidog此时并没有下线

  3. 当wifidog再次发起保活请求时,认证服务器会告诉它用户已下线,此时wifidog会将用户下线
    2.png

本文章由 http://www.wifidog.pro/2015/02/11/wifidog%E8%AE%A4%E8%AF%81-4.html 整理编辑,转载请注明出处

搭建自己的wifidog认证服务器

本人刚刚开始研究这个,看到有很多人在求自建认证服务器,心得如下,实现 wifidog 4 个接口: portal,login,auth,ping (还有一个get_gw_message.php 的接口,可不用实现)
简单来说,就是路由器会以GET方式请求 你的服务器(加入了白名单) 以下四个地址:
http://认证服务器/路径/login
http://认证服务器/路径/auth
http://认证服务器/路径/ping
http://认证服务器/路径/portal

以下以php为例子,实现
( 我是写了一个rewrite , 把所有请求转发到了 index.php?q=,当然,你也可以每个请求建立一个文件夹下一个 index.php)

具体代码如下:

$q = $_GET['q'] ;
$q = explode('/',$q) ;
$q = $q[0] ;
$a = '' ;
if(!empty($q[1])) $a = $q[1] ;


if($q == 'portal'){
        print 'portal' ;
}

if($q == 'login'){
        print 'login' ;
        $gw_port = $_GET['gw_port']  ;
        $gw_address = $_GET['gw_address']  ;
        //token 自己生成一个
        print '<br /><a href="http://'.$gw_address.':'.$gw_port.'/wifidog/auth?token=789">login</a>' ;
}

if($q == 'auth'){
        $token =  $_GET['token']  ;
        if($token == '789') print "Auth: 1"; 
        else print "Auth: 0"; 
}



if($q == 'ping') print 'Pong' ;

如果你想看一下,路由器到底请求了你些什么,可以看日志或者自己加个写入

$time = date('YmdHis') ;
file_put_contents(dirname(__FILE__) . '/get_'.$q.'_'.$time.'.txt',var_export($_GET,true)) ;

本文章由 http://www.wifidog.pro/2015/02/10/wifidog%E8%AE%A4%E8%AF%81%E6%9C%8D%E5%8A%A1%E5%99%A8-1.html 整理编辑,转载请注明出处

原版wifidog 防火墙放行 微信 规则

由于原版wifidog没有白名单设置,想要将微信放行的话,只能通过防火墙放行IP的方式。

wifidog防火墙规则:

FirewallRuleSet global {
FirewallRule allow tcp port 443
FirewallRule allow udp port 53
FirewallRule allow tcp port 80 to 101.227.131.0/24
FirewallRule allow tcp port 80 to 101.226.76.0/24

    FirewallRule allow tcp port 80 to xxx.xxx.xxx.xxx

}

由于微信在全国各地放置了许多加速服务器,每个地方ping到的ip可能不太一样,大家可以ping 下weixin.qq.com,把自己ping到的微信服务器ip添加到上面的xxx.xxx.xxx.xxx处即可。

缺点是,DNS对应的IP可能会有变化。

本文章由 http://www.wifidog.pro/2015/02/10/wifidog%E6%94%BE%E8%A1%8C%E5%BE%AE%E4%BF%A1.html整理编辑,转载请注明出处

如何刷OPENWRT系统以支持wifidog

一.下载固件:
在OpenWr官方网站(https://openwrt.org/) 页面,找到自己路由器对应型号的固件.
二.刷写固件:
用一根网线将路由器的Lan口和你电脑相连,电脑上设置为DHCP模式进入路由器管理界面,,然后进入固件更新,选择下载的文件,然后更新。等待一段时间,然后重启路由。
三. 安装管理界面和WIFIDOG功能.
刷好的openwrt标准版 没有web管理界面(LuCI),需要安装才可以管理
第1步、修改Root密码
telnet 192.168.1.1
输入passwd root 然后修改Root密码
出现Password for root changed by root提示,表示更改root用户密码成功,
OpenWRT会把路由器的Telnet服务关闭,以后只能通过ssh协议和root用户密码登录路由器的Linux终端。
第2步、修改network配置连上互联网
1.用WinSCP登陆路由器;
2.进入路由器的/etc/config目录,双击打开network文件;
3.修改“config interface ,wan,”项目为如下:

config interface "wan"
 option ifname "eth0.2"
 option _orig_ifname "eth0"
 option _orig_bridge "false"
 option proto "static"
 option ipaddr "192.168.100.86"
 option netmask "255.255.255.0"
 option gateway "192.168.100.1"
 option dns "202.102.224.68"

4.保存,再次打开network文件,确认修改成功;
5.ssh登录路由器的Linux终端;
6.输入

/etc/init.d/network restart

等待一会,提示几行“,radio0, is disabled”等状态信息就表示重启完毕;
7.输入“ping 8.8.8.8”,如果Ping通,表示已经成功接入互联网,按Ctrl+C可停止Ping操作;
第3步、安装Web管理界面LuCY;

opkg update
opkg install luci    //安装管理界面



opkg install luci-i18n-chinese  //安装中文语言包
/etc/init.d/uhttpd enable    //启用
/etc/init.d/uhttpd start        //启动

第4步、安装WIFDOG功能

opkg install wifidog //安装wifidog

通过以上步骤操作,您的路由器已经成功刷成OPENWRT系统,并且有WIFIDOG功能了.

本文章由 http://www.wifidog.pro/2015/02/10/openwrt%E5%AE%9E%E7%8E%B0wifidog.html 整理编辑,转载请注明出处